@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
@@ -0,0 +1,233 @@
1
+ import { ConstructorType } from '@dooboostore/core/types';
2
+ import { ReflectMethod } from '@dooboostore/simple-boot/types/Types';
3
+ import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';
4
+ import { Resolver } from '../resolvers/Resolver';
5
+ import { Mimes } from '../codes/Mimes';
6
+ import { HttpMethod } from '../codes/HttpMethod';
7
+
8
+ export enum UrlMappingSituationType {
9
+ REQ_JSON_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_JSON_BODY',
10
+ REQ_FORM_URL_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_FORM_URL_BODY'
11
+ }
12
+ export type MappingConfig = {
13
+ method: HttpMethod | string,
14
+ description?: {
15
+ name?: string;
16
+ detail?: string;
17
+ };
18
+
19
+ req?: {
20
+ contentType?: (Mimes|string)[];
21
+ accept?: (Mimes|string)[];
22
+ };
23
+
24
+ res?: {
25
+ status?: number;
26
+ header?: {[key: string]: string};
27
+ contentType?: Mimes | string;
28
+ }
29
+ resolver?: Resolver|ConstructorType<Resolver>;
30
+ }
31
+ export type SaveMappingConfig = {propertyKey: string | symbol; config: MappingConfig}
32
+ const MappingMetadataKey = Symbol('MappingMetadataKey');
33
+ // const GETSMappingMetadataKey = Symbol('GET_METHODS');
34
+ // const GETMappingMetadataKey = Symbol('GET_METHOD');
35
+
36
+ const process = (config: MappingConfig, target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
37
+ const saveMappingConfigs = (ReflectUtils.getMetadata(MappingMetadataKey, target.constructor) ?? []) as SaveMappingConfig[];
38
+ saveMappingConfigs.push({propertyKey, config});
39
+ ReflectUtils.defineMetadata(MappingMetadataKey, saveMappingConfigs, target.constructor);
40
+ ReflectUtils.defineMetadata(MappingMetadataKey, config, target, propertyKey);
41
+ }
42
+ export function UrlMapping(config: MappingConfig): ReflectMethod;
43
+ export function UrlMapping(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
44
+ export function UrlMapping(configOrtarget?: MappingConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {
45
+ if (propertyKey && descriptor) {
46
+ process({method: HttpMethod.GET}, configOrtarget, propertyKey, descriptor);
47
+ } else {
48
+ return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
49
+ process(configOrtarget, target, propertyKey, descriptor);
50
+ }
51
+ }
52
+ }
53
+ export const getUrlMapping = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {
54
+ return ReflectUtils.getMetadata(MappingMetadataKey, target, propertyKey);
55
+ }
56
+
57
+ export const getUrlMappings = (target: any): SaveMappingConfig[] => {
58
+ if (target !== null && undefined !== target && typeof target === 'object') {
59
+ target = target.constructor;
60
+ }
61
+ return ReflectUtils.getMetadata(MappingMetadataKey, target);
62
+ }
63
+ export function GET(config: Omit<MappingConfig, 'method'>): ReflectMethod;
64
+ export function GET(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
65
+ export function GET(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {
66
+ if (propertyKey && descriptor) {
67
+ process({method: HttpMethod.GET}, configOrTarget, propertyKey, descriptor);
68
+ } else {
69
+ return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
70
+ configOrTarget.method = HttpMethod.GET;
71
+ process(configOrTarget, target, propertyKey, descriptor);
72
+ }
73
+ }
74
+ }
75
+
76
+ export const getGET = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {
77
+ return getUrlMapping(target, propertyKey);
78
+ }
79
+ export const getGETS = (target: any): SaveMappingConfig[] => {
80
+ return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);
81
+ }
82
+ export function POST(config: Omit<MappingConfig, 'method'>): ReflectMethod;
83
+ export function POST(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
84
+ export function POST(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {
85
+ if (propertyKey && descriptor) {
86
+ process({method: HttpMethod.POST}, configOrTarget, propertyKey, descriptor);
87
+ } else {
88
+ return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
89
+ configOrTarget.method = HttpMethod.POST;
90
+ process(configOrTarget, target, propertyKey, descriptor);
91
+ }
92
+ }
93
+ }
94
+
95
+ export const getPOST = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {
96
+ return getUrlMapping(target, propertyKey);
97
+ }
98
+ export const getPOSTS = (target: any): SaveMappingConfig[] => {
99
+ return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.POST);
100
+ }
101
+ export function DELETE(config: Omit<MappingConfig, 'method'>): ReflectMethod;
102
+ export function DELETE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
103
+ export function DELETE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {
104
+ if (propertyKey && descriptor) {
105
+ process({method: HttpMethod.DELETE}, configOrTarget, propertyKey, descriptor);
106
+ } else {
107
+ return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
108
+ configOrTarget.method = HttpMethod.DELETE;
109
+ process(configOrTarget, target, propertyKey, descriptor);
110
+ }
111
+ }
112
+ }
113
+
114
+ export const getDELETE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {
115
+ return getUrlMapping(target, propertyKey);
116
+ }
117
+ export const getDELETES = (target: any): SaveMappingConfig[] => {
118
+ return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.DELETE);
119
+ }
120
+ export function PUT(config: Omit<MappingConfig, 'method'>): ReflectMethod;
121
+ export function PUT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
122
+ export function PUT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {
123
+ if (propertyKey && descriptor) {
124
+ process({method: HttpMethod.PUT}, configOrTarget, propertyKey, descriptor);
125
+ } else {
126
+ return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
127
+ configOrTarget.method = HttpMethod.PUT;
128
+ process(configOrTarget, target, propertyKey, descriptor);
129
+ }
130
+ }
131
+ }
132
+
133
+ export const getPUT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {
134
+ return getUrlMapping(target, propertyKey);
135
+ }
136
+ export const getPUTS = (target: any): SaveMappingConfig[] => {
137
+ return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.PUT);
138
+ }
139
+ export function PATCH(config: Omit<MappingConfig, 'method'>): ReflectMethod;
140
+ export function PATCH(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
141
+ export function PATCH(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {
142
+ if (propertyKey && descriptor) {
143
+ process({method: HttpMethod.PATCH}, configOrTarget, propertyKey, descriptor);
144
+ } else {
145
+ return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
146
+ configOrTarget.method = HttpMethod.PATCH;
147
+ process(configOrTarget, target, propertyKey, descriptor);
148
+ }
149
+ }
150
+ }
151
+
152
+ export const getPATCH = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {
153
+ return getUrlMapping(target, propertyKey);
154
+ }
155
+ export const getPATCHS = (target: any): SaveMappingConfig[] => {
156
+ return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);
157
+ }
158
+ export function OPTIONS(config: Omit<MappingConfig, 'method'>): ReflectMethod;
159
+ export function OPTIONS(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
160
+ export function OPTIONS(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {
161
+ if (propertyKey && descriptor) {
162
+ process({method: HttpMethod.OPTIONS}, configOrTarget, propertyKey, descriptor);
163
+ } else {
164
+ return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
165
+ configOrTarget.method = HttpMethod.OPTIONS;
166
+ process(configOrTarget, target, propertyKey, descriptor);
167
+ }
168
+ }
169
+ }
170
+
171
+ export const getOPTIONS = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {
172
+ return getUrlMapping(target, propertyKey);
173
+ }
174
+ export const getOPTIONSS = (target: any): SaveMappingConfig[] => {
175
+ return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.OPTIONS);
176
+ }
177
+ export function HEAD(config: Omit<MappingConfig, 'method'>): ReflectMethod;
178
+ export function HEAD(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
179
+ export function HEAD(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {
180
+ if (propertyKey && descriptor) {
181
+ process({method: HttpMethod.HEAD}, configOrTarget, propertyKey, descriptor);
182
+ } else {
183
+ return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
184
+ configOrTarget.method = HttpMethod.HEAD;
185
+ process(configOrTarget, target, propertyKey, descriptor);
186
+ }
187
+ }
188
+ }
189
+
190
+ export const getHEAD = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {
191
+ return getUrlMapping(target, propertyKey);
192
+ }
193
+ export const getHEADS = (target: any): SaveMappingConfig[] => {
194
+ return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);
195
+ }
196
+ export function TRACE(config: Omit<MappingConfig, 'method'>): ReflectMethod;
197
+ export function TRACE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
198
+ export function TRACE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {
199
+ if (propertyKey && descriptor) {
200
+ process({method: HttpMethod.TRACE}, configOrTarget, propertyKey, descriptor);
201
+ } else {
202
+ return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
203
+ configOrTarget.method = HttpMethod.TRACE;
204
+ process(configOrTarget, target, propertyKey, descriptor);
205
+ }
206
+ }
207
+ }
208
+
209
+ export const getTRACE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {
210
+ return getUrlMapping(target, propertyKey);
211
+ }
212
+ export const getTRACES = (target: any): SaveMappingConfig[] => {
213
+ return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.TRACE);
214
+ }
215
+ export function CONNECT(config: Omit<MappingConfig, 'method'>): ReflectMethod;
216
+ export function CONNECT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
217
+ export function CONNECT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {
218
+ if (propertyKey && descriptor) {
219
+ process({method: HttpMethod.CONNECT}, configOrTarget, propertyKey, descriptor);
220
+ } else {
221
+ return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
222
+ configOrTarget.method = HttpMethod.CONNECT;
223
+ process(configOrTarget, target, propertyKey, descriptor);
224
+ }
225
+ }
226
+ }
227
+
228
+ export const getCONNECT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {
229
+ return getUrlMapping(target, propertyKey);
230
+ }
231
+ export const getCONNECTS = (target: any): SaveMappingConfig[] => {
232
+ return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.CONNECT);
233
+ }
@@ -0,0 +1 @@
1
+ export * from './MethodMapping';
@@ -0,0 +1,38 @@
1
+ import {EndPoint} from './EndPoint';
2
+ import {SimpleBootHttpServer} from '../SimpleBootHttpServer';
3
+ import {RequestResponse} from '../models/RequestResponse';
4
+ import { HttpHeaders } from '../codes/HttpHeaders';
5
+
6
+ export type CrossDomainHeaderEndPointConfig = {
7
+ accessControlAllowOrigin?: string | string[],
8
+ accessControlAllowMethods?: string | string[],
9
+ accessControlAllowHeaders?: string | string[],
10
+ accessControlExposeHeaders?: string | string[]
11
+ }
12
+ export class CrossDomainHeaderEndPoint implements EndPoint {
13
+ constructor(private config?: CrossDomainHeaderEndPointConfig) {
14
+ }
15
+
16
+ /*
17
+ rr.resSetHeader("Access-Control-Allow-Origin", "*")
18
+ rr.resSetHeader("Access-Control-Allow-Methods", "DELETE, POST, GET, OPTIONS")
19
+ rr.resSetHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With")
20
+ */
21
+ async endPoint(rr: RequestResponse, app: SimpleBootHttpServer) {
22
+ if (this.config?.accessControlAllowOrigin) {
23
+ rr.resSetHeader(HttpHeaders.AccessControlAllowOrigin, Array.isArray(this.config.accessControlAllowOrigin) ? this.config.accessControlAllowOrigin.join(', ') : this.config.accessControlAllowOrigin);
24
+ }
25
+ if (this.config?.accessControlAllowMethods) {
26
+ rr.resSetHeader(HttpHeaders.AccessControlAllowMethods, Array.isArray(this.config.accessControlAllowMethods) ? this.config.accessControlAllowMethods.join(', ') : this.config.accessControlAllowMethods);
27
+ }
28
+ if (this.config?.accessControlAllowHeaders) {
29
+ rr.resSetHeader(HttpHeaders.AccessControlAllowHeaders, Array.isArray(this.config.accessControlAllowHeaders) ? this.config.accessControlAllowHeaders.join(', ') : this.config.accessControlAllowHeaders);
30
+ }
31
+ if (this.config?.accessControlExposeHeaders) {
32
+ rr.resSetHeader(HttpHeaders.AccessControlExposeHeaders, Array.isArray(this.config.accessControlExposeHeaders) ? this.config.accessControlExposeHeaders.join(', ') : this.config.accessControlExposeHeaders);
33
+ }
34
+ }
35
+
36
+ async onInit(app: SimpleBootHttpServer) {
37
+ }
38
+ }
@@ -0,0 +1,7 @@
1
+ import {RequestResponse} from '../models/RequestResponse';
2
+ import {SimpleBootHttpServer} from '../SimpleBootHttpServer';
3
+ import {OnInit} from '../lifecycle/OnInit';
4
+
5
+ export interface EndPoint extends OnInit {
6
+ endPoint(rr: RequestResponse, app: SimpleBootHttpServer): Promise<any>;
7
+ }
@@ -0,0 +1,17 @@
1
+ import {EndPoint} from './EndPoint';
2
+ import {SimpleBootHttpServer} from '../SimpleBootHttpServer';
3
+ import {RequestResponse} from '../models/RequestResponse';
4
+
5
+ export class HeaderEndPoint implements EndPoint {
6
+ constructor(private headers?: { [key: string]: string | string[] }) {
7
+ }
8
+
9
+ async endPoint(rr: RequestResponse, app: SimpleBootHttpServer) {
10
+ if (this.headers) {
11
+ rr.resSetHeaders(this.headers);
12
+ }
13
+ }
14
+
15
+ async onInit(app: SimpleBootHttpServer) {
16
+ }
17
+ }
@@ -1,4 +1,3 @@
1
1
  export * from './CrossDomainHeaderEndPoint';
2
2
  export * from './EndPoint';
3
3
  export * from './HeaderEndPoint';
4
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,8 @@
1
+ import {HttpError} from './HttpError';
2
+ import {HttpStatus} from '../codes/HttpStatus';
3
+
4
+ export class BadRequestError extends HttpError {
5
+ constructor({status = HttpStatus.BadRequest, message = 'Bad Request'}: {status?: number, message?: string} = {}) {
6
+ super({status, message});
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ import {HttpError} from './HttpError';
2
+ import {HttpStatus} from '../codes/HttpStatus';
3
+
4
+ export class ForbiddenError extends HttpError {
5
+ constructor({status = HttpStatus.Forbidden, message = 'Forbidden'}: {status?: number, message?: string} = {}) {
6
+ super({status, message});
7
+ }
8
+ }
@@ -0,0 +1,14 @@
1
+
2
+ export class HttpError {
3
+ name: string = 'Error'
4
+ message: string;
5
+ stack?: string
6
+ data?: any;
7
+ public status: number;
8
+
9
+ constructor({status, message = 'HttpError'}: { status: number, message?: string }) {
10
+ // super(message);
11
+ this.message = message;
12
+ this.status = status;
13
+ }
14
+ }
@@ -0,0 +1,8 @@
1
+ import {HttpError} from './HttpError';
2
+ import {HttpStatus} from '../codes/HttpStatus';
3
+
4
+ export class InternalServerError extends HttpError {
5
+ constructor({status = HttpStatus.InternalServerError, message = 'Internal Server Error'}: {status?: number, message?: string} = {}) {
6
+ super({status, message});
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ import {HttpError} from './HttpError';
2
+ import {HttpStatus} from '../codes/HttpStatus';
3
+
4
+ export class NotFoundError extends HttpError {
5
+ constructor({status = HttpStatus.NotFound, message = 'Not Found'}: {status?: number, message?: string} = {}) {
6
+ super({status, message});
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ import {HttpError} from './HttpError';
2
+ import {HttpStatus} from '../codes/HttpStatus';
3
+
4
+ export class UnauthorizedError extends HttpError {
5
+ constructor({status = HttpStatus.Unauthorized, message = 'Unauthorized'}: {status?: number, message?: string} = {}) {
6
+ super({status, message});
7
+ }
8
+ }
@@ -4,4 +4,3 @@ export * from './HttpError';
4
4
  export * from './InternalServerError';
5
5
  export * from './NotFoundError';
6
6
  export * from './UnauthorizedError';
7
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,169 @@
1
+ import { Filter } from '../filters/Filter';
2
+ import { HttpStatus } from '../codes/HttpStatus';
3
+ import { RequestResponse } from '../models/RequestResponse';
4
+ import { SimpleBootHttpServer } from '../SimpleBootHttpServer';
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import { FileUtils } from '@dooboostore/core-node/file/FileUtils';
8
+ import { ConvertUtils } from '@dooboostore/core-node/convert/ConvertUtils';
9
+ import { RandomUtils } from '@dooboostore/core/random/RandomUtils';
10
+
11
+ export type CacheFilterSessionType = { key: string, lifeTime: number, isUpdate: boolean, responseHeaders?: string[] };
12
+
13
+ type CacheConfigCacheItemType = { path: string, createTime: number, lifeTime: number, responseHeader: { [key: string]: string | number | string[] } };
14
+
15
+ type KeyAndConfig = { key: string, lifeTime?: number, responseHeaders?: string[] } ;
16
+
17
+ export class CacheFilter implements Filter {
18
+ public static readonly CARRIER_KEY_NAME = '_CARRIER_CACHE_FILTER_KEY_NAME';
19
+ private storage = new Map<string, string | Buffer>();
20
+ private cacheConfig: {
21
+ createDate: string;
22
+ updateDate: string;
23
+ caches: { [key: string]: CacheConfigCacheItemType }
24
+ }
25
+
26
+ constructor(private config: {
27
+ config: {
28
+ cacheDir?: string;
29
+ lifeTime: number;
30
+ startUpClean?: boolean;
31
+ },
32
+ filter?: (rr: RequestResponse, app: SimpleBootHttpServer) => boolean;
33
+ key: (rr: RequestResponse, app: SimpleBootHttpServer) => KeyAndConfig;
34
+ }) {
35
+
36
+ if (config.config.cacheDir && config.config.startUpClean) {
37
+ FileUtils.deleteSync(config.config.cacheDir, {options: {recursive: true}});
38
+ }
39
+ }
40
+
41
+ async onInit(app: SimpleBootHttpServer) {
42
+ }
43
+
44
+ async proceedBefore({rr, app, carrier}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {
45
+ // this.key = undefined;
46
+ // this.lifeTime = undefined;
47
+ // this.isUpdate = false;
48
+ const filter = this.config.filter?.(rr,app);
49
+ if (!filter) {
50
+ return true;
51
+ }
52
+ if (this.config.config.cacheDir) {
53
+ FileUtils.mkdirSync(this.config.config.cacheDir, {recursive: true});
54
+ }
55
+ if (!this.cacheConfig && this.config.config.cacheDir) {
56
+ try {
57
+ this.cacheConfig = JSON.parse(ConvertUtils.toString(FileUtils.readSync([this.config.config.cacheDir, 'cacheConfig.json'], { option: {encoding: 'utf-8'}})));
58
+ } catch (e) {
59
+ }
60
+ }
61
+ const date = new Date().toISOString();
62
+ this.cacheConfig ??= {
63
+ createDate: date,
64
+ updateDate: date,
65
+ // accessDate: date,
66
+ caches: {}
67
+ };
68
+ this.cacheConfig.createDate ??= date;
69
+ this.cacheConfig.updateDate ??= date;
70
+ // this.cacheConfig.accessDate ??= date;
71
+ this.cacheConfig.caches ??= {};
72
+
73
+
74
+ const rkey = this.config.key(rr, app);
75
+ // console.log('--path filter', rr.reqMethod(), rr.reqUrlPathName, filter, rkey)
76
+ const sessionData: CacheFilterSessionType = {key: rkey.key, lifeTime: rkey.lifeTime ?? this.config.config.lifeTime, isUpdate: false, responseHeaders: rkey.responseHeaders};
77
+
78
+
79
+ const cache = this.cacheConfig.caches[sessionData.key];
80
+ if (cache) {
81
+ const existes = this.config.config.cacheDir ? FileUtils.existsSync(cache.path) : this.storage.has(cache.path);
82
+ const diffTime = Date.now() - cache.createTime;
83
+ if (!existes || diffTime > cache.lifeTime) {
84
+ delete this.cacheConfig[sessionData.key];
85
+ this.deleteChunk(cache.path);
86
+ sessionData.isUpdate = true;
87
+ } else {
88
+ rr.resSetHeaders({
89
+ ...cache.responseHeader,
90
+ cacheFilter: `true;remainTime=${cache.lifeTime - diffTime}`
91
+ });
92
+ // console.log('chunk--->', cache.path);
93
+ try {
94
+ const chunk = this.getChunk(cache.path);
95
+ // console.log('chunk--->', chunk);
96
+ await rr.resEnd(chunk);
97
+ } catch (e) {
98
+ console.log('--------e', e)
99
+ }
100
+ }
101
+ } else {
102
+ sessionData.isUpdate = true;
103
+ }
104
+ carrier.set(CacheFilter.CARRIER_KEY_NAME, sessionData);
105
+ return sessionData.isUpdate;
106
+ }
107
+
108
+ private deleteChunk(path: string) {
109
+ if (this.config.config.cacheDir && FileUtils.existsSync(path)) {
110
+ FileUtils.deleteFileSync(path);
111
+ } else if (this.storage.has(path)) {
112
+ this.storage.delete(path);
113
+ }
114
+ }
115
+
116
+ private getChunk(path: string) {
117
+ return this.config.config.cacheDir ? FileUtils.readSync(path) : this.storage.get(path);
118
+ }
119
+
120
+ async proceedAfter({rr, app, carrier}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {
121
+ // const data = await rr.resBodyStringData()
122
+ const sessionData = carrier.get(CacheFilter.CARRIER_KEY_NAME) as CacheFilterSessionType ;
123
+ if (sessionData && sessionData.isUpdate) {
124
+ try {
125
+ if (this.config.config.cacheDir) {
126
+ FileUtils.mkdirSync([this.config.config.cacheDir, 'caches'], {recursive: true});
127
+ }
128
+ const resBody = rr.resBodyData();
129
+ if (!resBody) {
130
+ return true;
131
+ }
132
+ let p: string | undefined = undefined;
133
+ const destFileUUID = RandomUtils.uuid4();
134
+ p = this.writeChunk(destFileUUID, resBody);
135
+ const updateDateNow = Date.now();
136
+ const updateDate = new Date(updateDateNow).toISOString();
137
+ this.cacheConfig.createDate ??= updateDate;
138
+ this.cacheConfig.updateDate = updateDate;
139
+ const responseHeaders: {[key: string]: string | number | string[]} = {}
140
+ sessionData.responseHeaders?.map(it=>it.toLowerCase()).forEach(it => {
141
+ responseHeaders[it] = rr.resHeader(it);
142
+ })
143
+ this.cacheConfig.caches[sessionData.key] = {
144
+ path: p,
145
+ createTime: updateDateNow,
146
+ lifeTime: sessionData.lifeTime,
147
+ responseHeader: responseHeaders
148
+ };
149
+
150
+ if (this.config.config.cacheDir) {
151
+ FileUtils.write(JSON.stringify(this.cacheConfig), {path: [this.config.config.cacheDir, 'cacheConfig.json']});
152
+ }
153
+ } catch (e) {
154
+ console.log('---', e)
155
+ }
156
+ }
157
+
158
+ return true;
159
+ }
160
+
161
+ private writeChunk(destFileUUID: string, resBody: string | Buffer ) {
162
+ if (this.config.config.cacheDir) {
163
+ return FileUtils.write(resBody, {path: [this.config.config.cacheDir, 'caches', destFileUUID]});
164
+ } else {
165
+ this.storage.set(destFileUUID, resBody);
166
+ return destFileUUID;
167
+ }
168
+ }
169
+ }
@@ -0,0 +1,10 @@
1
+ import { SimpleBootHttpServer } from '../SimpleBootHttpServer';
2
+ import {RequestResponse} from '../models/RequestResponse';
3
+ import {OnInit} from '../lifecycle/OnInit';
4
+
5
+ export interface Filter extends OnInit {
6
+ // false 뒤로는 안흐르게 해주세요
7
+ // true 나를 스킵스켜주새요 (내뒤로 흐르게해주세요)
8
+ proceedBefore(data: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}): Promise<boolean>;
9
+ proceedAfter(data: {rr: RequestResponse, app: SimpleBootHttpServer, before: boolean, carrier: Map<string, any>}): Promise<boolean>;
10
+ }
@@ -0,0 +1,24 @@
1
+ import {Filter} from '../filters/Filter';
2
+ import {HttpStatus} from '../codes/HttpStatus';
3
+ import {RequestResponse} from '../models/RequestResponse';
4
+ import {SimpleBootHttpServer} from '../SimpleBootHttpServer';
5
+
6
+ export class HttpStatusFilter implements Filter {
7
+
8
+ constructor(private httpStatus: HttpStatus | number) {
9
+ }
10
+
11
+ async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {
12
+ // res.writeHead(this.httpStatus);
13
+ rr.resStatusCode(this.httpStatus);
14
+ rr.resEnd();
15
+ return false;
16
+ }
17
+
18
+ async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {
19
+ return true;
20
+ }
21
+
22
+ async onInit(app: SimpleBootHttpServer){
23
+ }
24
+ }