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

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 (431) hide show
  1. package/dist/cjs/SimpleBootHttpServer.js +51 -673
  2. package/dist/cjs/SimpleBootHttpServer.js.map +4 -4
  3. package/dist/cjs/bundle-entry.js +44 -0
  4. package/dist/cjs/bundle-entry.js.map +7 -0
  5. package/dist/cjs/codes/HttpHeaders.js +42 -44
  6. package/dist/cjs/codes/HttpHeaders.js.map +3 -3
  7. package/dist/cjs/codes/HttpMethod.js +0 -2
  8. package/dist/cjs/codes/HttpMethod.js.map +1 -1
  9. package/dist/cjs/codes/HttpStatus.js +0 -2
  10. package/dist/cjs/codes/HttpStatus.js.map +1 -1
  11. package/dist/cjs/codes/Mimes.js +0 -2
  12. package/dist/cjs/codes/Mimes.js.map +1 -1
  13. package/dist/cjs/codes/index.js +9 -126
  14. package/dist/cjs/codes/index.js.map +4 -4
  15. package/dist/cjs/decorators/MethodMapping.js +51 -53
  16. package/dist/cjs/decorators/MethodMapping.js.map +2 -2
  17. package/dist/cjs/decorators/index.js +3 -248
  18. package/dist/cjs/decorators/index.js.map +4 -4
  19. package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.js +7 -8
  20. package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.js.map +1 -1
  21. package/dist/cjs/endpoints/EndPoint.js +0 -2
  22. package/dist/cjs/endpoints/EndPoint.js.map +1 -1
  23. package/dist/cjs/endpoints/HeaderEndPoint.js +2 -4
  24. package/dist/cjs/endpoints/HeaderEndPoint.js.map +1 -1
  25. package/dist/cjs/endpoints/index.js +7 -54
  26. package/dist/cjs/endpoints/index.js.map +3 -3
  27. package/dist/cjs/errors/BadRequestError.js +5 -16
  28. package/dist/cjs/errors/BadRequestError.js.map +3 -3
  29. package/dist/cjs/errors/ForbiddenError.js +5 -16
  30. package/dist/cjs/errors/ForbiddenError.js.map +3 -3
  31. package/dist/cjs/errors/HttpError.js +2 -4
  32. package/dist/cjs/errors/HttpError.js.map +1 -1
  33. package/dist/cjs/errors/InternalServerError.js +5 -16
  34. package/dist/cjs/errors/InternalServerError.js.map +3 -3
  35. package/dist/cjs/errors/NotFoundError.js +5 -16
  36. package/dist/cjs/errors/NotFoundError.js.map +3 -3
  37. package/dist/cjs/errors/UnauthorizedError.js +5 -16
  38. package/dist/cjs/errors/UnauthorizedError.js.map +3 -3
  39. package/dist/cjs/errors/index.js +13 -64
  40. package/dist/cjs/errors/index.js.map +3 -3
  41. package/dist/cjs/filters/CacheFilter.js +11 -13
  42. package/dist/cjs/filters/CacheFilter.js.map +2 -2
  43. package/dist/cjs/filters/Filter.js +0 -2
  44. package/dist/cjs/filters/Filter.js.map +1 -1
  45. package/dist/cjs/filters/HttpStatusFilter.js +2 -4
  46. package/dist/cjs/filters/HttpStatusFilter.js.map +1 -1
  47. package/dist/cjs/filters/OpenApi3Filter.js +7 -20
  48. package/dist/cjs/filters/OpenApi3Filter.js.map +3 -3
  49. package/dist/cjs/filters/ResourceFilter.js +7 -7
  50. package/dist/cjs/filters/ResourceFilter.js.map +1 -1
  51. package/dist/cjs/filters/ThrowFilter.js +2 -4
  52. package/dist/cjs/filters/ThrowFilter.js.map +1 -1
  53. package/dist/cjs/filters/index.js +13 -299
  54. package/dist/cjs/filters/index.js.map +4 -4
  55. package/dist/cjs/index.js +2 -1734
  56. package/dist/cjs/index.js.map +4 -4
  57. package/dist/cjs/inject/InjectSituationType.js +0 -2
  58. package/dist/cjs/inject/InjectSituationType.js.map +1 -1
  59. package/dist/cjs/inject/index.js +3 -16
  60. package/dist/cjs/inject/index.js.map +4 -4
  61. package/dist/cjs/lifecycle/OnInit.js +0 -2
  62. package/dist/cjs/lifecycle/OnInit.js.map +1 -1
  63. package/dist/cjs/lifecycle/index.js +6 -2
  64. package/dist/cjs/lifecycle/index.js.map +1 -1
  65. package/dist/cjs/models/RequestResponse.js +21 -33
  66. package/dist/cjs/models/RequestResponse.js.map +3 -3
  67. package/dist/cjs/models/datas/HeaderData.js +2 -4
  68. package/dist/cjs/models/datas/HeaderData.js.map +1 -1
  69. package/dist/cjs/models/datas/MultipartData.js +0 -2
  70. package/dist/cjs/models/datas/MultipartData.js.map +1 -1
  71. package/dist/cjs/models/datas/ReqHeader.js +2 -4
  72. package/dist/cjs/models/datas/ReqHeader.js.map +1 -1
  73. package/dist/cjs/models/datas/Resource.js +8 -480
  74. package/dist/cjs/models/datas/Resource.js.map +4 -4
  75. package/dist/cjs/models/datas/body/ReqFormUrlBody.js +2 -4
  76. package/dist/cjs/models/datas/body/ReqFormUrlBody.js.map +1 -1
  77. package/dist/cjs/models/datas/body/ReqJsonBody.js +2 -4
  78. package/dist/cjs/models/datas/body/ReqJsonBody.js.map +1 -1
  79. package/dist/cjs/models/datas/body/ReqMultipartFormBody.js +2 -4
  80. package/dist/cjs/models/datas/body/ReqMultipartFormBody.js.map +1 -1
  81. package/dist/cjs/models/index.js +19 -574
  82. package/dist/cjs/models/index.js.map +4 -4
  83. package/dist/cjs/models/method/patch/PatchJson.js +2 -4
  84. package/dist/cjs/models/method/patch/PatchJson.js.map +1 -1
  85. package/dist/cjs/option/HttpServerOption.js +3 -5
  86. package/dist/cjs/option/HttpServerOption.js.map +1 -1
  87. package/dist/cjs/option/index.js +3 -50
  88. package/dist/cjs/option/index.js.map +3 -3
  89. package/dist/cjs/resolvers/Resolver.js +0 -2
  90. package/dist/cjs/resolvers/Resolver.js.map +1 -1
  91. package/dist/cjs/resolvers/ResourceResolver.js +10 -538
  92. package/dist/cjs/resolvers/ResourceResolver.js.map +4 -4
  93. package/dist/cjs/resolvers/index.js +5 -552
  94. package/dist/cjs/resolvers/index.js.map +4 -4
  95. package/dist/cjs/session/SessionManager.js +4 -478
  96. package/dist/cjs/session/SessionManager.js.map +4 -4
  97. package/dist/cjs/session/index.js +3 -560
  98. package/dist/cjs/session/index.js.map +4 -4
  99. package/dist/esm/SimpleBootHttpServer.js +35 -656
  100. package/dist/esm/SimpleBootHttpServer.js.map +4 -4
  101. package/dist/esm/bundle-entry.js +13 -0
  102. package/dist/esm/bundle-entry.js.map +7 -0
  103. package/dist/esm/codes/HttpHeaders.js +42 -43
  104. package/dist/esm/codes/HttpHeaders.js.map +3 -3
  105. package/dist/esm/codes/HttpMethod.js +0 -1
  106. package/dist/esm/codes/HttpMethod.js.map +1 -1
  107. package/dist/esm/codes/HttpStatus.js +0 -1
  108. package/dist/esm/codes/HttpStatus.js.map +1 -1
  109. package/dist/esm/codes/Mimes.js +0 -1
  110. package/dist/esm/codes/Mimes.js.map +1 -1
  111. package/dist/esm/codes/index.js +4 -115
  112. package/dist/esm/codes/index.js.map +4 -4
  113. package/dist/esm/decorators/MethodMapping.js +51 -52
  114. package/dist/esm/decorators/MethodMapping.js.map +2 -2
  115. package/dist/esm/decorators/index.js +1 -210
  116. package/dist/esm/decorators/index.js.map +4 -4
  117. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.js +7 -7
  118. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.js.map +1 -1
  119. package/dist/esm/endpoints/HeaderEndPoint.js +2 -3
  120. package/dist/esm/endpoints/HeaderEndPoint.js.map +1 -1
  121. package/dist/esm/endpoints/index.js +3 -45
  122. package/dist/esm/endpoints/index.js.map +3 -3
  123. package/dist/esm/errors/BadRequestError.js +5 -13
  124. package/dist/esm/errors/BadRequestError.js.map +3 -3
  125. package/dist/esm/errors/ForbiddenError.js +5 -13
  126. package/dist/esm/errors/ForbiddenError.js.map +3 -3
  127. package/dist/esm/errors/HttpError.js +2 -3
  128. package/dist/esm/errors/HttpError.js.map +1 -1
  129. package/dist/esm/errors/InternalServerError.js +5 -13
  130. package/dist/esm/errors/InternalServerError.js.map +3 -3
  131. package/dist/esm/errors/NotFoundError.js +5 -13
  132. package/dist/esm/errors/NotFoundError.js.map +3 -3
  133. package/dist/esm/errors/UnauthorizedError.js +5 -13
  134. package/dist/esm/errors/UnauthorizedError.js.map +3 -3
  135. package/dist/esm/errors/index.js +6 -51
  136. package/dist/esm/errors/index.js.map +3 -3
  137. package/dist/esm/filters/CacheFilter.js +11 -12
  138. package/dist/esm/filters/CacheFilter.js.map +2 -2
  139. package/dist/esm/filters/HttpStatusFilter.js +2 -3
  140. package/dist/esm/filters/HttpStatusFilter.js.map +1 -1
  141. package/dist/esm/filters/OpenApi3Filter.js +6 -16
  142. package/dist/esm/filters/OpenApi3Filter.js.map +3 -3
  143. package/dist/esm/filters/ResourceFilter.js +7 -6
  144. package/dist/esm/filters/ResourceFilter.js.map +1 -1
  145. package/dist/esm/filters/ThrowFilter.js +2 -3
  146. package/dist/esm/filters/ThrowFilter.js.map +1 -1
  147. package/dist/esm/filters/index.js +6 -277
  148. package/dist/esm/filters/index.js.map +4 -4
  149. package/dist/esm/index.js +2 -1659
  150. package/dist/esm/index.js.map +4 -4
  151. package/dist/esm/inject/InjectSituationType.js +0 -1
  152. package/dist/esm/inject/InjectSituationType.js.map +1 -1
  153. package/dist/esm/inject/index.js +1 -8
  154. package/dist/esm/inject/index.js.map +4 -4
  155. package/dist/esm/lifecycle/index.js +1 -0
  156. package/dist/esm/lifecycle/index.js.map +3 -3
  157. package/dist/esm/models/RequestResponse.js +18 -29
  158. package/dist/esm/models/RequestResponse.js.map +3 -3
  159. package/dist/esm/models/datas/HeaderData.js +2 -3
  160. package/dist/esm/models/datas/HeaderData.js.map +1 -1
  161. package/dist/esm/models/datas/ReqHeader.js +2 -3
  162. package/dist/esm/models/datas/ReqHeader.js.map +1 -1
  163. package/dist/esm/models/datas/Resource.js +7 -478
  164. package/dist/esm/models/datas/Resource.js.map +4 -4
  165. package/dist/esm/models/datas/body/ReqFormUrlBody.js +2 -3
  166. package/dist/esm/models/datas/body/ReqFormUrlBody.js.map +1 -1
  167. package/dist/esm/models/datas/body/ReqJsonBody.js +2 -3
  168. package/dist/esm/models/datas/body/ReqJsonBody.js.map +1 -1
  169. package/dist/esm/models/datas/body/ReqMultipartFormBody.js +2 -3
  170. package/dist/esm/models/datas/body/ReqMultipartFormBody.js.map +1 -1
  171. package/dist/esm/models/index.js +9 -548
  172. package/dist/esm/models/index.js.map +4 -4
  173. package/dist/esm/models/method/patch/PatchJson.js +2 -3
  174. package/dist/esm/models/method/patch/PatchJson.js.map +1 -1
  175. package/dist/esm/option/HttpServerOption.js +3 -4
  176. package/dist/esm/option/HttpServerOption.js.map +1 -1
  177. package/dist/esm/option/index.js +1 -42
  178. package/dist/esm/option/index.js.map +3 -3
  179. package/dist/esm/resolvers/ResourceResolver.js +8 -526
  180. package/dist/esm/resolvers/ResourceResolver.js.map +4 -4
  181. package/dist/esm/resolvers/index.js +2 -537
  182. package/dist/esm/resolvers/index.js.map +4 -4
  183. package/dist/esm/session/SessionManager.js +3 -476
  184. package/dist/esm/session/SessionManager.js.map +3 -3
  185. package/dist/esm/session/index.js +1 -552
  186. package/dist/esm/session/index.js.map +3 -3
  187. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +14976 -1243
  188. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +4 -4
  189. package/dist/{cjs → types}/SimpleBootHttpServer.d.ts +2 -1
  190. package/dist/types/SimpleBootHttpServer.d.ts.map +1 -0
  191. package/dist/{cjs/index.d.ts → types/bundle-entry.d.ts} +2 -2
  192. package/dist/types/bundle-entry.d.ts.map +1 -0
  193. package/dist/types/codes/HttpHeaders.d.ts +43 -0
  194. package/dist/types/codes/HttpHeaders.d.ts.map +1 -0
  195. package/dist/{cjs → types}/decorators/MethodMapping.d.ts +0 -1
  196. package/dist/types/decorators/MethodMapping.d.ts.map +1 -0
  197. package/dist/types/index.d.ts +41 -0
  198. package/dist/types/index.d.ts.map +1 -0
  199. package/dist/{esm → types}/models/RequestResponse.d.ts +7 -7
  200. package/dist/types/models/RequestResponse.d.ts.map +1 -0
  201. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +15140 -1433
  202. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +4 -4
  203. package/package.json +36 -22
  204. package/src/SimpleBootHttpServer.ts +330 -0
  205. package/{dist/esm/index.d.ts → src/bundle-entry.ts} +1 -2
  206. package/src/codes/HttpHeaders.ts +43 -0
  207. package/src/codes/HttpMethod.ts +11 -0
  208. package/{dist/esm/codes/HttpStatus.d.ts → src/codes/HttpStatus.ts} +2 -2
  209. package/src/codes/Mimes.ts +27 -0
  210. package/{dist/esm/codes/index.d.ts → src/codes/index.ts} +0 -1
  211. package/src/decorators/MethodMapping.ts +233 -0
  212. package/src/decorators/index.ts +1 -0
  213. package/src/endpoints/CrossDomainHeaderEndPoint.ts +38 -0
  214. package/src/endpoints/EndPoint.ts +7 -0
  215. package/src/endpoints/HeaderEndPoint.ts +17 -0
  216. package/{dist/esm/endpoints/index.d.ts → src/endpoints/index.ts} +0 -1
  217. package/src/errors/BadRequestError.ts +8 -0
  218. package/src/errors/ForbiddenError.ts +8 -0
  219. package/src/errors/HttpError.ts +14 -0
  220. package/src/errors/InternalServerError.ts +8 -0
  221. package/src/errors/NotFoundError.ts +8 -0
  222. package/src/errors/UnauthorizedError.ts +8 -0
  223. package/{dist/esm/errors/index.d.ts → src/errors/index.ts} +0 -1
  224. package/src/filters/CacheFilter.ts +169 -0
  225. package/src/filters/Filter.ts +10 -0
  226. package/src/filters/HttpStatusFilter.ts +24 -0
  227. package/src/filters/OpenApi3Filter.ts +158 -0
  228. package/src/filters/ResourceFilter.ts +72 -0
  229. package/src/filters/ThrowFilter.ts +23 -0
  230. package/{dist/esm/filters/index.d.ts → src/filters/index.ts} +0 -1
  231. package/src/index.ts +13 -0
  232. package/src/inject/InjectSituationType.ts +3 -0
  233. package/{dist/esm/inject/index.d.ts → src/inject/index.ts} +0 -1
  234. package/src/lifecycle/OnInit.ts +5 -0
  235. package/src/lifecycle/index.ts +1 -0
  236. package/src/models/RequestResponse.ts +658 -0
  237. package/src/models/datas/HeaderData.ts +4 -0
  238. package/src/models/datas/MultipartData.ts +27 -0
  239. package/{dist/esm/models/datas/ReqHeader.d.ts → src/models/datas/ReqHeader.ts} +5 -4
  240. package/src/models/datas/Resource.ts +44 -0
  241. package/src/models/datas/body/ReqFormUrlBody.ts +3 -0
  242. package/src/models/datas/body/ReqJsonBody.ts +3 -0
  243. package/src/models/datas/body/ReqMultipartFormBody.ts +6 -0
  244. package/{dist/esm/models/index.d.ts → src/models/index.ts} +0 -1
  245. package/src/models/method/patch/PatchJson.ts +46 -0
  246. package/src/option/HttpServerOption.ts +81 -0
  247. package/{dist/esm/option/index.d.ts → src/option/index.ts} +0 -1
  248. package/src/resolvers/Resolver.ts +5 -0
  249. package/src/resolvers/ResourceResolver.ts +11 -0
  250. package/{dist/esm/resolvers/index.d.ts → src/resolvers/index.ts} +0 -1
  251. package/src/session/SessionManager.ts +89 -0
  252. package/src/session/index.ts +1 -0
  253. package/tsconfig.json +23 -0
  254. package/dist/cjs/SimpleBootHttpServer.d.ts.map +0 -1
  255. package/dist/cjs/codes/HttpHeaders.d.ts +0 -42
  256. package/dist/cjs/codes/HttpHeaders.d.ts.map +0 -1
  257. package/dist/cjs/decorators/MethodMapping.d.ts.map +0 -1
  258. package/dist/cjs/index.d.ts.map +0 -1
  259. package/dist/cjs/models/RequestResponse.d.ts +0 -100
  260. package/dist/cjs/models/RequestResponse.d.ts.map +0 -1
  261. package/dist/cjs/package.json +0 -3
  262. package/dist/esm/SimpleBootHttpServer.d.ts +0 -14
  263. package/dist/esm/SimpleBootHttpServer.d.ts.map +0 -1
  264. package/dist/esm/codes/HttpHeaders.d.ts +0 -42
  265. package/dist/esm/codes/HttpHeaders.d.ts.map +0 -1
  266. package/dist/esm/codes/HttpMethod.d.ts +0 -12
  267. package/dist/esm/codes/HttpMethod.d.ts.map +0 -1
  268. package/dist/esm/codes/HttpStatus.d.ts.map +0 -1
  269. package/dist/esm/codes/Mimes.d.ts +0 -28
  270. package/dist/esm/codes/Mimes.d.ts.map +0 -1
  271. package/dist/esm/codes/index.d.ts.map +0 -1
  272. package/dist/esm/decorators/MethodMapping.d.ts +0 -74
  273. package/dist/esm/decorators/MethodMapping.d.ts.map +0 -1
  274. package/dist/esm/decorators/index.d.ts +0 -2
  275. package/dist/esm/decorators/index.d.ts.map +0 -1
  276. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.d.ts +0 -16
  277. package/dist/esm/endpoints/CrossDomainHeaderEndPoint.d.ts.map +0 -1
  278. package/dist/esm/endpoints/EndPoint.d.ts +0 -7
  279. package/dist/esm/endpoints/EndPoint.d.ts.map +0 -1
  280. package/dist/esm/endpoints/HeaderEndPoint.d.ts +0 -12
  281. package/dist/esm/endpoints/HeaderEndPoint.d.ts.map +0 -1
  282. package/dist/esm/endpoints/index.d.ts.map +0 -1
  283. package/dist/esm/errors/BadRequestError.d.ts +0 -8
  284. package/dist/esm/errors/BadRequestError.d.ts.map +0 -1
  285. package/dist/esm/errors/ForbiddenError.d.ts +0 -8
  286. package/dist/esm/errors/ForbiddenError.d.ts.map +0 -1
  287. package/dist/esm/errors/HttpError.d.ts +0 -12
  288. package/dist/esm/errors/HttpError.d.ts.map +0 -1
  289. package/dist/esm/errors/InternalServerError.d.ts +0 -8
  290. package/dist/esm/errors/InternalServerError.d.ts.map +0 -1
  291. package/dist/esm/errors/NotFoundError.d.ts +0 -8
  292. package/dist/esm/errors/NotFoundError.d.ts.map +0 -1
  293. package/dist/esm/errors/UnauthorizedError.d.ts +0 -8
  294. package/dist/esm/errors/UnauthorizedError.d.ts.map +0 -1
  295. package/dist/esm/errors/index.d.ts.map +0 -1
  296. package/dist/esm/filters/CacheFilter.d.ts +0 -45
  297. package/dist/esm/filters/CacheFilter.d.ts.map +0 -1
  298. package/dist/esm/filters/Filter.d.ts +0 -17
  299. package/dist/esm/filters/Filter.d.ts.map +0 -1
  300. package/dist/esm/filters/HttpStatusFilter.d.ts +0 -20
  301. package/dist/esm/filters/HttpStatusFilter.d.ts.map +0 -1
  302. package/dist/esm/filters/OpenApi3Filter.d.ts +0 -142
  303. package/dist/esm/filters/OpenApi3Filter.d.ts.map +0 -1
  304. package/dist/esm/filters/ResourceFilter.d.ts +0 -24
  305. package/dist/esm/filters/ResourceFilter.d.ts.map +0 -1
  306. package/dist/esm/filters/ThrowFilter.d.ts +0 -19
  307. package/dist/esm/filters/ThrowFilter.d.ts.map +0 -1
  308. package/dist/esm/filters/index.d.ts.map +0 -1
  309. package/dist/esm/index.d.ts.map +0 -1
  310. package/dist/esm/inject/InjectSituationType.d.ts +0 -4
  311. package/dist/esm/inject/InjectSituationType.d.ts.map +0 -1
  312. package/dist/esm/inject/index.d.ts.map +0 -1
  313. package/dist/esm/lifecycle/OnInit.d.ts +0 -5
  314. package/dist/esm/lifecycle/OnInit.d.ts.map +0 -1
  315. package/dist/esm/lifecycle/index.d.ts +0 -2
  316. package/dist/esm/lifecycle/index.d.ts.map +0 -1
  317. package/dist/esm/models/RequestResponse.d.ts.map +0 -1
  318. package/dist/esm/models/datas/HeaderData.d.ts +0 -10
  319. package/dist/esm/models/datas/HeaderData.d.ts.map +0 -1
  320. package/dist/esm/models/datas/MultipartData.d.ts +0 -12
  321. package/dist/esm/models/datas/MultipartData.d.ts.map +0 -1
  322. package/dist/esm/models/datas/ReqHeader.d.ts.map +0 -1
  323. package/dist/esm/models/datas/Resource.d.ts +0 -11
  324. package/dist/esm/models/datas/Resource.d.ts.map +0 -1
  325. package/dist/esm/models/datas/body/ReqFormUrlBody.d.ts +0 -4
  326. package/dist/esm/models/datas/body/ReqFormUrlBody.d.ts.map +0 -1
  327. package/dist/esm/models/datas/body/ReqJsonBody.d.ts +0 -4
  328. package/dist/esm/models/datas/body/ReqJsonBody.d.ts.map +0 -1
  329. package/dist/esm/models/datas/body/ReqMultipartFormBody.d.ts +0 -6
  330. package/dist/esm/models/datas/body/ReqMultipartFormBody.d.ts.map +0 -1
  331. package/dist/esm/models/index.d.ts.map +0 -1
  332. package/dist/esm/models/method/patch/PatchJson.d.ts +0 -8
  333. package/dist/esm/models/method/patch/PatchJson.d.ts.map +0 -1
  334. package/dist/esm/option/HttpServerOption.d.ts +0 -83
  335. package/dist/esm/option/HttpServerOption.d.ts.map +0 -1
  336. package/dist/esm/option/index.d.ts.map +0 -1
  337. package/dist/esm/resolvers/Resolver.d.ts +0 -5
  338. package/dist/esm/resolvers/Resolver.d.ts.map +0 -1
  339. package/dist/esm/resolvers/ResourceResolver.d.ts +0 -6
  340. package/dist/esm/resolvers/ResourceResolver.d.ts.map +0 -1
  341. package/dist/esm/resolvers/index.d.ts.map +0 -1
  342. package/dist/esm/session/SessionManager.d.ts +0 -57
  343. package/dist/esm/session/SessionManager.d.ts.map +0 -1
  344. package/dist/esm/session/index.d.ts +0 -2
  345. package/dist/esm/session/index.d.ts.map +0 -1
  346. /package/dist/{cjs → types}/codes/HttpMethod.d.ts +0 -0
  347. /package/dist/{cjs → types}/codes/HttpMethod.d.ts.map +0 -0
  348. /package/dist/{cjs → types}/codes/HttpStatus.d.ts +0 -0
  349. /package/dist/{cjs → types}/codes/HttpStatus.d.ts.map +0 -0
  350. /package/dist/{cjs → types}/codes/Mimes.d.ts +0 -0
  351. /package/dist/{cjs → types}/codes/Mimes.d.ts.map +0 -0
  352. /package/dist/{cjs → types}/codes/index.d.ts +0 -0
  353. /package/dist/{cjs → types}/codes/index.d.ts.map +0 -0
  354. /package/dist/{cjs → types}/decorators/index.d.ts +0 -0
  355. /package/dist/{cjs → types}/decorators/index.d.ts.map +0 -0
  356. /package/dist/{cjs → types}/endpoints/CrossDomainHeaderEndPoint.d.ts +0 -0
  357. /package/dist/{cjs → types}/endpoints/CrossDomainHeaderEndPoint.d.ts.map +0 -0
  358. /package/dist/{cjs → types}/endpoints/EndPoint.d.ts +0 -0
  359. /package/dist/{cjs → types}/endpoints/EndPoint.d.ts.map +0 -0
  360. /package/dist/{cjs → types}/endpoints/HeaderEndPoint.d.ts +0 -0
  361. /package/dist/{cjs → types}/endpoints/HeaderEndPoint.d.ts.map +0 -0
  362. /package/dist/{cjs → types}/endpoints/index.d.ts +0 -0
  363. /package/dist/{cjs → types}/endpoints/index.d.ts.map +0 -0
  364. /package/dist/{cjs → types}/errors/BadRequestError.d.ts +0 -0
  365. /package/dist/{cjs → types}/errors/BadRequestError.d.ts.map +0 -0
  366. /package/dist/{cjs → types}/errors/ForbiddenError.d.ts +0 -0
  367. /package/dist/{cjs → types}/errors/ForbiddenError.d.ts.map +0 -0
  368. /package/dist/{cjs → types}/errors/HttpError.d.ts +0 -0
  369. /package/dist/{cjs → types}/errors/HttpError.d.ts.map +0 -0
  370. /package/dist/{cjs → types}/errors/InternalServerError.d.ts +0 -0
  371. /package/dist/{cjs → types}/errors/InternalServerError.d.ts.map +0 -0
  372. /package/dist/{cjs → types}/errors/NotFoundError.d.ts +0 -0
  373. /package/dist/{cjs → types}/errors/NotFoundError.d.ts.map +0 -0
  374. /package/dist/{cjs → types}/errors/UnauthorizedError.d.ts +0 -0
  375. /package/dist/{cjs → types}/errors/UnauthorizedError.d.ts.map +0 -0
  376. /package/dist/{cjs → types}/errors/index.d.ts +0 -0
  377. /package/dist/{cjs → types}/errors/index.d.ts.map +0 -0
  378. /package/dist/{cjs → types}/filters/CacheFilter.d.ts +0 -0
  379. /package/dist/{cjs → types}/filters/CacheFilter.d.ts.map +0 -0
  380. /package/dist/{cjs → types}/filters/Filter.d.ts +0 -0
  381. /package/dist/{cjs → types}/filters/Filter.d.ts.map +0 -0
  382. /package/dist/{cjs → types}/filters/HttpStatusFilter.d.ts +0 -0
  383. /package/dist/{cjs → types}/filters/HttpStatusFilter.d.ts.map +0 -0
  384. /package/dist/{cjs → types}/filters/OpenApi3Filter.d.ts +0 -0
  385. /package/dist/{cjs → types}/filters/OpenApi3Filter.d.ts.map +0 -0
  386. /package/dist/{cjs → types}/filters/ResourceFilter.d.ts +0 -0
  387. /package/dist/{cjs → types}/filters/ResourceFilter.d.ts.map +0 -0
  388. /package/dist/{cjs → types}/filters/ThrowFilter.d.ts +0 -0
  389. /package/dist/{cjs → types}/filters/ThrowFilter.d.ts.map +0 -0
  390. /package/dist/{cjs → types}/filters/index.d.ts +0 -0
  391. /package/dist/{cjs → types}/filters/index.d.ts.map +0 -0
  392. /package/dist/{cjs → types}/inject/InjectSituationType.d.ts +0 -0
  393. /package/dist/{cjs → types}/inject/InjectSituationType.d.ts.map +0 -0
  394. /package/dist/{cjs → types}/inject/index.d.ts +0 -0
  395. /package/dist/{cjs → types}/inject/index.d.ts.map +0 -0
  396. /package/dist/{cjs → types}/lifecycle/OnInit.d.ts +0 -0
  397. /package/dist/{cjs → types}/lifecycle/OnInit.d.ts.map +0 -0
  398. /package/dist/{cjs → types}/lifecycle/index.d.ts +0 -0
  399. /package/dist/{cjs → types}/lifecycle/index.d.ts.map +0 -0
  400. /package/dist/{cjs → types}/models/datas/HeaderData.d.ts +0 -0
  401. /package/dist/{cjs → types}/models/datas/HeaderData.d.ts.map +0 -0
  402. /package/dist/{cjs → types}/models/datas/MultipartData.d.ts +0 -0
  403. /package/dist/{cjs → types}/models/datas/MultipartData.d.ts.map +0 -0
  404. /package/dist/{cjs → types}/models/datas/ReqHeader.d.ts +0 -0
  405. /package/dist/{cjs → types}/models/datas/ReqHeader.d.ts.map +0 -0
  406. /package/dist/{cjs → types}/models/datas/Resource.d.ts +0 -0
  407. /package/dist/{cjs → types}/models/datas/Resource.d.ts.map +0 -0
  408. /package/dist/{cjs → types}/models/datas/body/ReqFormUrlBody.d.ts +0 -0
  409. /package/dist/{cjs → types}/models/datas/body/ReqFormUrlBody.d.ts.map +0 -0
  410. /package/dist/{cjs → types}/models/datas/body/ReqJsonBody.d.ts +0 -0
  411. /package/dist/{cjs → types}/models/datas/body/ReqJsonBody.d.ts.map +0 -0
  412. /package/dist/{cjs → types}/models/datas/body/ReqMultipartFormBody.d.ts +0 -0
  413. /package/dist/{cjs → types}/models/datas/body/ReqMultipartFormBody.d.ts.map +0 -0
  414. /package/dist/{cjs → types}/models/index.d.ts +0 -0
  415. /package/dist/{cjs → types}/models/index.d.ts.map +0 -0
  416. /package/dist/{cjs → types}/models/method/patch/PatchJson.d.ts +0 -0
  417. /package/dist/{cjs → types}/models/method/patch/PatchJson.d.ts.map +0 -0
  418. /package/dist/{cjs → types}/option/HttpServerOption.d.ts +0 -0
  419. /package/dist/{cjs → types}/option/HttpServerOption.d.ts.map +0 -0
  420. /package/dist/{cjs → types}/option/index.d.ts +0 -0
  421. /package/dist/{cjs → types}/option/index.d.ts.map +0 -0
  422. /package/dist/{cjs → types}/resolvers/Resolver.d.ts +0 -0
  423. /package/dist/{cjs → types}/resolvers/Resolver.d.ts.map +0 -0
  424. /package/dist/{cjs → types}/resolvers/ResourceResolver.d.ts +0 -0
  425. /package/dist/{cjs → types}/resolvers/ResourceResolver.d.ts.map +0 -0
  426. /package/dist/{cjs → types}/resolvers/index.d.ts +0 -0
  427. /package/dist/{cjs → types}/resolvers/index.d.ts.map +0 -0
  428. /package/dist/{cjs → types}/session/SessionManager.d.ts +0 -0
  429. /package/dist/{cjs → types}/session/SessionManager.d.ts.map +0 -0
  430. /package/dist/{cjs → types}/session/index.d.ts +0 -0
  431. /package/dist/{cjs → types}/session/index.d.ts.map +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/index.ts", "../../src/SimpleBootHttpServer.ts", "../../src/option/HttpServerOption.ts", "../../src/codes/HttpHeaders.ts", "../../src/models/RequestResponse.ts", "../../src/models/datas/body/ReqFormUrlBody.ts", "../../src/models/datas/body/ReqJsonBody.ts", "../../src/models/datas/ReqHeader.ts", "../../src/decorators/MethodMapping.ts", "../../src/codes/HttpMethod.ts", "../../src/codes/HttpStatus.ts", "../../src/codes/Mimes.ts", "../../src/models/datas/body/ReqMultipartFormBody.ts", "../../src/errors/HttpError.ts", "../../src/session/SessionManager.ts", "../../src/inject/InjectSituationType.ts", "../../src/endpoints/CrossDomainHeaderEndPoint.ts", "../../src/endpoints/HeaderEndPoint.ts", "../../src/errors/BadRequestError.ts", "../../src/errors/ForbiddenError.ts", "../../src/errors/InternalServerError.ts", "../../src/errors/NotFoundError.ts", "../../src/errors/UnauthorizedError.ts", "../../src/filters/CacheFilter.ts", "../../src/filters/HttpStatusFilter.ts", "../../src/filters/OpenApi3Filter.ts", "../../src/filters/ResourceFilter.ts", "../../src/filters/ThrowFilter.ts", "../../src/models/datas/HeaderData.ts", "../../src/models/datas/Resource.ts", "../../src/models/method/patch/PatchJson.ts", "../../src/resolvers/ResourceResolver.ts"],
4
- "sourcesContent": ["export * from './SimpleBootHttpServer';\nexport * from './codes';\nexport * from './decorators';\nexport * from './endpoints';\nexport * from './errors';\nexport * from './filters';\nexport * from './inject';\nexport * from './lifecycle';\nexport * from './models';\nexport * from './option';\nexport * from './resolvers';\nexport * from './session';", "import {SimpleApplication} from '@dooboostore/simple-boot/SimpleApplication';\nimport {HttpServerOption} from './option/HttpServerOption';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport {IncomingMessage, Server as HttpServer, ServerResponse} from 'http'\nimport { Server as HttpsServer, ServerOptions as HttpsServerOption } from 'https'; // Add HTTPS support\nimport {RequestResponse} from './models/RequestResponse';\nimport {getUrlMapping, getUrlMappings, SaveMappingConfig, UrlMappingSituationType} from './decorators/MethodMapping';\nimport {HttpStatus} from './codes/HttpStatus';\nimport {HttpHeaders} from './codes/HttpHeaders';\nimport {Mimes} from './codes/Mimes';\nimport {Filter} from './filters/Filter';\nimport {ExceptionHandlerSituationType, targetExceptionHandler} from '@dooboostore/simple-boot/decorators/exception/ExceptionDecorator';\nimport {getInject, SituationTypeContainer, SituationTypeContainers} from '@dooboostore/simple-boot/decorators/inject/Inject';\nimport {EndPoint} from './endpoints/EndPoint';\nimport {ReflectUtils} from '@dooboostore/core/reflect/ReflectUtils';\nimport {ReqFormUrlBody} from './models/datas/body/ReqFormUrlBody';\nimport {ReqJsonBody} from './models/datas/body/ReqJsonBody';\nimport {ReqHeader} from './models/datas/ReqHeader';\nimport {RouterModule} from '@dooboostore/simple-boot/route/RouterModule';\nimport {ReqMultipartFormBody} from './models/datas/body/ReqMultipartFormBody';\nimport {execValidationInValid, getValidIndex} from '@dooboostore/simple-boot/decorators/validate/Validation';\nimport {ValidException} from '@dooboostore/simple-boot/errors/ValidException';\nimport {HttpError} from './errors/HttpError';\nimport {getRoute} from '@dooboostore/simple-boot/decorators/route/Router';\nimport {OnInit} from './lifecycle/OnInit';\nimport {URLSearchParams} from 'url';\nimport {HttpMethod} from './codes/HttpMethod';\nimport {SessionManager} from './session/SessionManager';\nimport { InjectSituationType } from './inject/InjectSituationType';\n\nexport class SimpleBootHttpServer extends SimpleApplication {\n public server?: HttpServer | HttpsServer;\n private sessionManager: SessionManager;\n constructor(public option: HttpServerOption = new HttpServerOption()) {\n super(option);\n this.sessionManager = new SessionManager(this.option);\n }\n\n\n public run(otherInstanceSim?: Map<ConstructorType<any>, any>) {\n const simstanceManager = super.run(otherInstanceSim);\n const targets = [...this.option.closeEndPoints ?? [], ...this.option.errorEndPoints ?? [], ...this.option.requestEndPoints ?? [], ...this.option.filters ?? []];\n Promise.all(targets.map(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it as ConstructorType<any>}) : it) as OnInit).map(it => it.onInit(this))).then(it => {\n this.startServer();\n });\n return simstanceManager;\n }\n\n private startServer() {\n\n // const a = this.option.serverOption as HttpsServerOption;\n // this.option.serverOption?.\n\n if (this.option.serverOption && 'key' in this.option.serverOption && 'cert' in this.option.serverOption) {\n this.server = new HttpsServer(this.option.serverOption);\n const httpServer = new HttpServer();\n httpServer.on('request', (req: IncomingMessage, res: ServerResponse) => {\n res.writeHead(301, { Location: `https://${req.headers.host}${req.url}` });\n res.end();\n });\n httpServer.listen(80, this.option.listen.hostname, () => {\n console.log('HTTP redirect server running on port 80');\n });\n } else if (this.option.serverOption) {\n this.server = new HttpServer(this.option.serverOption);\n } else {\n this.server = new HttpServer();\n }\n // const thisRef = this;\n this.server.on('request', async (req: IncomingMessage, res: ServerResponse) => {\n // console.log('request', req.url);\n const transactionManager = this.option.transactionManagerFactory ? await this.option.transactionManagerFactory() : undefined;\n res.on('close', async () => {\n if (this.option.closeEndPoints) {\n for (const it of this.option.closeEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as EndPoint;\n const endPoint = execute?.endPoint(rr, this);\n if (endPoint instanceof Promise) {\n await endPoint;\n }\n } catch (e) {\n }\n }\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n res.on('error', async () => {\n if (this.option.errorEndPoints) {\n for (const it of this.option.errorEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as EndPoint;\n const endPoint = execute?.endPoint(rr, this);\n if (endPoint instanceof Promise) {\n await endPoint;\n }\n } catch (e) {\n }\n }\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n\n const rr = new RequestResponse(req, res,{sessionManager: this.sessionManager, option: this.option});\n /*\n default setting first\n */\n rr.resSetHeader(HttpHeaders.Server, 'simple-boot-http-server');\n const cookie = rr.reqCookieGet(this.option.sessionOption.key);\n if (!cookie) {\n const session = await this.sessionManager.session();\n rr.resSetHeader(HttpHeaders.SetCookie, `${this.option.sessionOption.key}=${session.uuid}; Path=/; HttpOnly`);\n }\n\n const otherStorage = new Map<ConstructorType<any>, any>();\n otherStorage.set(RequestResponse, rr);\n otherStorage.set(IncomingMessage, req);\n otherStorage.set(ServerResponse, res);\n try {\n transactionManager?.try();\n if (this.option.requestEndPoints) {\n for (const it of this.option.requestEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim<EndPoint>({target:it}) : it) as EndPoint;\n execute?.endPoint(rr, this);\n } catch (e) {\n }\n }\n }\n\n const filter = {\n carrier: new Map<string, any>(),\n filters: [] as { filter: Filter, sw: boolean }[]\n };\n for (let i = 0; this.option.filters && i < this.option.filters.length; i++) {\n const it = this.option.filters[i];\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as Filter;\n let sw = true;\n if (execute?.proceedBefore) {\n sw = await execute.proceedBefore({rr, app: this, carrier: filter.carrier});\n filter.filters.push({filter: execute, sw});\n }\n if (!sw) {\n break;\n }\n }\n\n // body.. something..\n if (!rr.resIsDone()) {\n const routerModule = await super.routing(rr.reqIntent);\n otherStorage.set(RouterModule, routerModule);\n const moduleInstance = routerModule?.getModuleInstance?.();\n let methods: SaveMappingConfig[] = [];\n if (routerModule && moduleInstance) {\n // router \uD074\uB798\uC2A4 \uB0B4\uBD80\uC5D0\uC11C \uC120\uC5B8\uB41C Route\uC77C\uB54C\n if (routerModule.propertyKeys) {\n const map = routerModule.propertyKeys?.map((it: string | symbol) => {\n return {propertyKey: it, config: getUrlMapping(moduleInstance, it)} as SaveMappingConfig\n });\n methods.push(...(map ?? []));\n } else {\n methods.push(...(getUrlMappings(moduleInstance).filter(it => !getRoute(moduleInstance, it.propertyKey)) ?? []));\n }\n\n // options\uB85C \uC694\uCCAD\uC624\uBA74\uC740 allow\uB85C \uB123\uACE0 \uADF8\uB0E5 200\uCC98\uB9AC\uD574\uC57C\uB428.\n if (rr.reqMethod()?.toUpperCase() === HttpMethod.OPTIONS.toUpperCase()) {\n rr.resSetHeader(HttpHeaders.Allow, methods.map(it => it.config.method).join(', '));\n rr.resStatusCode(HttpStatus.Ok);\n }\n\n // method \uCC3E\uAE30\n methods = methods.filter(it => it && it.propertyKey && it.config && rr.reqMethod()?.toUpperCase() === it.config.method.toUpperCase());\n methods.sort((a, b) => {\n return ((b.config?.req?.contentType?.length ?? 0) + (b.config?.req?.accept?.length ?? 0)) - ((a.config?.req?.contentType?.length ?? 0) + (a.config?.req?.accept?.length ?? 0));\n });\n methods = methods\n .filter(it => it.config?.req?.contentType ? (!!it.config?.req?.contentType?.find(sit => rr.reqHasContentTypeHeader(sit))) : true)\n .filter(it => it.config?.req?.accept ? (!!it.config?.req?.accept?.find(sit => rr.reqHasAcceptHeader(sit))) : true);\n\n if (methods[0]) {\n const it = methods[0];\n const paramTypes = ReflectUtils.getParameterTypes(moduleInstance, it.propertyKey)\n const injects = getInject(moduleInstance, it.propertyKey);\n const validIndexs = getValidIndex(moduleInstance, it.propertyKey);\n if (injects) {\n const isJson = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_JSON_BODY);\n const isFormUrl = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_FORM_URL_BODY);\n const isTransactionManager = injects.find(it => it.config?.situationType === InjectSituationType.TransactionManager);\n const siturationContainers = new SituationTypeContainers();\n if (isJson) {\n let data = await rr.reqBodyJsonData()\n if (isJson.type) {\n data = Object.assign(new isJson.type(), data);\n }\n if (validIndexs.includes(isJson.index)) {\n const inValid = execValidationInValid(data);\n if ((inValid?.length ?? 0) > 0) {\n throw new ValidException(inValid);\n }\n }\n siturationContainers.push(new SituationTypeContainer({\n situationType: UrlMappingSituationType.REQ_JSON_BODY,\n data\n }));\n }\n if (isFormUrl) {\n let data = await rr.reqBodyFormUrlData()\n if (isFormUrl.type) {\n data = Object.assign(new isFormUrl.type(), data);\n }\n if (validIndexs.includes(isFormUrl.index)) {\n const inValid = execValidationInValid(data);\n if ((inValid?.length ?? 0) > 0) {\n throw new ValidException(inValid);\n }\n }\n siturationContainers.push(new SituationTypeContainer({situationType: UrlMappingSituationType.REQ_FORM_URL_BODY, data}));\n }\n\n if (isTransactionManager && isTransactionManager.type && transactionManager && transactionManager.hasTransaction(isTransactionManager.type)) {\n let data = await transactionManager.getTransaction(isTransactionManager.type);\n if (data) {\n data = await data.try(isTransactionManager.config.argument);\n siturationContainers.push(new SituationTypeContainer({situationType: InjectSituationType.TransactionManager, data, index: isTransactionManager.index}));\n }\n }\n if (siturationContainers.length) {\n otherStorage.set(SituationTypeContainers, siturationContainers);\n }\n }\n\n for (const paramType of paramTypes) {\n if (paramType === ReqFormUrlBody) {\n otherStorage.set(ReqFormUrlBody, await rr.reqBodyReqFormUrlBody())\n } else if (paramType === ReqJsonBody) {\n otherStorage.set(ReqJsonBody, await rr.reqBodyReqJsonBody())\n } else if (paramType === URLSearchParams) {\n otherStorage.set(URLSearchParams, rr.reqUrlSearchParams)\n } else if (paramType === ReqMultipartFormBody) {\n otherStorage.set(ReqMultipartFormBody, rr.reqBodyMultipartFormData())\n } else if (paramType === ReqHeader) {\n otherStorage.set(ReqHeader, rr.reqHeaderObj)\n }\n }\n\n // execute !!!\n let data = await this.simstanceManager.executeBindParameterSimPromise({\n target: moduleInstance,\n targetKey: it.propertyKey\n }, otherStorage);\n /*\n \uC5EC\uAE30\uC5D0\uC11C \uC815\uD574\uC9C4 \uD0C0\uC785 \uB9AC\uD134\uC5D0 \uB530\uB978 \uC870\uCE58\n ...\n */\n if (it.config?.resolver) {\n const execute = typeof it.config.resolver === 'function' ? this.simstanceManager.getOrNewSim({target:it.config.resolver}) : it.config.resolver;\n data = await execute?.resolve?.(data, rr);\n }\n const status = it.config?.res?.status ?? HttpStatus.Ok;\n const headers = it.config?.res?.header ?? {};\n if (it.config?.res?.contentType) {\n headers[HttpHeaders.ContentType] = it.config?.res?.contentType;\n }\n if ((it.config?.res?.contentType?.toLowerCase().indexOf(Mimes.ApplicationJson.toLowerCase()) ?? -1) > -1) {\n data = JSON.stringify(data);\n } else if (data && typeof data === 'object') {\n data = JSON.stringify(data);\n }\n rr.resSetHeaders(headers)\n rr.resSetStatusCode(status); \n rr.resWrite(data);\n }\n }\n\n if (this.option.noSuchRouteEndPointMappingThrow && methods.length <= 0 && rr.reqMethod()?.toUpperCase() !== HttpMethod.OPTIONS) {\n throw this.option.noSuchRouteEndPointMappingThrow(rr);\n }\n }\n\n // after\n for (const it of filter.filters.reverse()) {\n if (it.filter?.proceedAfter && !await it.filter.proceedAfter({rr, app:this, before: it.sw, carrier: filter.carrier})) {\n break;\n }\n }\n } catch (e) {\n transactionManager?.catch(e);\n rr.resStatusCode(e instanceof HttpError ? e.status : HttpStatus.InternalServerError)\n const execute = typeof this.option.globalAdvice === 'function' ? this.simstanceManager.getOrNewSim(this.option.globalAdvice) : this.option.globalAdvice;\n if (!execute) {\n rr.resEnd();\n // rr.resEnd().catch(e => {\n // });\n return;\n }\n if (e && typeof e === 'object') {\n otherStorage.set(e.constructor as ConstructorType<any>, e);\n otherStorage.set(SituationTypeContainer, new SituationTypeContainer({\n situationType: ExceptionHandlerSituationType.ERROR_OBJECT,\n data: e\n }));\n }\n const target = targetExceptionHandler(execute, e);\n if (target) {\n await this.simstanceManager.executeBindParameterSimPromise({\n target: execute,\n targetKey: target.propertyKey\n }, otherStorage);\n }\n } finally {\n transactionManager?.finally();\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n\n this.server.listen(this.option.listen.port, this.option.listen.hostname, this.option.listen.backlog, () => {\n this.option.listen.listeningListener?.(this, this.server);\n });\n }\n}\n", "import { InitOptionType, SimOption } from '@dooboostore/simple-boot/SimOption';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { Server as HttpServer, ServerOptions } from 'http';\nimport { Server as HttpsServer, ServerOptions as HttpsServerOption } from 'https';\nimport { Filter } from '../filters/Filter';\nimport { EndPoint } from '../endpoints/EndPoint';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { TransactionManager } from '@dooboostore/core/transaction/TransactionManager';\n\nexport type Listen = { port?: number, hostname?: string, backlog?: number, listeningListener?: (server: SimpleBootHttpServer, httpServer: HttpServer | HttpsServer) => void };\n\nexport interface ListenData extends Listen {\n port: number;\n hostname: string;\n}\n\nexport class HttpServerOption extends SimOption {\n public static readonly DEFAULT_PORT = 8081;\n public static readonly DEFAULT_HOSTNAME = '127.0.0.1';\n public serverOption?: ServerOptions | HttpsServerOption;\n public listen: ListenData;\n public filters?: (Filter | ConstructorType<Filter>)[];\n public fileUploadTempPath?: string;\n public requestEndPoints?: (EndPoint | ConstructorType<EndPoint>)[];\n public closeEndPoints?: (EndPoint | ConstructorType<EndPoint>)[];\n public errorEndPoints?: (EndPoint | ConstructorType<EndPoint>)[];\n public sessionOption: { key: string, expiredTime: number, provider?: { uuids: () => Promise<string[]>, delete: (uuid: string) => Promise<void>, get: (uuid: string) => Promise<{ access: number, data?: any }>, set: (uuid: string, data: { access: number, data?: any }) => Promise<void> } };\n public globalAdvice?: any | ConstructorType<any>;\n public noSuchRouteEndPointMappingThrow?: (rr: RequestResponse) => any;\n public transactionManagerFactory?: () => TransactionManager;\n\n constructor({serverOption, listen, filters, requestEndPoints, closeEndPoints, errorEndPoints, sessionOption, globalAdvice, fileUploadTempPath,noSuchRouteEndPointMappingThrow, transactionManagerFactory}: {\n serverOption?: ServerOptions | HttpsServerOption,\n listen?: Listen,\n filters?: (Filter | ConstructorType<Filter>)[],\n requestEndPoints?: (EndPoint | ConstructorType<EndPoint>)[],\n closeEndPoints?: (EndPoint | ConstructorType<EndPoint>)[],\n errorEndPoints?: (EndPoint | ConstructorType<EndPoint>)[],\n sessionOption?: { key?: string, expiredTime?: number, provider?: { uuids: () => Promise<string[]>, delete: (uuid: string) => Promise<void>, get: (uuid: string) => Promise<{ access: number, data?: any }>, set: (uuid: string, data: { access: number, data?: any }) => Promise<void> } },\n globalAdvice?: any | ConstructorType<any>,\n fileUploadTempPath?: string,\n noSuchRouteEndPointMappingThrow?: (rr: RequestResponse) => any,\n transactionManagerFactory?: () => TransactionManager\n } = {}, initSimOption?: InitOptionType) {\n super(initSimOption);\n this.serverOption = serverOption;\n this.listen = Object.assign({port: HttpServerOption.DEFAULT_PORT, hostname: HttpServerOption.DEFAULT_HOSTNAME}, listen);\n this.filters = filters;\n this.requestEndPoints = requestEndPoints;\n this.closeEndPoints = closeEndPoints;\n this.errorEndPoints = errorEndPoints;\n this.sessionOption = Object.assign({key: 'SBSESSIONID', expiredTime: 1000 * 60 * 30}, sessionOption);\n this.globalAdvice = globalAdvice;\n this.fileUploadTempPath=fileUploadTempPath;\n this.noSuchRouteEndPointMappingThrow = noSuchRouteEndPointMappingThrow;\n this.transactionManagerFactory = transactionManagerFactory;\n }\n\n get hostname() {\n return this.listen.hostname;\n }\n\n get port() {\n return this.listen.port;\n }\n\n get protocol() {\n return this.isSecure ? 'https' : 'http';\n }\n\n get address() {\n return `${this.protocol}://${this.hostname}:${this.port}`;\n }\n\n get isSecure() {\n return this.serverOption && 'key' in this.serverOption && 'cert' in this.serverOption;\n }\n \n \n}\n", "export enum HttpHeaders {\n ContentLength = 'Content-Length',\n ContentType = 'Content-Type',\n ContentEncoding = 'Content-Encoding',\n Accept = 'Accept',\n Authorization = 'Authorization',\n CacheControl = 'Cache-Control',\n Connection = 'Connection',\n Date = 'Date',\n Host = 'Host',\n Pragma = 'Pragma',\n Trailer = 'Trailer',\n TransferEncoding = 'Transfer-Encoding',\n Upgrade = 'Upgrade',\n Via = 'Via',\n Warning = 'Warning',\n AcceptCharset = 'Accept-Charset',\n AcceptEncoding = 'Accept-Encoding',\n AcceptLanguage = 'Accept-Language',\n AccessControlAllowOrigin = 'Access-Control-Allow-Origin',\n AccessControlAllowMethods = 'Access-Control-Allow-Methods',\n AccessControlAllowHeaders = 'Access-Control-Allow-Headers',\n AccessControlExposeHeaders = 'Access-Control-Expose-Headers',\n Expect = 'Expect',\n From = 'From',\n MaxForwards = 'Max-Forwards',\n Referer = 'Referer',\n UserAgent = 'User-Agent',\n Cookie = 'Cookie',\n SetCookie = 'Set-Cookie',\n // SetHeader = 'Set-Header',\n Cookie2 = 'Cookie2',\n SetCookie2 = 'Set-Cookie2',\n Location = 'Location',\n IfModifiedSince = 'If-Modified-Since',\n IfUnmodifiedSince = 'If-Unmodified-Since',\n IfMatch = 'If-Match',\n IfNoneMatch = 'If-None-Match',\n IfRange = 'If-Range',\n Allow = 'Allow',\n Server = 'Server'\n}", "import { IncomingMessage, OutgoingHttpHeader, OutgoingHttpHeaders, ServerResponse } from 'http';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { Mimes } from '../codes/Mimes';\nimport { Intent } from '@dooboostore/simple-boot/intent/Intent';\nimport { URL, URLSearchParams } from 'url';\nimport { Buffer } from 'buffer';\nimport { MultipartData } from './datas/MultipartData';\nimport { ReqFormUrlBody } from './datas/body/ReqFormUrlBody';\nimport { ReqJsonBody } from './datas/body/ReqJsonBody';\nimport { ReqHeader } from './datas/ReqHeader';\nimport { ReqMultipartFormBody } from './datas/body/ReqMultipartFormBody';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { gzip } from 'node-gzip';\nimport { SessionManager } from '../session/SessionManager';\nimport { HttpServerOption } from '../option/HttpServerOption';\nimport * as fs from 'fs';\nimport * as os from 'os';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\nimport { FileUtils } from '@dooboostore/core-node/file/FileUtils';\nimport { ConvertUtils as CoreConvertUtils} from '@dooboostore/core/convert/ConvertUtils';\nimport { ConvertUtils } from '@dooboostore/core-node/convert/ConvertUtils';\n// https://masteringjs.io/tutorials/node/http-request\ntype Config = { sessionManager?: SessionManager, option: HttpServerOption };\n\n// https://nodejs.org/ko/docs/guides/anatomy-of-an-http-transaction/\nexport class RequestResponse {\n protected resWriteChunk: string | Buffer | undefined;\n protected reqBodyChunk?: Buffer;\n protected req: IncomingMessage;\n protected res: ServerResponse;\n protected config: Config;\n // protected sessionManager?: SessionManager;\n\n // constructor(req: IncomingMessage, res: ServerResponse);\n // constructor(req: RequestResponse);\n // constructor(req: IncomingMessage, res: ServerResponse, sessionManager?: SessionManager);\n // constructor(req: IncomingMessage | RequestResponse, res?: ServerResponse, sessionManager?: SessionManager) {\n // // this.req = req;\n // // this.res = res;\n // if (req instanceof RequestResponse) {\n // this.req = req.req;\n // this.res = req.res;\n // this.sessionManager = req.sessionManager;\n // } else {\n // this.req = req;\n // this.res = res!;\n // this.sessionManager = sessionManager;\n // }\n // }\n constructor(req: IncomingMessage | RequestResponse, res: ServerResponse, config: Config) {\n // this.req = req;\n // this.res = res;\n if (req instanceof RequestResponse) {\n this.req = req.req;\n this.res = req.res;\n this.config = config;\n } else {\n this.req = req;\n this.res = res!;\n this.config = config;\n }\n }\n\n get reqSocket() {\n return this.req.socket;\n }\n\n get reqCookieMap() {\n let cookies = this.reqHeader(HttpHeaders.Cookie) ?? '';\n if (Array.isArray(cookies)) {\n cookies = cookies.join(';')\n }\n\n const map = new Map<string, string>();\n cookies.split(';').map(it => it.trim().split('=')).forEach(it => {\n map.set(it[0], it[1]);\n });\n return map;\n }\n\n reqCookieGet(key: string) {\n return this.reqCookieMap.get(key);\n }\n\n get reqRemoteAddress(): string | undefined {\n const ipHeader = this.req.headers['x-forwarded-for'];\n let ip = this.req.socket.remoteAddress;\n if (Array.isArray(ipHeader)) {\n ip = ipHeader.join(',').split(',').shift();\n } else if (typeof ipHeader === 'string') {\n ip = ipHeader.split(',').shift();\n }\n return ip;\n }\n\n get reqUrlObject(): URL {\n return new URL(this.reqUrl, `${this.reqSocket ? 'https://' : 'http'}${this.reqHost ?? 'localhost'}`);\n }\n\n get reqUrlPathName(): string {\n // parse(rr.reqUrl ?? '', true)\n return this.reqUrlObj().pathname ?? '';\n }\n\n get reqUrl(): string {\n return this.req.url ?? '';\n }\n\n reqUrlObj(config?:{scheme?: string, host?: string}): URL {\n return new URL(`${config?.scheme??'http' }://${config?.host ? config?.host : (this.reqHeaderFirst(HttpHeaders.Host) ?? 'localhost')}${this.req.url ?? ''}`);\n }\n\n get reqUrlSearchParamTuples(): [string, string][] {\n return Array.from(this.reqUrlObj().searchParams as any);\n }\n\n get reqUrlSearchParams(): URLSearchParams {\n return this.reqUrlObj().searchParams;\n }\n\n get reqUrlSearchParamsObj(): {[p: string]: string | string[]} {\n const entries = this.reqUrlObj().searchParams;\n return CoreConvertUtils.toObject(entries);\n // return obj;\n // return Object.fromEntries(entries as any)\n }\n\n get reqPathSearchParamUrl(): string {\n const reqUrlObj = this.reqUrlObj();\n return reqUrlObj.pathname + (reqUrlObj.searchParams.toString() ? '?' + reqUrlObj.searchParams.toString() : '')\n }\n\n get reqReadable() {\n return this.req.readable;\n }\n\n get reqIntent() {\n return new Intent(this.reqPathSearchParamUrl);\n }\n\n reqHasContentTypeHeader(mime: Mimes | string): boolean {\n return (this.reqHeaderFirst(HttpHeaders.ContentType) ?? '').toLowerCase().indexOf(mime.toLocaleLowerCase()) > -1;\n }\n\n reqHasAcceptHeader(mime: Mimes | string): boolean {\n return (this.reqHeaderFirst(HttpHeaders.Accept) ?? '').toLowerCase().indexOf(mime.toLocaleLowerCase()) > -1;\n }\n\n reqBodyData(): Promise<Buffer> {\n return new Promise<Buffer>((resolve, reject) => {\n if (this.reqReadable) {\n const data: Uint8Array[] = [];\n this.req.on('data', (chunk) => data.push(chunk));\n this.req.on('error', err => reject(err));\n this.req.on('end', () => {\n this.reqBodyChunk = Buffer.concat(data);\n resolve(this.reqBodyChunk);\n });\n } else {\n resolve(this.reqBodyChunk ?? Buffer.alloc(0));\n }\n });\n }\n \n resBodyData(): string | Buffer | undefined{\n return this.resWriteChunk;\n }\n\n\n\n async reqBodyMultipartFormDataObject<T>(): Promise<T> {\n const m = await this.reqBodyMultipartFormData();\n const formData = {} as any;\n\n for (const it of m) {\n if (it.isFile) {\n formData[it.name] = await FileUtils.writeFile(it.value, {originalName: it.filename });\n } else {\n const target = formData[it.name];\n if (Array.isArray(target)) {\n target.push(it.value);\n } else if (typeof target === 'string') {\n formData[it.name] = [target, it.value]\n } else {\n formData[it.name] = it.value;\n }\n }\n };\n return formData;\n }\n\n reqBodyMultipartFormData(): Promise<MultipartData[]> {\n return new Promise((resolve, reject) => {\n const contentTypeHeader = this.req.headers['content-type'];\n if (!contentTypeHeader || !contentTypeHeader.startsWith('multipart/form-data')) {\n return reject(new Error('Invalid Content-Type. Expected multipart/form-data.'));\n }\n\n const boundaryMatch = contentTypeHeader.match(/boundary=(?:\"([^\"]+)\"|([^;]+))/i);\n if (!boundaryMatch) {\n return reject(new Error('Boundary not found in Content-Type header.'));\n }\n const boundary = boundaryMatch[1] || boundaryMatch[2]; // \uB530\uC634\uD45C \uC720\uBB34 \uCC98\uB9AC\n if (!boundary) {\n return reject(new Error('Failed to extract boundary.'));\n }\n\n const boundaryBuffer = Buffer.from(`--${boundary}`);\n const crlfBuffer = Buffer.from('\\r\\n');\n const doubleCrlfBuffer = Buffer.from('\\r\\n\\r\\n'); // \uD5E4\uB354\uC640 \uBC14\uB514 \uAD6C\uBD84\uC790\n\n const chunks: Buffer[] = [];\n let totalLength = 0;\n\n this.req.on('data', (chunk: Buffer) => {\n chunks.push(chunk);\n totalLength += chunk.length;\n });\n\n this.req.on('error', (err) => {\n reject(err);\n });\n\n this.req.on('end', () => {\n if (totalLength === 0) {\n return resolve([]); // \uBE48 \uC694\uCCAD \uCC98\uB9AC\n }\n\n const fullBuffer = Buffer.concat(chunks, totalLength);\n const parsedParts: MultipartData[] = [];\n let currentPosition = 0;\n\n // \uCCAB \uBC88\uC9F8 boundary \uCC3E\uAE30 (\uBCF4\uD1B5 \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC788\uC74C)\n let boundaryStartIndex = fullBuffer.indexOf(boundaryBuffer, currentPosition);\n if (boundaryStartIndex === -1) {\n return reject(new Error('Initial boundary not found.'));\n }\n // boundary \uBC14\uB85C \uB2E4\uC74C \\r\\n \uAC74\uB108\uB6F0\uAE30\n currentPosition = boundaryStartIndex + boundaryBuffer.length;\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n\n\n while (currentPosition < fullBuffer.length) {\n // \uB2E4\uC74C boundary \uCC3E\uAE30 (\uD30C\uD2B8\uC758 \uB05D)\n const nextBoundaryIndex = fullBuffer.indexOf(boundaryBuffer, currentPosition);\n if (nextBoundaryIndex === -1) {\n // \uB9C8\uC9C0\uB9C9 boundary (--)\uC778\uC9C0 \uD655\uC778 \uD544\uC694\uD558\uB098, \uC5EC\uAE30\uC11C\uB294 \uB2E8\uC21C\uD558\uAC8C \uCC98\uB9AC\n // console.warn('Next boundary not found, assuming end of data or malformed.');\n break;\n }\n\n // \uD604\uC7AC \uD30C\uD2B8 \uB370\uC774\uD130 \uCD94\uCD9C (boundary \uC774\uC804\uAE4C\uC9C0)\n // \uC2E4\uC81C \uD30C\uD2B8 \uB370\uC774\uD130\uB294 \uB2E4\uC74C boundary \uBC14\uB85C \uC55E\uC758 \\r\\n\uC744 \uC81C\uC678\uD574\uC57C \uD568\n let partEndIndex = nextBoundaryIndex;\n if (partEndIndex > crlfBuffer.length && fullBuffer.slice(partEndIndex - crlfBuffer.length, partEndIndex).equals(crlfBuffer)) {\n partEndIndex -= crlfBuffer.length;\n }\n const partBuffer = fullBuffer.slice(currentPosition, partEndIndex);\n\n // \uD5E4\uB354\uC640 \uBC14\uB514 \uBD84\uB9AC\n const headerBodySeparatorIndex = partBuffer.indexOf(doubleCrlfBuffer);\n if (headerBodySeparatorIndex === -1) {\n console.warn('Skipping malformed part: no header/body separator found.');\n currentPosition = nextBoundaryIndex + boundaryBuffer.length;\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n if (fullBuffer.slice(currentPosition, currentPosition + 2).toString() === '--') break; // \uB9C8\uC9C0\uB9C9 boundary\n continue;\n }\n\n const headerBuffer = partBuffer.slice(0, headerBodySeparatorIndex);\n const bodyBuffer = partBuffer.slice(headerBodySeparatorIndex + doubleCrlfBuffer.length);\n const headersStr = headerBuffer.toString('utf-8'); // \uD5E4\uB354\uB294 \uBCF4\uD1B5 ASCII/UTF-8\n\n // \uD5E4\uB354 \uD30C\uC2F1\n const headers: { [key: string]: string } = {};\n headersStr.split('\\r\\n').forEach(line => {\n const colonIndex = line.indexOf(':');\n if (colonIndex > 0) {\n const key = line.substring(0, colonIndex).trim().toLowerCase();\n const value = line.substring(colonIndex + 1).trim();\n headers[key] = value;\n }\n });\n\n const contentDisposition = headers['content-disposition'];\n if (!contentDisposition) {\n console.warn('Skipping part: no Content-Disposition header.');\n currentPosition = nextBoundaryIndex + boundaryBuffer.length;\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n if (fullBuffer.slice(currentPosition, currentPosition + 2).toString() === '--') break;\n continue;\n }\n\n const nameMatch = contentDisposition.match(/name=\"([^\"]+)\"/i);\n const filenameMatch = contentDisposition.match(/filename=\"([^\"]+)\"/i);\n\n const name = nameMatch ? nameMatch[1] : null;\n const filename = filenameMatch ? filenameMatch[1] : null;\n const contentType = headers['content-type'] || null;\n\n if (name) {\n\n const isFile = !!filename;\n // @ts-ignore\n const multipartData:MultipartData = {\n name:name,\n isFile: isFile, // filename\uC774 \uC788\uC73C\uBA74 \uD30C\uC77C\uB85C \uAC04\uC8FC\n filename: filename,\n contentType: contentType,\n value: isFile ? bodyBuffer: bodyBuffer.toString('utf-8'),\n }\n parsedParts.push(multipartData);\n } else {\n console.warn(\"Skipping part: 'name' not found in Content-Disposition.\");\n }\n\n // \uB2E4\uC74C \uD30C\uD2B8 \uC2DC\uC791 \uC704\uCE58\uB85C \uC774\uB3D9\n currentPosition = nextBoundaryIndex + boundaryBuffer.length;\n // boundary \uBC14\uB85C \uB2E4\uC74C \\r\\n \uAC74\uB108\uB6F0\uAE30\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n\n // \uB9C8\uC9C0\uB9C9 boundary (--)\uC778\uC9C0 \uD655\uC778\uD558\uACE0 \uB8E8\uD504 \uC885\uB8CC\n if (fullBuffer.slice(currentPosition, currentPosition + 2).toString() === '--') {\n break;\n }\n }\n resolve(parsedParts);\n });\n })\n // const form = formidable({});\n // return new Promise((resolve, reject) => {\n // form.parse(this.req, (err, fields, files) => {\n // if (err) {\n // reject(err);\n // return;\n // }\n //\n // console.log('----', files)\n // // this.res.set('Content-Type', 'application/json');\n // // ctx.status = 200;\n // // ctx.state = { fields, files };\n // // ctx.body = JSON.stringify(ctx.state, null, 2);\n // resolve(' ' as any);\n // });\n // });\n\n // return new Promise<MultipartData<any>[]>((resolve, reject) => {\n //\n //\n // const contentType = this.req.headers['content-type'];\n // const boundary = contentType.split('boundary=')[1];\n //\n // let body: Uint8Array[] = [];\n // this.req.on('data', chunk => body.push(chunk));\n // this.req.on('end', async () => {\n // const buffer = Buffer.concat(body);\n // // Boundary\uB85C \uD30C\uD2B8 \uBD84\uB9AC\n // const parts = buffer.toString().split(`--${boundary}`).slice(1, -1);\n // let jsonData = {};\n // let fileData = null;\n //\n // for (let part of parts) {\n // const [headerPart, ...bodyParts] = part.split('\\r\\n\\r\\n');\n // const headers = headerPart.split('\\r\\n').reduce((acc, line) => {\n // const [key, value] = line.split(': ').map(s => s.trim().toLowerCase());\n // if (key) acc[key] = value;\n // return acc;\n // }, {});\n //\n // const content = bodyParts.join('\\r\\n\\r\\n').trim();\n // const disposition = headers['content-disposition'];\n // const name = disposition?.match(/name=\"([^\"]+)\"/)?.[1];\n // const filename = disposition?.match(/filename=\"([^\"]+)\"/)?.[1];\n //\n // if (filename) {\n // // \uD30C\uC77C \uB370\uC774\uD130 (Blob)\n // fileData = { filename, contentType: headers['content-type'], data: Buffer.from(content, 'binary') };\n // } else if (name) {\n // // \uD14D\uC2A4\uD2B8 \uB370\uC774\uD130\n // if (name === 'metadata') jsonData = JSON.parse(content);\n // }\n // }\n //\n // // \uD30C\uC77C \uC800\uC7A5\n // if (fileData) {\n //\n //\n //\n //\n // const uploadPath = this.config.option.fileUploadTempPath || os.tmpdir();\n // fs.mkdirSync(uploadPath, { recursive: true }); // \uD3F4\uB354\uAC00 \uC5C6\uC73C\uBA74 \uC0DD\uC131\n // const saveTempPath = `${uploadPath}/${RandomUtils.uuid4()}${fileData.filename}`;\n // console.log('saveTempPathsaveTempPath', saveTempPath)\n // await fs.promises.writeFile(saveTempPath, fileData.data);\n // this.res.writeHead(200, { 'Content-Type': 'application/json' });\n // this.res.end(JSON.stringify({ message: '\uC5C5\uB85C\uB4DC \uC131\uACF5', jsonData, filename: fileData?.filename }));\n // // const uploadPath = this.config.option.fileUploadTempPath ;\n // // fs.mkdirSync(uploadPath, { recursive: true }); // \uD3F4\uB354\uAC00 \uC5C6\uC73C\uBA74 \uC0DD\uC131\n // // await fs.writeFile(`${uploadPath}/${fileData.filename}`, fileData.data);\n // }\n // });\n // });\n }\n\n async reqBodyStringData(): Promise<string> {\n const data = (await this.reqBodyData()).toString()\n return data;\n }\n\n async reqBodyJsonData<T>(): Promise<T> {\n return JSON.parse(await this.reqBodyStringData());\n }\n\n async reqBodyFormUrlData<T>(): Promise<T> {\n const data = (await this.reqBodyStringData())\n const formData = {} as any;\n Array.from(new URLSearchParams(data).entries()).forEach(([k, v]) => {\n const target = formData[k];\n if (Array.isArray(target)) {\n target.push(v);\n } else if (typeof target === 'string') {\n formData[k] = [target, v]\n } else {\n formData[k] = v;\n }\n });\n return formData;\n }\n\n async reqBodyReqFormUrlBody() {\n const data = await this.reqBodyFormUrlData()\n return Object.assign(new ReqFormUrlBody(), data);\n }\n\n async reqBodyReqJsonBody(): Promise<ReqJsonBody> {\n const data = (await this.reqBodyStringData());\n return Object.assign(new ReqJsonBody(), data ? JSON.parse(data) : {})\n }\n\n // reqBodyReqMultipartFormBody(): Promise<ReqMultipartFormBody> {\n // return this.reqBodyMultipartFormData().then(it => new ReqMultipartFormBody(it))\n // }\n\n resBodyJsonData<T>(): (T | null) {\n const data = ConvertUtils.toString(this.resBodyData());\n return data ? JSON.parse(data) : null;\n }\n\n resBodyStringData() {\n return ConvertUtils.toString(this.resBodyData());\n }\n\n reqMethod() {\n return this.req.method?.toUpperCase();\n }\n\n reqHeader(key: HttpHeaders | string) {\n return this.req.headers[key.toLowerCase()];\n }\n\n get reqHost() {\n return this.reqHeaderFirst(HttpHeaders.Host)\n }\n\n get reqHeaderObj(): ReqHeader {\n const h = new ReqHeader();\n Object.entries(this.req.headers).forEach(([k, v]) => {\n h[k] = v;\n });\n return h;\n }\n\n reqHeaderFirst(key: HttpHeaders | string, defaultValue?: string) {\n const header = this.req.headers[key.toLowerCase()];\n if (header && Array.isArray(header)) {\n return header[0] ?? defaultValue;\n } else {\n return (header as string) ?? defaultValue;\n }\n }\n\n public reqAuthorizationHeader() {\n return this.reqHeaderFirst(HttpHeaders.Authorization);\n }\n\n reqRefreshTokenHeader() {\n return this.reqHeaderFirst(HttpHeaders.Authorization);\n }\n\n resStatusCode(code?: undefined): number;\n // eslint-disable-next-line no-dupe-class-members\n resStatusCode(code: number | HttpStatus): RequestResponseChain<number>;\n // eslint-disable-next-line no-dupe-class-members\n resStatusCode(code: number | undefined | HttpStatus): number | RequestResponseChain<number> {\n if (code) {\n this.res.statusCode = code;\n return new RequestResponseChain<number>(this.req, this.res, this.config, this.res.statusCode);\n } else {\n return this.res.statusCode;\n }\n }\n\n resHeader(key: HttpHeaders | string) {\n return this.res.getHeader(key.toLowerCase());\n }\n\n resHeaderFirst(key: HttpHeaders | string, defaultValue?: string) {\n const header = this.res.getHeader(key.toLowerCase());\n if (header && Array.isArray(header)) {\n return header[0] ?? defaultValue;\n } else {\n return header ?? defaultValue;\n }\n }\n\n async reqSession(): Promise<{ [key: string]: any }> {\n if (this.config.sessionManager) {\n return (await this.config.sessionManager.session(this)).dataSet.data;\n } else {\n return Promise.reject(new Error('Not SessionManager'));\n }\n }\n\n reqSessionSet(key: string, value: any): void {\n (this.reqSession as any)[key] = value;\n }\n\n reqSessionGet<T = any>(key: string): T | undefined {\n const session = this.reqSession as any;\n if (session) {\n return session[key] as T;\n }\n }\n\n resSetStatusCode(statusCode: number) {\n this.res.statusCode = statusCode;\n return this.createRequestResponseChain(this.res.statusCode);\n }\n\n // resEnd() {\n // this.res.end();\n // }\n\n // eslint-disable-next-line no-undef\n resWrite(chunk: string | Buffer | any, encoding: BufferEncoding = 'utf8') {\n this.resWriteChunk = chunk;\n return this.createRequestResponseChain(this.resWriteChunk);\n }\n\n // eslint-disable-next-line no-undef\n resWriteJson(chunk: any, encoding: BufferEncoding = 'utf8') {\n return this.resWrite(JSON.stringify(chunk), encoding);\n }\n\n resSetHeader(key: HttpHeaders | string, value: string | string[]) {\n return this.createRequestResponseChain(this.res.setHeader(key.toLowerCase(), value));\n }\n\n resAddHeader(key: HttpHeaders | string, value: string | string[]) {\n const existingValue = this.res.getHeader(key.toLowerCase());\n const newValue = Array.isArray(existingValue)\n ? existingValue.concat(value)\n : existingValue\n ? [existingValue.toString(), ...[].concat(value)]\n : value;\n return this.createRequestResponseChain(this.res.setHeader(key.toLowerCase(), newValue));\n }\n\n resSetHeaders(headers: { [key: string]: string | string[] }) {\n Object.entries(headers).forEach(([key, value]) => this.resSetHeader(key, value));\n return this.createRequestResponseChain();\n }\n\n resAddHeaders(headers: { [key: string]: string | string[] }) {\n Object.entries(headers).forEach(([key, value]) => this.resAddHeader(key, value));\n return this.createRequestResponseChain();\n }\n\n // \uB9C8\uC9C0\uB9C9 \uC885\uB8CC\uB420\uB54C \uD0C0\uB294\uAC70.\n private async resEndChunk() {\n const encoding = this.reqHeaderFirst(HttpHeaders.AcceptEncoding);\n let data = this.resWriteChunk;\n if (encoding?.includes('gzip')) {\n data = await gzip(data);\n this.resSetHeader(HttpHeaders.ContentEncoding, 'gzip');\n }\n this.res.end(data);\n }\n\n async resEnd(chunk?: string | Buffer) {\n this.resWriteChunk = chunk ?? this.resWriteChunk;\n if (this.req.readable) {\n await this.reqBodyData();\n await this.resEndChunk();\n } else {\n await this.resEndChunk();\n }\n }\n\n // writeContinue(callback?: () => void) {\n // this.res.writeContinue(callback);\n // return new RequestResponseChain(this.req, this.res);\n // }\n\n // reqWrite(chunk?: any) {\n // this.resWriteChunk = chunk;\n // // this.res.write(chunk);\n // return this.createRequestResponseChain();\n // }\n\n resWriteHead(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[] | { [key: string]: string | string[] }) {\n return this.createRequestResponseChain(this.res.writeHead(statusCode, headers));\n }\n resWriteHeadEnd(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[] | { [key: string]: string | string[] }) {\n this.createRequestResponseChain(this.res.writeHead(statusCode, headers));\n this.res.end();\n }\n\n resIsDone() {\n return this.res.finished || this.res.writableEnded || this.res.headersSent;\n // return new RequestResponseChain(this.req, this.res, this.res.finished || this.res.writableEnded);\n }\n\n createRequestResponseChain<T = any>(data?: T) {\n const requestResponseChain = new RequestResponseChain(this.req, this.res, this.config, data);\n requestResponseChain.resWriteChunk = this.resWriteChunk;\n requestResponseChain.reqBodyChunk = this.reqBodyChunk;\n return requestResponseChain;\n }\n\n // res.on(\"readable\", () => {\n // console.log('readable???')\n // });\n // res.on('complete', function (details) {\n // var size = details.req.bytes;\n // console.log('complete-->', size)\n // });\n // res.on('finish', function() {\n // console.log('finish??');\n // });\n // res.on('end', () => {\n // console.log('end--?')\n // });\n}\n\nexport class RequestResponseChain<T> extends RequestResponse {\n constructor(req: IncomingMessage, res: ServerResponse, config: Config, public result?: T) {\n super(req, res, config);\n }\n}", "export class ReqFormUrlBody {\n [key: string]: string | string[]\n}", "export class ReqJsonBody {\n [key: string]: any\n}", "import {IncomingHttpHeaders} from 'http';\n\nexport class ReqHeader implements IncomingHttpHeaders {\n [key: string]: string | string[] | undefined;\n\n 'accept-language': string | undefined;\n 'accept-patch': string | undefined;\n 'accept-ranges': string | undefined;\n 'access-control-allow-credentials': string | undefined;\n 'access-control-allow-headers': string | undefined;\n 'access-control-allow-methods': string | undefined;\n 'access-control-allow-origin': string | undefined;\n 'access-control-expose-headers': string | undefined;\n 'access-control-max-age': string | undefined;\n 'access-control-request-headers': string | undefined;\n 'access-control-request-method': string | undefined;\n 'alt-svc': string | undefined;\n 'cache-control': string | undefined;\n 'content-disposition': string | undefined;\n 'content-encoding': string | undefined;\n 'content-language': string | undefined;\n 'content-length': string | undefined;\n 'content-location': string | undefined;\n 'content-range': string | undefined;\n 'content-type': string | undefined;\n 'if-match': string | undefined;\n 'if-modified-since': string | undefined;\n 'if-none-match': string | undefined;\n 'if-unmodified-since': string | undefined;\n 'last-modified': string | undefined;\n 'proxy-authenticate': string | undefined;\n 'proxy-authorization': string | undefined;\n 'public-key-pins': string | undefined;\n 'retry-after': string | undefined;\n 'sec-websocket-accept': string | undefined;\n 'sec-websocket-extensions': string | undefined;\n 'sec-websocket-key': string | undefined;\n 'sec-websocket-protocol': string | undefined;\n 'sec-websocket-version': string | undefined;\n 'set-cookie': string[] | undefined;\n 'strict-transport-security': string | undefined;\n 'transfer-encoding': string | undefined;\n 'user-agent': string | undefined;\n 'www-authenticate': string | undefined;\n accept: string | undefined;\n age: string | undefined;\n allow: string | undefined;\n authorization: string | undefined;\n connection: string | undefined;\n cookie: string | undefined;\n date: string | undefined;\n etag: string | undefined;\n expect: string | undefined;\n expires: string | undefined;\n forwarded: string | undefined;\n from: string | undefined;\n host: string | undefined;\n location: string | undefined;\n origin: string | undefined;\n pragma: string | undefined;\n range: string | undefined;\n referer: string | undefined;\n tk: string | undefined;\n trailer: string | undefined;\n upgrade: string | undefined;\n vary: string | undefined;\n via: string | undefined;\n warning: string | undefined;\n}", "import 'reflect-metadata';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { ReflectMethod } from '@dooboostore/simple-boot/types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { Resolver } from '../resolvers/Resolver';\nimport { Mimes } from '../codes/Mimes';\nimport { HttpMethod } from '../codes/HttpMethod';\n\nexport enum UrlMappingSituationType {\n REQ_JSON_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_JSON_BODY',\n REQ_FORM_URL_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_FORM_URL_BODY'\n}\nexport type MappingConfig = {\n method: HttpMethod | string,\n description?: {\n name?: string;\n detail?: string;\n };\n\n req?: {\n contentType?: (Mimes|string)[];\n accept?: (Mimes|string)[];\n };\n\n res?: {\n status?: number;\n header?: {[key: string]: string};\n contentType?: Mimes | string;\n }\n resolver?: Resolver|ConstructorType<Resolver>;\n}\nexport type SaveMappingConfig = {propertyKey: string | symbol; config: MappingConfig}\nconst MappingMetadataKey = Symbol('MappingMetadataKey');\n// const GETSMappingMetadataKey = Symbol('GET_METHODS');\n// const GETMappingMetadataKey = Symbol('GET_METHOD');\n\nconst process = (config: MappingConfig, target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(MappingMetadataKey, target.constructor) ?? []) as SaveMappingConfig[];\n saveMappingConfigs.push({propertyKey, config});\n ReflectUtils.defineMetadata(MappingMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(MappingMetadataKey, config, target, propertyKey);\n}\nexport function UrlMapping(config: MappingConfig): ReflectMethod;\nexport function UrlMapping(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function UrlMapping(configOrtarget?: MappingConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrtarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n process(configOrtarget, target, propertyKey, descriptor);\n }\n }\n}\nexport const getUrlMapping = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return ReflectUtils.getMetadata(MappingMetadataKey, target, propertyKey);\n}\n\nexport const getUrlMappings = (target: any): SaveMappingConfig[] => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(MappingMetadataKey, target);\n}\nexport function GET(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function GET(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function GET(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.GET;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getGET = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getGETS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function POST(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function POST(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function POST(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.POST}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.POST;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPOST = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPOSTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.POST);\n}\nexport function DELETE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function DELETE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function DELETE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.DELETE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.DELETE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getDELETE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getDELETES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.DELETE);\n}\nexport function PUT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PUT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PUT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PUT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PUT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPUT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPUTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.PUT);\n}\nexport function PATCH(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PATCH(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PATCH(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PATCH}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PATCH;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPATCH = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPATCHS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function OPTIONS(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function OPTIONS(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function OPTIONS(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.OPTIONS}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.OPTIONS;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getOPTIONS = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getOPTIONSS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.OPTIONS);\n}\nexport function HEAD(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function HEAD(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function HEAD(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.HEAD}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.HEAD;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getHEAD = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getHEADS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function TRACE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function TRACE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function TRACE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.TRACE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.TRACE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getTRACE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getTRACES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.TRACE);\n}\nexport function CONNECT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function CONNECT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function CONNECT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.CONNECT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.CONNECT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getCONNECT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getCONNECTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.CONNECT);\n}\n", "export enum HttpMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n DELETE = 'DELETE',\n PATCH = 'PATCH',\n HEAD = 'HEAD',\n OPTIONS = 'OPTIONS',\n TRACE = 'TRACE',\n CONNECT = 'CONNECT',\n}", "export enum HttpStatus {\n Ok = 200,\n\n /**\n * HTTP 301 Moved Permanently \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC8FC\uC5B4\uC9C4 URL\uB85C \uC644\uC804\uD788 \uC62E\uACA8\uC84C\uB2E4\uB294 \uAC83\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uB294 \uC774 \uD398\uC774\uC9C0\uB85C \uB9AC\uB514\uB809\uD2B8\uD558\uACE0, \uAC80\uC0C9 \uC5D4\uC9C4\uC740 \uD574\uB2F9 \uB9AC\uC18C\uC2A4\uB85C \uC5F0\uACB0\uB418\uB294 \uB9C1\uD06C\uB97C \uAC31\uC2E0\uD569\uB2C8\uB2E4.\n */\n MovedPermanently = 301,\n /**\n * https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Status/302\n * HTTP(HyperText Transfer Protocol) 302 Found \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC9C0\uC815\uB41C URL\uB85C \uC77C\uC2DC\uC801\uC73C\uB85C \uC774\uB3D9\uB418\uC5C8\uC74C\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uB294 \uC774 \uD398\uC774\uC9C0\uB85C \uB9AC\uB514\uB809\uC158\uB418\uC9C0\uB9CC \uAC80\uC0C9 \uC5D4\uC9C4\uC740 \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uB9C1\uD06C\uB97C \uC5C5\uB370\uC774\uD2B8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4('SEO-speak'\uC5D0\uC11C\uB294 'link-juice'\uAC00 \uC0C8 URL\uB85C \uC804\uC1A1\uB418\uC9C0 \uC54A\uB294\uB2E4\uACE0 \uD569\uB2C8\uB2E4).\n * \uBA85\uC138\uC11C\uC5D0\uC11C \uB9AC\uB514\uB809\uC158\uC774 \uC218\uD589\uB420 \uB54C \uBA54\uC11C\uB4DC(\uBC0F \uBCF8\uBB38)\uAC00 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uB3C4\uB85D \uC694\uAD6C\uD558\uB354\uB77C\uB3C4 \uBAA8\uB4E0 \uC0AC\uC6A9\uC790 \uC5D0\uC774\uC804\uD2B8\uAC00 \uC774\uB97C \uC900\uC218\uD558\uB294 \uAC83\uC740 \uC544\uB2D9\uB2C8\uB2E4. \uC5EC\uB7EC\uBD84\uC740 \uC5EC\uC804\uD788 \uC774\uB7EC\uD55C \uC720\uD615\uC758 \uBC84\uADF8\uAC00 \uC788\uB294 \uC18C\uD504\uD2B8\uC6E8\uC5B4\uB97C \uCC3E\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uB530\uB77C\uC11C \uB530\uB77C\uC11C 302 \uCF54\uB4DC\uB294 GET \uB610\uB294 HEAD \uBA54\uC11C\uB4DC\uC5D0 \uB300\uD55C \uC751\uB2F5\uC73C\uB85C\uB9CC \uC124\uC815\uD558\uACE0 \uC774 \uACBD\uC6B0 \uBA54\uC11C\uB4DC \uBCC0\uACBD\uC774 \uBA85\uC2DC\uC801\uC73C\uB85C \uAE08\uC9C0\uB418\uBBC0\uB85C 307 Temporary Redirect \uB97C \uB300\uC2E0 \uC0AC\uC6A9\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n * \uC0AC\uC6A9\uD558\uB358 \uBA54\uC11C\uB4DC\uB97C GET\uC73C\uB85C \uBCC0\uACBD\uD558\uB824\uB294 \uACBD\uC6B0, 303 See Other\uC744 \uB300\uC2E0 \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624. PUT \uBA54\uC11C\uB4DC\uC5D0 \uB300\uD55C \uC751\uB2F5\uC744 \uC5C5\uB85C\uB4DC\uB41C \uB9AC\uC18C\uC2A4\uAC00 \uC544\uB2C8\uB77C 'You successfully updown XYZ'\uC640 \uAC19\uC740 \uD655\uC778 \uBA54\uC2DC\uC9C0\uB85C \uC8FC\uACE0 \uC2F6\uC744\uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n */\n Found = 302,\n /**\n * HTTP(HyperText Transfer Protocol) 303 See Other \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uB9AC\uB514\uB809\uC158\uC774 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4 \uC790\uCCB4\uC5D0 \uC5F0\uACB0\uB418\uC9C0 \uC54A\uACE0 \uB2E4\uB978 \uD398\uC774\uC9C0(\uC608: \uD655\uC778 \uD398\uC774\uC9C0, \uC2E4\uC81C \uAC1C\uCCB4 \uD45C\uC2DC(HTTP range-14 \uCC38\uC870) \uB610\uB294 \uC5C5\uB85C\uB4DC \uC9C4\uD589\uB960 \uD398\uC774\uC9C0)\uC5D0 \uC5F0\uACB0\uB428\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uC774 \uC751\uB2F5 \uCF54\uB4DC\uB294 PUT \uB610\uB294 POST\uC758 \uACB0\uACFC\uB85C \uB2E4\uC2DC \uC804\uC1A1\uB418\uB294 \uACBD\uC6B0\uAC00 \uB9CE\uC2B5\uB2C8\uB2E4. \uC774 \uB9AC\uB514\uB809\uC158 \uD398\uC774\uC9C0\uB97C \uD45C\uC2DC\uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uB294 \uBC29\uBC95\uC740 \uD56D\uC0C1 GET\uC785\uB2C8\uB2E4.\n */\n SeeOther = 303,\n /**\n * \uD074\uB77C\uC774\uC5B8\uD2B8 \uB9AC\uB514\uB809\uC158 \uC751\uB2F5 \uCF54\uB4DC 304 Not Modified \uB294 \uC694\uCCAD\uB41C \uB9AC\uC18C\uC2A4\uB97C \uC7AC\uC804\uC1A1\uD560 \uD544\uC694\uAC00 \uC5C6\uC74C\uC744 \uB098\uD0C0\uB0B8\uB2E4. \uCE90\uC2DC\uB41C \uC790\uC6D0\uC73C\uB85C\uC758 \uC554\uBB35\uC801\uC778 \uB9AC\uB514\uB809\uC158\uC774\uB2E4. \uC774 \uB294 GET \uB098 HEAD \uC694\uCCAD\uCC98\uB7FC \uC694\uCCAD \uBC29\uBC95\uC774 \uC548\uC804 \uD55C \uACBD\uC6B0 \uB610\uB294 \uC694\uCCAD\uC774 \uC870\uAC74\uBD80\uB85C If-None-Match \uB610\uB294 If-Modified-Since \uD5E4\uB354\uB97C \uC0AC\uC6A9\uD560 \uB54C \uC751\uB2F5 \uB41C\uB2E4.\n * \uC774\uC5D0 \uC0C1\uC751\uD558\uB294 200 OK \uC751\uB2F5\uC5D0\uB294 Cache-Control, Content-Location, Date, ETag, Expires, \uADF8\uB9AC\uACE0 Vary \uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC5C8\uC744 \uAC83\uC774\uB2E4.\n */\n NotModified = 304,\n /**\n * HTTP 307 Temporary Redirect \uB9AC\uB2E4\uC774\uB809\uD2B8 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC8FC\uC5B4\uC9C4 URL \uB85C \uC784\uC2DC\uB85C \uC62E\uACA8\uC84C\uB2E4\uB294 \uAC83\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4.\n * \uC6D0\uB798 \uC694\uCCAD\uD55C \uBA54\uC18C\uB4DC\uC640 Body \uB97C \uC7AC\uC0AC\uC6A9\uD558\uC5EC \uC694\uCCAD\uC744 \uB9AC\uB2E4\uC774\uB809\uD2B8 \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C \uBA54\uC18C\uB4DC\uB97C GET\uC73C\uB85C \uBC14\uAFB8\uAE30 \uC704\uD574\uC11C 303 See Other\uB97C \uC0AC\uC6A9\uD558\uC2DC\uBA74 \uB429\uB2C8\uB2E4. \uC774\uAC83\uC740 PUT\uC694\uCCAD\uC5D0 \uC5C5\uB85C\uB4DC\uB41C \uB9AC\uC18C\uC2A4\uAC00 \uC544\uB2CC \"You successfully uploaded XYZ\"\uC640 \uAC19\uC740 \uD655\uC778\uBA54\uC2DC\uC9C0 \uC751\uB2F5\uC744 \uC81C\uACF5 \uD558\uB294\uB370\uC5D0 \uC720\uC6A9\uD569\uB2C8\uB2E4.\n * 307\uACFC 302\uAC00 \uC720\uC77C\uD558\uAC8C \uB2E4\uB978\uC810\uC740 307\uC740 Method \uC640 Body \uB97C \uBCC0\uACBD\uD558\uC9C0 \uC54A\uACE0 \uB9AC\uB2E4\uC774\uB809\uD2B8 \uC694\uCCAD\uC744 \uD558\uB3C4\uB85D \uBCF4\uC7A5\uD569\uB2C8\uB2E4. 302\uC751\uB2F5\uC73C\uB85C \uC778\uD558\uC5EC \uC77C\uBD80 \uC624\uB798\uB41C \uD074\uB77C\uC774\uC5B8\uD2B8\uB4E4\uC740 \uBA54\uC18C\uB4DC\uB97C GET\uC73C\uB85C \uD2C0\uB9AC\uAC8C \uBCC0\uACBD\uD558\uC600\uC2B5\uB2C8\uB2E4. GET\uC774 \uC544\uB2CC \uB2E4\uB978 \uBA54\uC18C\uB4DC\uC5D0 302\uB3D9\uC791\uC740 \uC6F9\uC5D0\uC11C \uC608\uC0C1\uB418\uC9C0 \uC54A\uC9C0\uB9CC 307 \uB3D9\uC791\uC740 \uC608\uC0C1\uD560\uC218 \uC788\uC2B5\uB2C8\uB2E4. GET \uC694\uCCAD\uC5D0 \uB300\uD574\uC11C\uB294 \uB3D9\uC77C\uD558\uAC8C \uB3D9\uC791 \uD569\uB2C8\uB2E4.\n */\n TemporaryRedirect = 307,\n /**\n * \uD558\uC774\uD37C\uD14D\uC2A4\uD2B8 \uC804\uC1A1 \uD504\uB85C\uD1A0\uCF5C (HTTP) 308 Permanent Redirect \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uB41C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC9C0\uC815\uB41C URL\uB85C \uD655\uC2E4\uD788 \uC774\uB3D9\uB418\uC5C8\uC74C\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uAC00 \uC774 \uD398\uC774\uC9C0\uB85C \uB9AC\uB514\uB809\uC158\uB418\uACE0 \uAC80\uC0C9\uC5D4\uC9C4\uC740 \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uB9C1\uD06C\uB97C \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4('SEO-speak'\uC5D0\uC11C\uB294 'link-juice'\uAC00 \uC0C8 URL\uB85C \uC804\uC1A1\uB429\uB2C8\uB2E4).\n * \uC694\uCCAD \uBA54\uC11C\uB4DC\uC640 \uBCF8\uBB38\uC740 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC9C0\uB9CC, 301\uC740 \uB54C\uB54C\uB85C GET \uBA54\uC11C\uB4DC\uB85C \uC798\uBABB \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\n PermanentRedirect = 308,\n BadRequest = 400,\n Unauthorized = 401,\n Forbidden = 403,\n NotFound = 404,\n InternalServerError = 500,\n NotImplemented = 501,\n BadGateway = 502,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n HttpVersionNotSupported = 505\n}\n", "export enum Mimes {\n ApplicationJson = 'application/json',\n ApplicationOctetStream = 'application/octet-stream',\n ApplicationXml = 'application/xml',\n ApplicationJsonPatch = 'application/json-patch+json',\n ApplicationXWwwFormUrlencoded = 'application/x-www-form-urlencoded',\n TextPlain = 'text/plain',\n TextHtml = 'text/html',\n All = '*/*',\n TextCss = 'text/css',\n TextJavascript = 'text/javascript',\n TextXml = 'text/xml',\n TextXslt = 'text/xslt',\n TextXmlDtd = 'text/xml-dtd',\n TextPlainUtf8 = 'text/plain; charset=utf-8',\n ImagePng = 'image/png',\n ImageGif = 'image/gif',\n ImageJpeg = 'image/jpeg',\n ImageSvg = 'image/svg+xml',\n ImageBmp = 'image/bmp',\n ImageTiff = 'image/tiff',\n ImagePdf = 'application/pdf',\n ImageXBmp = 'image/x-bmp',\n ImageXpixmap = 'image/x-xpixmap',\n ImageXxbm = 'image/x-xbm',\n MultipartFormData = 'multipart/form-data',\n}\n", "import {MultipartData} from '../MultipartData';\n\nexport class ReqMultipartFormBody {\n constructor(public field: MultipartData[] = []) {\n }\n}", "\nexport class HttpError {\n name: string = 'Error'\n message: string;\n stack?: string\n data?: any;\n public status: number;\n\n constructor({status, message = 'HttpError'}: { status: number, message?: string }) {\n // super(message);\n this.message = message;\n this.status = status;\n }\n}\n", "import {RandomUtils} from '@dooboostore/core/random/RandomUtils'\nimport {HttpServerOption} from '../option/HttpServerOption';\nimport {RequestResponse} from '../models/RequestResponse';\n\nexport class SessionManager {\n private sessions = new Map<string, { access: number, data?: any }>();\n public sessionOption: { key: string; expiredTime: number, provider?: {uuids: () => Promise<string[]>, delete: (uuid: string) => Promise<void>, get: (uuid: string) => Promise<{ access: number, data?: any }>, set: (uuid: string, data: { access: number, data?: any }) => Promise<void>} };\n\n constructor(private option: HttpServerOption) {\n this.sessionOption = option.sessionOption;\n setInterval(async () => {\n const uuids = (await this.getSessionUUIDs());\n for (const uuid of uuids) {\n const dataSet = await this.getSessionDataSet(uuid);\n if (dataSet && this.isExpired(dataSet.access)) {\n await this.deleteSession(uuid);\n }\n }\n }, this.sessionOption.expiredTime);\n }\n\n async getSessionUUIDs() {\n if (this.sessionOption.provider?.uuids) {\n return this.sessionOption.provider.uuids();\n } else {\n return Array.from(this.sessions.keys());\n }\n }\n\n async deleteSession(uuid: string) {\n if (this.sessionOption.provider?.delete) {\n this.sessionOption.provider.delete(uuid);\n } else {\n this.sessions.delete(uuid);\n }\n }\n\n async getSessionDataSet(uuid: string) {\n if (this.sessionOption.provider?.get) {\n return this.sessionOption.provider.get(uuid);\n } else {\n return this.sessions.get(uuid);\n }\n }\n\n async setSessionDataSet(uuid: string, dataSet: { access: number, data?: any }) {\n if (this.sessionOption.provider?.set) {\n this.sessionOption.provider.set(uuid, dataSet);\n } else {\n this.sessions.set(uuid, dataSet);\n }\n }\n\n isExpired(access: number, now: number = Date.now()) {\n return (now - access) >= this.option.sessionOption.expiredTime;\n }\n\n makeUUID() {\n return RandomUtils.uuid('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');\n }\n\n async session(): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(uuid: string): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(rr: RequestResponse): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(rrOrUUID?: string | RequestResponse): Promise<{ uuid: string, dataSet: { access: number, data?: any } } >{\n let uuid: string;\n if (rrOrUUID instanceof RequestResponse) {\n uuid = rrOrUUID.reqCookieGet(this.sessionOption.key) ?? this.makeUUID();\n } else if (typeof rrOrUUID === 'string') {\n uuid = rrOrUUID;\n } else {\n uuid = this.makeUUID()\n }\n let dataSet = await this.getSessionDataSet(uuid);\n const now = Date.now();\n if (dataSet) {\n if (this.isExpired(dataSet.access, now)) {\n delete dataSet.data;\n }\n dataSet.access = now;\n } else {\n dataSet = {\n access: now\n }\n }\n await this.setSessionDataSet(uuid, dataSet);\n return {uuid, dataSet};\n }\n}", "export namespace InjectSituationType {\n export const TransactionManager = Symbol('TransactionManager');\n}", "import {EndPoint} from './EndPoint';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\nimport { HttpHeaders } from '../codes/HttpHeaders';\n\nexport type CrossDomainHeaderEndPointConfig = {\n accessControlAllowOrigin?: string | string[],\n accessControlAllowMethods?: string | string[],\n accessControlAllowHeaders?: string | string[],\n accessControlExposeHeaders?: string | string[]\n}\nexport class CrossDomainHeaderEndPoint implements EndPoint {\n constructor(private config?: CrossDomainHeaderEndPointConfig) {\n }\n\n /*\n rr.resSetHeader(\"Access-Control-Allow-Origin\", \"*\")\n rr.resSetHeader(\"Access-Control-Allow-Methods\", \"DELETE, POST, GET, OPTIONS\")\n rr.resSetHeader(\"Access-Control-Allow-Headers\", \"Content-Type, Authorization, X-Requested-With\")\n */\n async endPoint(rr: RequestResponse, app: SimpleBootHttpServer) {\n if (this.config?.accessControlAllowOrigin) {\n rr.resSetHeader(HttpHeaders.AccessControlAllowOrigin, Array.isArray(this.config.accessControlAllowOrigin) ? this.config.accessControlAllowOrigin.join(', ') : this.config.accessControlAllowOrigin);\n }\n if (this.config?.accessControlAllowMethods) {\n rr.resSetHeader(HttpHeaders.AccessControlAllowMethods, Array.isArray(this.config.accessControlAllowMethods) ? this.config.accessControlAllowMethods.join(', ') : this.config.accessControlAllowMethods);\n }\n if (this.config?.accessControlAllowHeaders) {\n rr.resSetHeader(HttpHeaders.AccessControlAllowHeaders, Array.isArray(this.config.accessControlAllowHeaders) ? this.config.accessControlAllowHeaders.join(', ') : this.config.accessControlAllowHeaders);\n }\n if (this.config?.accessControlExposeHeaders) {\n rr.resSetHeader(HttpHeaders.AccessControlExposeHeaders, Array.isArray(this.config.accessControlExposeHeaders) ? this.config.accessControlExposeHeaders.join(', ') : this.config.accessControlExposeHeaders);\n }\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n}\n", "import {EndPoint} from './EndPoint';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\n\nexport class HeaderEndPoint implements EndPoint {\n constructor(private headers?: { [key: string]: string | string[] }) {\n }\n\n async endPoint(rr: RequestResponse, app: SimpleBootHttpServer) {\n if (this.headers) {\n rr.resSetHeaders(this.headers);\n }\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class BadRequestError extends HttpError {\n constructor({status = HttpStatus.BadRequest, message = 'Bad Request'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class ForbiddenError extends HttpError {\n constructor({status = HttpStatus.Forbidden, message = 'Forbidden'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class InternalServerError extends HttpError {\n constructor({status = HttpStatus.InternalServerError, message = 'Internal Server Error'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class NotFoundError extends HttpError {\n constructor({status = HttpStatus.NotFound, message = 'Not Found'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class UnauthorizedError extends HttpError {\n constructor({status = HttpStatus.Unauthorized, message = 'Unauthorized'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import { Filter } from '../filters/Filter';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { FileUtils } from '@dooboostore/core-node/file/FileUtils';\nimport { ConvertUtils } from '@dooboostore/core-node/convert/ConvertUtils';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\n\nexport type CacheFilterSessionType = { key: string, lifeTime: number, isUpdate: boolean, responseHeaders?: string[] };\n\ntype CacheConfigCacheItemType = { path: string, createTime: number, lifeTime: number, responseHeader: { [key: string]: string | number | string[] } };\n\ntype KeyAndConfig = { key: string, lifeTime?: number, responseHeaders?: string[] } ;\n\nexport class CacheFilter implements Filter {\n public static readonly CARRIER_KEY_NAME = '_CARRIER_CACHE_FILTER_KEY_NAME';\n private storage = new Map<string, string | Buffer>();\n private cacheConfig: {\n createDate: string;\n updateDate: string;\n caches: { [key: string]: CacheConfigCacheItemType }\n }\n\n constructor(private config: {\n config: {\n cacheDir?: string;\n lifeTime: number;\n startUpClean?: boolean;\n },\n filter?: (rr: RequestResponse, app: SimpleBootHttpServer) => boolean;\n key: (rr: RequestResponse, app: SimpleBootHttpServer) => KeyAndConfig;\n }) {\n\n if (config.config.cacheDir && config.config.startUpClean) {\n FileUtils.deleteSync(config.config.cacheDir, {options: {recursive: true}});\n }\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app, carrier}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // this.key = undefined;\n // this.lifeTime = undefined;\n // this.isUpdate = false;\n const filter = this.config.filter?.(rr,app);\n if (!filter) {\n return true;\n }\n if (this.config.config.cacheDir) {\n FileUtils.mkdirSync(this.config.config.cacheDir, {recursive: true});\n }\n if (!this.cacheConfig && this.config.config.cacheDir) {\n try {\n this.cacheConfig = JSON.parse(ConvertUtils.toString(FileUtils.readSync([this.config.config.cacheDir, 'cacheConfig.json'], { option: {encoding: 'utf-8'}})));\n } catch (e) {\n }\n }\n const date = new Date().toISOString();\n this.cacheConfig ??= {\n createDate: date,\n updateDate: date,\n // accessDate: date,\n caches: {}\n };\n this.cacheConfig.createDate ??= date;\n this.cacheConfig.updateDate ??= date;\n // this.cacheConfig.accessDate ??= date;\n this.cacheConfig.caches ??= {};\n\n\n const rkey = this.config.key(rr, app);\n // console.log('--path filter', rr.reqMethod(), rr.reqUrlPathName, filter, rkey)\n const sessionData: CacheFilterSessionType = {key: rkey.key, lifeTime: rkey.lifeTime ?? this.config.config.lifeTime, isUpdate: false, responseHeaders: rkey.responseHeaders};\n\n\n const cache = this.cacheConfig.caches[sessionData.key];\n if (cache) {\n const existes = this.config.config.cacheDir ? FileUtils.existsSync(cache.path) : this.storage.has(cache.path);\n const diffTime = Date.now() - cache.createTime;\n if (!existes || diffTime > cache.lifeTime) {\n delete this.cacheConfig[sessionData.key];\n this.deleteChunk(cache.path);\n sessionData.isUpdate = true;\n } else {\n rr.resSetHeaders({\n ...cache.responseHeader,\n cacheFilter: `true;remainTime=${cache.lifeTime - diffTime}`\n });\n // console.log('chunk--->', cache.path);\n try {\n const chunk = this.getChunk(cache.path);\n // console.log('chunk--->', chunk);\n await rr.resEnd(chunk);\n } catch (e) {\n console.log('--------e', e)\n }\n }\n } else {\n sessionData.isUpdate = true;\n }\n carrier.set(CacheFilter.CARRIER_KEY_NAME, sessionData);\n return sessionData.isUpdate;\n }\n\n private deleteChunk(path: string) {\n if (this.config.config.cacheDir && FileUtils.existsSync(path)) {\n FileUtils.deleteFileSync(path);\n } else if (this.storage.has(path)) {\n this.storage.delete(path);\n }\n }\n\n private getChunk(path: string) {\n return this.config.config.cacheDir ? FileUtils.readSync(path) : this.storage.get(path);\n }\n\n async proceedAfter({rr, app, carrier}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // const data = await rr.resBodyStringData()\n const sessionData = carrier.get(CacheFilter.CARRIER_KEY_NAME) as CacheFilterSessionType ;\n if (sessionData && sessionData.isUpdate) {\n try {\n if (this.config.config.cacheDir) {\n FileUtils.mkdirSync([this.config.config.cacheDir, 'caches'], {recursive: true});\n }\n const resBody = rr.resBodyData();\n if (!resBody) {\n return true;\n }\n let p: string | undefined = undefined;\n const destFileUUID = RandomUtils.uuid4();\n p = this.writeChunk(destFileUUID, resBody);\n const updateDateNow = Date.now();\n const updateDate = new Date(updateDateNow).toISOString();\n this.cacheConfig.createDate ??= updateDate;\n this.cacheConfig.updateDate = updateDate;\n const responseHeaders: {[key: string]: string | number | string[]} = {}\n sessionData.responseHeaders?.map(it=>it.toLowerCase()).forEach(it => {\n responseHeaders[it] = rr.resHeader(it);\n })\n this.cacheConfig.caches[sessionData.key] = {\n path: p,\n createTime: updateDateNow,\n lifeTime: sessionData.lifeTime,\n responseHeader: responseHeaders\n };\n\n if (this.config.config.cacheDir) {\n FileUtils.write(JSON.stringify(this.cacheConfig), {path: [this.config.config.cacheDir, 'cacheConfig.json']});\n }\n } catch (e) {\n console.log('---', e)\n }\n }\n\n return true;\n }\n\n private writeChunk(destFileUUID: string, resBody: string | Buffer ) {\n if (this.config.config.cacheDir) {\n return FileUtils.write(resBody, {path: [this.config.config.cacheDir, 'caches', destFileUUID]});\n } else {\n this.storage.set(destFileUUID, resBody);\n return destFileUUID;\n }\n }\n}\n", "import {Filter} from '../filters/Filter';\nimport {HttpStatus} from '../codes/HttpStatus';\nimport {RequestResponse} from '../models/RequestResponse';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\n\nexport class HttpStatusFilter implements Filter {\n\n constructor(private httpStatus: HttpStatus | number) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // res.writeHead(this.httpStatus);\n rr.resStatusCode(this.httpStatus);\n rr.resEnd();\n return false;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n\n async onInit(app: SimpleBootHttpServer){\n }\n}\n", "import {Filter} from './Filter';\nimport {HttpStatus} from '../codes/HttpStatus';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\nimport {getUrlMappings} from '../decorators/MethodMapping';\n\ntype MethodType = {\n summary?: string;\n description?: string;\n operationId?: string;\n parameters?: {\n name: string;\n in: string;\n required: boolean;\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }[];\n responses: {\n [code: string]: {\n description: string;\n content?: {\n [type: string]: {\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n }\n};\ntype PathType = {\n [method: string]: MethodType\n};\ntype PathsType = {\n [path: string]: PathType\n};\nexport type OpenApiType = {\n openapi: string;\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n paths?: PathsType\n components?: {\n schemas?: {\n [key: string]: {\n type: string;\n required?: string[];\n properties?: {\n [key: string]: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n securitySchemes?: {\n [key: string]: {\n type: string;\n description?: string;\n in?: string;\n name?: string;\n scheme?: string;\n bearerFormat?: string;\n flows?: {\n [key: string]: {\n authorizationUrl?: string;\n tokenUrl?: string;\n refreshUrl?: string;\n scopes?: {\n [key: string]: {\n description?: string;\n }\n }\n }\n }\n }\n }\n }\n}\nexport type OpenApi3FilterConfig = {\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n}\nconst DefulatData: OpenApiType = {\n openapi: '3.0.1',\n info: {\n title: 'SimpleBootHttpServer OpenApi3',\n description: 'SimpleBootHttpServer OpenApi3',\n }\n}\n\nexport class OpenApi3Filter implements Filter {\n private openApiConfig: any;\n\n constructor(public config: { path: string, excludePath?: { method: string, path: string }[] }, openApiConfig?: OpenApi3FilterConfig) {\n this.openApiConfig = Object.assign(Object.assign({}, DefulatData), openApiConfig ?? {})\n }\n async onInit(app: SimpleBootHttpServer){\n }\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n if (rr.reqUrl === this.config.path) {\n const map = app.routerManager.routingMap();\n // let routers = app.simstanceManager.getSimAtomics().filter((it: SimAtomic) => it.getConfig(RouterMetadataKey));\n const data = {\n paths: {} as PathsType\n } as OpenApiType;\n\n Object.entries(map).filter(([k, v]) => typeof v !== 'string').forEach(([k, v]) => {\n const method = data.paths![k] = {} as PathType;\n getUrlMappings(v)?.forEach(it => {\n method[it.config.method] = {\n summary: it.propertyKey,\n description: it.propertyKey\n // operationId: it.operationId,\n // parameters: it.parameters,\n // responses: it.responses,\n } as MethodType\n });\n })\n\n rr.resWriteJson(Object.assign(Object.assign({}, this.openApiConfig), data)).resStatusCode(HttpStatus.Ok).resEnd();\n return false;\n }\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n", "import { Filter } from '../filters/Filter';\nimport fs from 'fs';\nimport path from 'path';\nimport mime from 'mime-types';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { RequestResponse } from '../models/RequestResponse';\n\nexport type RequestFilterType = string | RegExp | ((rr: RequestResponse, app: SimpleBootHttpServer) => boolean) | ((rr: RequestResponse, app: SimpleBootHttpServer) => Promise<boolean>);\n\nexport class ResourceFilter implements Filter {\n constructor(private resourceDistPath: string, private resourceRegex: (RequestFilterType | { request: RequestFilterType, dist: string })[] = []) {\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const url = (rr.reqUrlPathName ?? '').replace(/\\.\\./g, '');\n const urlObj = rr.reqUrlObject;\n // const requestUrl = parse(rr.reqUrl ?? '', true);\n let sw = true;\n const regExps = this.resourceRegex.filter(it => {\n if (it instanceof RegExp) {\n return it.test(url);\n }\n\n if (typeof it === 'string') {\n return RegExp(it).test(url);\n }\n\n if (typeof it === 'function') {\n return it(rr, app);\n }\n\n if (typeof it === 'object' && 'request' in it) {\n if (typeof it.request === 'function') {\n return it.request(rr, app);\n }\n return RegExp(it.request).test(url);\n }\n })\n // console.log('regExps', regExps, url, this.resourceRegex);\n // eslint-disable-next-line no-unused-vars\n for (const it of regExps) {\n const resourcePath = path.join(this.resourceDistPath, typeof it === 'object' && 'dist' in it ? it.dist : urlObj.pathname);\n // console.log('ResourceFilter', resourcePath, it, urlObj.pathname, url);\n sw = false;\n // console.log('-----', resourcePath);\n if (fs.existsSync(resourcePath)) {\n // const header = {} as any;\n // header[HttpHeaders.ContentType] = mime.lookup(resourcePath);\n // res.writeHead(HttpStatus.Ok, header);\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, mime.lookup(resourcePath).toString());\n await rr.resEnd(fs.readFileSync(resourcePath));\n break;\n } else {\n rr.resStatusCode(HttpStatus.NotFound)\n await rr.resEnd();\n break;\n }\n sw = false;\n }\n return sw;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n", "import { Filter } from '../filters/Filter';\nimport { RequestResponse } from '../models/RequestResponse';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\n\nexport class ThrowFilter implements Filter {\n constructor(private error: any) {\n }\n\n async onInit(app: SimpleBootHttpServer){\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const sw = rr.resIsDone();\n if (!sw) {\n throw this.error;\n };\n return false;\n }\n}\n", "export class HeaderData<T> {\n constructor(public header: { [p: string]: [string] }, public data: T) {\n }\n}", "import fs from 'fs';\nimport path from 'path';\nimport mime from 'mime-types';\nimport { RequestResponse } from '../RequestResponse';\nimport { HttpStatus } from '../../codes/HttpStatus';\nimport { HttpHeaders } from '../../codes/HttpHeaders';\n\nexport class Resource {\n constructor(public path: string | RequestResponse | URL, public rootPath = process.cwd()) {\n }\n\n get absolutePath(): string {\n if (this.path instanceof RequestResponse) {\n return path.join(this.rootPath, this.path.reqUrlObj().pathname);\n } else if (this.path instanceof URL) {\n return path.join(this.rootPath, this.path.pathname);\n } else {\n return path.join(this.rootPath, this.path);\n }\n }\n\n get conTentType(): string {\n return mime.lookup(this.absolutePath).toString();\n }\n\n get data(): Promise<string> {\n const promise = new Promise<string>((resolve, reject) => {\n fs.readFile('', (error, fileBuffer) => {\n if (error) {\n reject(error);\n }\n const fileContent = fileBuffer.toString();\n resolve(fileContent);\n });\n });\n return promise;\n }\n\n async write(rr: RequestResponse) {\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, this.conTentType);\n await rr.resEnd(fs.readFileSync(this.absolutePath));\n }\n}", "import jsonpatch, { Operation as JsonOperation } from 'fast-json-patch';\n// export enum OP {\n// test = 'test',\n// remove = 'remove',\n// add = 'add',\n// replace = 'replace',\n// move = 'move',\n// copy = 'copy',\n//\n// }\n// export type RequestPatchBody = {\n// op: OP;\n// path?: string;\n// from?: string;\n// value?: string | any[] | any;\n// }\nexport type Operation = JsonOperation;\nexport class PatchJson {\n constructor(private patch: Operation[]) {\n }\n\n apply(obj: any) {\n obj = jsonpatch.applyPatch(obj, this.patch).newDocument;\n return obj;\n // switch (this.body.op) {\n // case OP.test:\n // return obj[this.body.path!] === this.body.value;\n // case OP.remove:\n // delete obj[this.body.path!];\n // return true;\n // case OP.add:\n // obj[this.body.path!] = this.body.value;\n // return true;\n // case OP.replace:\n // obj[this.body.path!] = this.body.value;\n // return true;\n // case OP.move:\n // obj[this.body.path!] = obj[this.body.from!];\n // delete obj[this.body.from!];\n // return true;\n // case OP.copy:\n // obj[this.body.path!] = obj[this.body.from!];\n // return true;\n // }\n }\n}\n", "import { Resolver } from './Resolver';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { Resource } from '../models/datas/Resource';\nimport { Sim } from '@dooboostore/simple-boot/decorators/SimDecorator';\n\n@Sim\nexport class ResourceResolver implements Resolver {\n resolve(data: string | undefined, rr: RequestResponse): Promise<void> {\n return new Resource(data ?? rr).write(rr);\n }\n}"],
5
- "mappings": "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",
6
- "names": ["HttpHeaders", "import_ConvertUtils", "CoreConvertUtils", "mime", "HttpMethod", "UrlMappingSituationType", "process", "propertyKey", "descriptor", "HttpStatus", "Mimes", "import_ReflectUtils", "import_url", "InjectSituationType", "HttpsServer", "HttpServer", "it", "data", "import_FileUtils", "import_ConvertUtils", "import_RandomUtils", "path", "path", "fs", "mime", "import_fs", "import_path", "import_mime_types", "path", "mime", "fs", "jsonpatch"]
3
+ "sources": ["../../../../../node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/db.json", "../../../../../node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/index.js", "../../../../../node_modules/.pnpm/mime-types@2.1.35/node_modules/mime-types/index.js", "../../../../../node_modules/.pnpm/node-gzip@1.1.2/node_modules/node-gzip/dist/index.js", "../../../../../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/commonjs/helpers.js", "../../../../../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/commonjs/core.js", "../../../../../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/commonjs/duplex.js", "../../../../../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js", "../../src/bundle-entry.ts", "../../src/codes/HttpHeaders.ts", "../../src/codes/HttpMethod.ts", "../../src/codes/HttpStatus.ts", "../../src/codes/Mimes.ts", "../../../core/src/reflect/ReflectUtils.ts", "../../src/decorators/MethodMapping.ts", "../../src/endpoints/CrossDomainHeaderEndPoint.ts", "../../src/endpoints/HeaderEndPoint.ts", "../../src/errors/HttpError.ts", "../../src/errors/BadRequestError.ts", "../../src/errors/ForbiddenError.ts", "../../src/errors/InternalServerError.ts", "../../src/errors/NotFoundError.ts", "../../src/errors/UnauthorizedError.ts", "../../../core-node/src/file/FileUtils.ts", "../../../core/src/valid/ValidUtils.ts", "../../../core/src/random/RandomUtils.ts", "../../../core-node/src/convert/ConvertUtils.ts", "../../src/filters/CacheFilter.ts", "../../src/filters/HttpStatusFilter.ts", "../../src/filters/OpenApi3Filter.ts", "../../src/filters/ResourceFilter.ts", "../../src/filters/ThrowFilter.ts", "../../src/inject/InjectSituationType.ts", "../../../core/src/string/StringUtils.ts", "../../../core/src/expression/Expression.ts", "../../../simple-boot/src/intent/Intent.ts", "../../src/models/RequestResponse.ts", "../../src/models/datas/body/ReqFormUrlBody.ts", "../../src/models/datas/body/ReqJsonBody.ts", "../../src/models/datas/ReqHeader.ts", "../../../core/src/entity/Point2D.ts", "../../../core/src/entity/Vector.ts", "../../../core/src/entity/Point3D.ts", "../../../core/src/entity/object/obj/Obj.ts", "../../../core/src/math/MathUtil.ts", "../../../core/src/entity/SizeType.ts", "../../../core/src/entity/Rect.ts", "../../../core/src/types.ts", "../../../core/src/object/ObjectUtils.ts", "../../../core/src/convert/ConvertUtils.ts", "../../src/models/datas/HeaderData.ts", "../../src/models/datas/Resource.ts", "../../src/models/datas/body/ReqMultipartFormBody.ts", "../../src/models/method/patch/PatchJson.ts", "../../../simple-boot/src/SimOption.ts", "../../src/option/HttpServerOption.ts", "../../../simple-boot/src/decorators/SimDecorator.ts", "../../src/resolvers/ResourceResolver.ts", "../../src/session/SessionManager.ts", "../../../simple-boot/src/throwable/SimError.ts", "../../../simple-boot/src/throwable/SimNoSuch.ts", "../../../simple-boot/src/simstance/SimAtomic.ts", "../../../simple-boot/src/decorators/inject/Inject.ts", "../../../simple-boot/src/decorators/MetaDataAtomic.ts", "../../../simple-boot/src/decorators/aop/AOPDecorator.ts", "../../../simple-boot/src/decorators/exception/ExceptionDecorator.ts", "../../../simple-boot/src/proxy/SimProxyHandler.ts", "../../../simple-boot/src/lifecycle/OnSimCreate.ts", "../../../simple-boot/src/lifecycle/OnSimCreateCompleted.ts", "../../../simple-boot/src/decorators/SimNoProxy.ts", "../../../simple-boot/src/simstance/SimstanceManager.ts", "../../../core/src/message/Subscriber..ts", "../../../core/src/message/Observable.ts", "../../../core/src/message/Subject.ts", "../../../simple-boot/src/decorators/inject/Injection.ts", "../../../simple-boot/src/throwable/MethodNoSuch.ts", "../../../simple-boot/src/decorators/route/Router.ts", "../../../simple-boot/src/route/RouterModule.ts", "../../../simple-boot/src/route/RouterAction.ts", "../../../simple-boot/src/route/RouterManager.ts", "../../../simple-boot/src/intent/IntentManager.ts", "../../../simple-boot/src/SimpleApplication.ts", "../../src/SimpleBootHttpServer.ts", "../../../simple-boot/src/decorators/validate/Validation.ts", "../../../simple-boot/src/errors/ValidException.ts"],
4
+ "sourcesContent": ["{\n \"application/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"application/3gpdash-qoe-report+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/3gpp-ims+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphalforms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/a2l\": {\n \"source\": \"iana\"\n },\n \"application/ace+cbor\": {\n \"source\": \"iana\"\n },\n \"application/activemessage\": {\n \"source\": \"iana\"\n },\n \"application/activity+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-directory+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcost+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcostparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointprop+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointpropparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-error+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamcontrol+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/aml\": {\n \"source\": \"iana\"\n },\n \"application/andrew-inset\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez\"]\n },\n \"application/applefile\": {\n \"source\": \"iana\"\n },\n \"application/applixware\": {\n \"source\": \"apache\",\n \"extensions\": [\"aw\"]\n },\n \"application/at+jwt\": {\n \"source\": \"iana\"\n },\n \"application/atf\": {\n \"source\": \"iana\"\n },\n \"application/atfx\": {\n \"source\": \"iana\"\n },\n \"application/atom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atom\"]\n },\n \"application/atomcat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomcat\"]\n },\n \"application/atomdeleted+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomdeleted\"]\n },\n \"application/atomicmail\": {\n \"source\": \"iana\"\n },\n \"application/atomsvc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomsvc\"]\n },\n \"application/atsc-dwd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dwd\"]\n },\n \"application/atsc-dynamic-event-message\": {\n \"source\": \"iana\"\n },\n \"application/atsc-held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"held\"]\n },\n \"application/atsc-rdt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/atsc-rsat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsat\"]\n },\n \"application/atxml\": {\n \"source\": \"iana\"\n },\n \"application/auth-policy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/bacnet-xdd+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/batch-smtp\": {\n \"source\": \"iana\"\n },\n \"application/bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/beep+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/calendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/calendar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xcs\"]\n },\n \"application/call-completion\": {\n \"source\": \"iana\"\n },\n \"application/cals-1840\": {\n \"source\": \"iana\"\n },\n \"application/captive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cbor\": {\n \"source\": \"iana\"\n },\n \"application/cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/cccex\": {\n \"source\": \"iana\"\n },\n \"application/ccmp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ccxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ccxml\"]\n },\n \"application/cdfx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdfx\"]\n },\n \"application/cdmi-capability\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmia\"]\n },\n \"application/cdmi-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmic\"]\n },\n \"application/cdmi-domain\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmid\"]\n },\n \"application/cdmi-object\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmio\"]\n },\n \"application/cdmi-queue\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmiq\"]\n },\n \"application/cdni\": {\n \"source\": \"iana\"\n },\n \"application/cea\": {\n \"source\": \"iana\"\n },\n \"application/cea-2018+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cellml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cfw\": {\n \"source\": \"iana\"\n },\n \"application/city+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clr\": {\n \"source\": \"iana\"\n },\n \"application/clue+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clue_info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cms\": {\n \"source\": \"iana\"\n },\n \"application/cnrp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-group+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-payload\": {\n \"source\": \"iana\"\n },\n \"application/commonground\": {\n \"source\": \"iana\"\n },\n \"application/conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cose\": {\n \"source\": \"iana\"\n },\n \"application/cose-key\": {\n \"source\": \"iana\"\n },\n \"application/cose-key-set\": {\n \"source\": \"iana\"\n },\n \"application/cpl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cpl\"]\n },\n \"application/csrattrs\": {\n \"source\": \"iana\"\n },\n \"application/csta+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cstadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/csvm+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cu-seeme\": {\n \"source\": \"apache\",\n \"extensions\": [\"cu\"]\n },\n \"application/cwt\": {\n \"source\": \"iana\"\n },\n \"application/cybercash\": {\n \"source\": \"iana\"\n },\n \"application/dart\": {\n \"compressible\": true\n },\n \"application/dash+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpd\"]\n },\n \"application/dash-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpp\"]\n },\n \"application/dashdelta\": {\n \"source\": \"iana\"\n },\n \"application/davmount+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"davmount\"]\n },\n \"application/dca-rft\": {\n \"source\": \"iana\"\n },\n \"application/dcd\": {\n \"source\": \"iana\"\n },\n \"application/dec-dx\": {\n \"source\": \"iana\"\n },\n \"application/dialog-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom\": {\n \"source\": \"iana\"\n },\n \"application/dicom+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dii\": {\n \"source\": \"iana\"\n },\n \"application/dit\": {\n \"source\": \"iana\"\n },\n \"application/dns\": {\n \"source\": \"iana\"\n },\n \"application/dns+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dns-message\": {\n \"source\": \"iana\"\n },\n \"application/docbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dbk\"]\n },\n \"application/dots+cbor\": {\n \"source\": \"iana\"\n },\n \"application/dskpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dssc+der\": {\n \"source\": \"iana\",\n \"extensions\": [\"dssc\"]\n },\n \"application/dssc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdssc\"]\n },\n \"application/dvcs\": {\n \"source\": \"iana\"\n },\n \"application/ecmascript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es\",\"ecma\"]\n },\n \"application/edi-consent\": {\n \"source\": \"iana\"\n },\n \"application/edi-x12\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/edifact\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/efi\": {\n \"source\": \"iana\"\n },\n \"application/elm+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/elm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.cap+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/emergencycalldata.comment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.deviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.ecall.msd\": {\n \"source\": \"iana\"\n },\n \"application/emergencycalldata.providerinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.serviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.subscriberinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.veds+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emma+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emma\"]\n },\n \"application/emotionml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emotionml\"]\n },\n \"application/encaprtp\": {\n \"source\": \"iana\"\n },\n \"application/epp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/epub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"epub\"]\n },\n \"application/eshop\": {\n \"source\": \"iana\"\n },\n \"application/exi\": {\n \"source\": \"iana\",\n \"extensions\": [\"exi\"]\n },\n \"application/expect-ct-report+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/express\": {\n \"source\": \"iana\",\n \"extensions\": [\"exp\"]\n },\n \"application/fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/fastsoap\": {\n \"source\": \"iana\"\n },\n \"application/fdt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fdt\"]\n },\n \"application/fhir+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fhir+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fido.trusted-apps+json\": {\n \"compressible\": true\n },\n \"application/fits\": {\n \"source\": \"iana\"\n },\n \"application/flexfec\": {\n \"source\": \"iana\"\n },\n \"application/font-sfnt\": {\n \"source\": \"iana\"\n },\n \"application/font-tdpfr\": {\n \"source\": \"iana\",\n \"extensions\": [\"pfr\"]\n },\n \"application/font-woff\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/framework-attributes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"geojson\"]\n },\n \"application/geo+json-seq\": {\n \"source\": \"iana\"\n },\n \"application/geopackage+sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/geoxacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/gltf-buffer\": {\n \"source\": \"iana\"\n },\n \"application/gml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gml\"]\n },\n \"application/gpx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"gpx\"]\n },\n \"application/gxf\": {\n \"source\": \"apache\",\n \"extensions\": [\"gxf\"]\n },\n \"application/gzip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gz\"]\n },\n \"application/h224\": {\n \"source\": \"iana\"\n },\n \"application/held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/hjson\": {\n \"extensions\": [\"hjson\"]\n },\n \"application/http\": {\n \"source\": \"iana\"\n },\n \"application/hyperstudio\": {\n \"source\": \"iana\",\n \"extensions\": [\"stk\"]\n },\n \"application/ibe-key-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pkg-reply+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pp-data\": {\n \"source\": \"iana\"\n },\n \"application/iges\": {\n \"source\": \"iana\"\n },\n \"application/im-iscomposing+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/index\": {\n \"source\": \"iana\"\n },\n \"application/index.cmd\": {\n \"source\": \"iana\"\n },\n \"application/index.obj\": {\n \"source\": \"iana\"\n },\n \"application/index.response\": {\n \"source\": \"iana\"\n },\n \"application/index.vnd\": {\n \"source\": \"iana\"\n },\n \"application/inkml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ink\",\"inkml\"]\n },\n \"application/iotp\": {\n \"source\": \"iana\"\n },\n \"application/ipfix\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipfix\"]\n },\n \"application/ipp\": {\n \"source\": \"iana\"\n },\n \"application/isup\": {\n \"source\": \"iana\"\n },\n \"application/its+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"its\"]\n },\n \"application/java-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jar\",\"war\",\"ear\"]\n },\n \"application/java-serialized-object\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"ser\"]\n },\n \"application/java-vm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"class\"]\n },\n \"application/javascript\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"js\",\"mjs\"]\n },\n \"application/jf2feed+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jose\": {\n \"source\": \"iana\"\n },\n \"application/jose+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jrd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jscalendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"json\",\"map\"]\n },\n \"application/json-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json-seq\": {\n \"source\": \"iana\"\n },\n \"application/json5\": {\n \"extensions\": [\"json5\"]\n },\n \"application/jsonml+json\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"jsonml\"]\n },\n \"application/jwk+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwk-set+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwt\": {\n \"source\": \"iana\"\n },\n \"application/kpml-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/kpml-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ld+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"jsonld\"]\n },\n \"application/lgr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lgr\"]\n },\n \"application/link-format\": {\n \"source\": \"iana\"\n },\n \"application/load-control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lost+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lostxml\"]\n },\n \"application/lostsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lpf+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/lxf\": {\n \"source\": \"iana\"\n },\n \"application/mac-binhex40\": {\n \"source\": \"iana\",\n \"extensions\": [\"hqx\"]\n },\n \"application/mac-compactpro\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpt\"]\n },\n \"application/macwriteii\": {\n \"source\": \"iana\"\n },\n \"application/mads+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mads\"]\n },\n \"application/manifest+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"webmanifest\"]\n },\n \"application/marc\": {\n \"source\": \"iana\",\n \"extensions\": [\"mrc\"]\n },\n \"application/marcxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mrcx\"]\n },\n \"application/mathematica\": {\n \"source\": \"iana\",\n \"extensions\": [\"ma\",\"nb\",\"mb\"]\n },\n \"application/mathml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mathml\"]\n },\n \"application/mathml-content+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mathml-presentation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-associated-procedure-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-deregister+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-envelope+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-protection-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-reception-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-schedule+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-user-service-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbox\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbox\"]\n },\n \"application/media-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpf\"]\n },\n \"application/media_control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mediaservercontrol+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mscml\"]\n },\n \"application/merge-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/metalink+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"metalink\"]\n },\n \"application/metalink4+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"meta4\"]\n },\n \"application/mets+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mets\"]\n },\n \"application/mf4\": {\n \"source\": \"iana\"\n },\n \"application/mikey\": {\n \"source\": \"iana\"\n },\n \"application/mipc\": {\n \"source\": \"iana\"\n },\n \"application/missing-blocks+cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/mmt-aei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"maei\"]\n },\n \"application/mmt-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musd\"]\n },\n \"application/mods+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mods\"]\n },\n \"application/moss-keys\": {\n \"source\": \"iana\"\n },\n \"application/moss-signature\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-data\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-request\": {\n \"source\": \"iana\"\n },\n \"application/mp21\": {\n \"source\": \"iana\",\n \"extensions\": [\"m21\",\"mp21\"]\n },\n \"application/mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"mp4s\",\"m4p\"]\n },\n \"application/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod-xmt\": {\n \"source\": \"iana\"\n },\n \"application/mrb-consumer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mrb-publish+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/msc-ivr+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msc-mixer+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msword\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"doc\",\"dot\"]\n },\n \"application/mud+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/multipart-core\": {\n \"source\": \"iana\"\n },\n \"application/mxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxf\"]\n },\n \"application/n-quads\": {\n \"source\": \"iana\",\n \"extensions\": [\"nq\"]\n },\n \"application/n-triples\": {\n \"source\": \"iana\",\n \"extensions\": [\"nt\"]\n },\n \"application/nasdata\": {\n \"source\": \"iana\"\n },\n \"application/news-checkgroups\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-groupinfo\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-transmission\": {\n \"source\": \"iana\"\n },\n \"application/nlsml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/node\": {\n \"source\": \"iana\",\n \"extensions\": [\"cjs\"]\n },\n \"application/nss\": {\n \"source\": \"iana\"\n },\n \"application/oauth-authz-req+jwt\": {\n \"source\": \"iana\"\n },\n \"application/oblivious-dns-message\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-request\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-response\": {\n \"source\": \"iana\"\n },\n \"application/octet-stream\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n },\n \"application/oda\": {\n \"source\": \"iana\",\n \"extensions\": [\"oda\"]\n },\n \"application/odm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/odx\": {\n \"source\": \"iana\"\n },\n \"application/oebps-package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"opf\"]\n },\n \"application/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogx\"]\n },\n \"application/omdoc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"omdoc\"]\n },\n \"application/onenote\": {\n \"source\": \"apache\",\n \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"]\n },\n \"application/opc-nodeset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/oscore\": {\n \"source\": \"iana\"\n },\n \"application/oxps\": {\n \"source\": \"iana\",\n \"extensions\": [\"oxps\"]\n },\n \"application/p21\": {\n \"source\": \"iana\"\n },\n \"application/p21+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/p2p-overlay+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"relo\"]\n },\n \"application/parityfec\": {\n \"source\": \"iana\"\n },\n \"application/passport\": {\n \"source\": \"iana\"\n },\n \"application/patch-ops-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xer\"]\n },\n \"application/pdf\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pdf\"]\n },\n \"application/pdx\": {\n \"source\": \"iana\"\n },\n \"application/pem-certificate-chain\": {\n \"source\": \"iana\"\n },\n \"application/pgp-encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pgp\"]\n },\n \"application/pgp-keys\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\"]\n },\n \"application/pgp-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\",\"sig\"]\n },\n \"application/pics-rules\": {\n \"source\": \"apache\",\n \"extensions\": [\"prf\"]\n },\n \"application/pidf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pidf-diff+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pkcs10\": {\n \"source\": \"iana\",\n \"extensions\": [\"p10\"]\n },\n \"application/pkcs12\": {\n \"source\": \"iana\"\n },\n \"application/pkcs7-mime\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7m\",\"p7c\"]\n },\n \"application/pkcs7-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7s\"]\n },\n \"application/pkcs8\": {\n \"source\": \"iana\",\n \"extensions\": [\"p8\"]\n },\n \"application/pkcs8-encrypted\": {\n \"source\": \"iana\"\n },\n \"application/pkix-attr-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"ac\"]\n },\n \"application/pkix-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"cer\"]\n },\n \"application/pkix-crl\": {\n \"source\": \"iana\",\n \"extensions\": [\"crl\"]\n },\n \"application/pkix-pkipath\": {\n \"source\": \"iana\",\n \"extensions\": [\"pkipath\"]\n },\n \"application/pkixcmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"pki\"]\n },\n \"application/pls+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pls\"]\n },\n \"application/poc-settings+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/postscript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ai\",\"eps\",\"ps\"]\n },\n \"application/ppsp-tracker+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/provenance+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"provx\"]\n },\n \"application/prs.alvestrand.titrax-sheet\": {\n \"source\": \"iana\"\n },\n \"application/prs.cww\": {\n \"source\": \"iana\",\n \"extensions\": [\"cww\"]\n },\n \"application/prs.cyn\": {\n \"source\": \"iana\",\n \"charset\": \"7-BIT\"\n },\n \"application/prs.hpub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/prs.nprend\": {\n \"source\": \"iana\"\n },\n \"application/prs.plucker\": {\n \"source\": \"iana\"\n },\n \"application/prs.rdf-xml-crypt\": {\n \"source\": \"iana\"\n },\n \"application/prs.xsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/pskc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pskcxml\"]\n },\n \"application/pvd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/qsig\": {\n \"source\": \"iana\"\n },\n \"application/raml+yaml\": {\n \"compressible\": true,\n \"extensions\": [\"raml\"]\n },\n \"application/raptorfec\": {\n \"source\": \"iana\"\n },\n \"application/rdap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rdf\",\"owl\"]\n },\n \"application/reginfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rif\"]\n },\n \"application/relax-ng-compact-syntax\": {\n \"source\": \"iana\",\n \"extensions\": [\"rnc\"]\n },\n \"application/remote-printing\": {\n \"source\": \"iana\"\n },\n \"application/reputon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/resource-lists+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rl\"]\n },\n \"application/resource-lists-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rld\"]\n },\n \"application/rfc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/riscos\": {\n \"source\": \"iana\"\n },\n \"application/rlmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rls-services+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rs\"]\n },\n \"application/route-apd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rapd\"]\n },\n \"application/route-s-tsid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sls\"]\n },\n \"application/route-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rusd\"]\n },\n \"application/rpki-ghostbusters\": {\n \"source\": \"iana\",\n \"extensions\": [\"gbr\"]\n },\n \"application/rpki-manifest\": {\n \"source\": \"iana\",\n \"extensions\": [\"mft\"]\n },\n \"application/rpki-publication\": {\n \"source\": \"iana\"\n },\n \"application/rpki-roa\": {\n \"source\": \"iana\",\n \"extensions\": [\"roa\"]\n },\n \"application/rpki-updown\": {\n \"source\": \"iana\"\n },\n \"application/rsd+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rsd\"]\n },\n \"application/rss+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rss\"]\n },\n \"application/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"application/rtploopback\": {\n \"source\": \"iana\"\n },\n \"application/rtx\": {\n \"source\": \"iana\"\n },\n \"application/samlassertion+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/samlmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif-external-properties+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sbe\": {\n \"source\": \"iana\"\n },\n \"application/sbml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sbml\"]\n },\n \"application/scaip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scim+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scvp-cv-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"scq\"]\n },\n \"application/scvp-cv-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"scs\"]\n },\n \"application/scvp-vp-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"spq\"]\n },\n \"application/scvp-vp-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"spp\"]\n },\n \"application/sdp\": {\n \"source\": \"iana\",\n \"extensions\": [\"sdp\"]\n },\n \"application/secevent+jwt\": {\n \"source\": \"iana\"\n },\n \"application/senml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"senmlx\"]\n },\n \"application/senml-etch+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml-etch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sensml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/sensml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sensml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sensmlx\"]\n },\n \"application/sensml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sep+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sep-exi\": {\n \"source\": \"iana\"\n },\n \"application/session-info\": {\n \"source\": \"iana\"\n },\n \"application/set-payment\": {\n \"source\": \"iana\"\n },\n \"application/set-payment-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setpay\"]\n },\n \"application/set-registration\": {\n \"source\": \"iana\"\n },\n \"application/set-registration-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setreg\"]\n },\n \"application/sgml\": {\n \"source\": \"iana\"\n },\n \"application/sgml-open-catalog\": {\n \"source\": \"iana\"\n },\n \"application/shf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"shf\"]\n },\n \"application/sieve\": {\n \"source\": \"iana\",\n \"extensions\": [\"siv\",\"sieve\"]\n },\n \"application/simple-filter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/simple-message-summary\": {\n \"source\": \"iana\"\n },\n \"application/simplesymbolcontainer\": {\n \"source\": \"iana\"\n },\n \"application/sipc\": {\n \"source\": \"iana\"\n },\n \"application/slate\": {\n \"source\": \"iana\"\n },\n \"application/smil\": {\n \"source\": \"iana\"\n },\n \"application/smil+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"smi\",\"smil\"]\n },\n \"application/smpte336m\": {\n \"source\": \"iana\"\n },\n \"application/soap+fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/soap+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sparql-query\": {\n \"source\": \"iana\",\n \"extensions\": [\"rq\"]\n },\n \"application/sparql-results+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"srx\"]\n },\n \"application/spdx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/spirits-event+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sql\": {\n \"source\": \"iana\"\n },\n \"application/srgs\": {\n \"source\": \"iana\",\n \"extensions\": [\"gram\"]\n },\n \"application/srgs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"grxml\"]\n },\n \"application/sru+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sru\"]\n },\n \"application/ssdl+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ssdl\"]\n },\n \"application/ssml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ssml\"]\n },\n \"application/stix+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/swid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"swidtag\"]\n },\n \"application/tamp-apex-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-apex-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-error\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-query\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-response\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tar\": {\n \"compressible\": true\n },\n \"application/taxii+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/td+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tei\",\"teicorpus\"]\n },\n \"application/tetra_isi\": {\n \"source\": \"iana\"\n },\n \"application/thraud+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tfi\"]\n },\n \"application/timestamp-query\": {\n \"source\": \"iana\"\n },\n \"application/timestamp-reply\": {\n \"source\": \"iana\"\n },\n \"application/timestamped-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"tsd\"]\n },\n \"application/tlsrpt+gzip\": {\n \"source\": \"iana\"\n },\n \"application/tlsrpt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tnauthlist\": {\n \"source\": \"iana\"\n },\n \"application/token-introspection+jwt\": {\n \"source\": \"iana\"\n },\n \"application/toml\": {\n \"compressible\": true,\n \"extensions\": [\"toml\"]\n },\n \"application/trickle-ice-sdpfrag\": {\n \"source\": \"iana\"\n },\n \"application/trig\": {\n \"source\": \"iana\",\n \"extensions\": [\"trig\"]\n },\n \"application/ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttml\"]\n },\n \"application/tve-trigger\": {\n \"source\": \"iana\"\n },\n \"application/tzif\": {\n \"source\": \"iana\"\n },\n \"application/tzif-leap\": {\n \"source\": \"iana\"\n },\n \"application/ubjson\": {\n \"compressible\": false,\n \"extensions\": [\"ubj\"]\n },\n \"application/ulpfec\": {\n \"source\": \"iana\"\n },\n \"application/urc-grpsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/urc-ressheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsheet\"]\n },\n \"application/urc-targetdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"td\"]\n },\n \"application/urc-uisocketdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vemmi\": {\n \"source\": \"iana\"\n },\n \"application/vividence.scriptfile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.1000minds.decision-model+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"1km\"]\n },\n \"application/vnd.3gpp-prose+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-prose-pc3ch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-v2x-local-service-information\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.5gnas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.access-transfer-events+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.bsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gmop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gtpc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.interworking-data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.lpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mc-signalling-ear\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-payload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-signalling\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-signed+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mid-call+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ngap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pfcp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pic-bw-large\": {\n \"source\": \"iana\",\n \"extensions\": [\"plb\"]\n },\n \"application/vnd.3gpp.pic-bw-small\": {\n \"source\": \"iana\",\n \"extensions\": [\"psb\"]\n },\n \"application/vnd.3gpp.pic-bw-var\": {\n \"source\": \"iana\",\n \"extensions\": [\"pvb\"]\n },\n \"application/vnd.3gpp.s1ap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-ext+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.state-and-event-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ussd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp2.tcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tcap\"]\n },\n \"application/vnd.3lightssoftware.imagescal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3m.post-it-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"pwn\"]\n },\n \"application/vnd.accpac.simply.aso\": {\n \"source\": \"iana\",\n \"extensions\": [\"aso\"]\n },\n \"application/vnd.accpac.simply.imp\": {\n \"source\": \"iana\",\n \"extensions\": [\"imp\"]\n },\n \"application/vnd.acucobol\": {\n \"source\": \"iana\",\n \"extensions\": [\"acu\"]\n },\n \"application/vnd.acucorp\": {\n \"source\": \"iana\",\n \"extensions\": [\"atc\",\"acutc\"]\n },\n \"application/vnd.adobe.air-application-installer-package+zip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"air\"]\n },\n \"application/vnd.adobe.flash.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.formscentral.fcdt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcdt\"]\n },\n \"application/vnd.adobe.fxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fxp\",\"fxpl\"]\n },\n \"application/vnd.adobe.partial-upload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.xdp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdp\"]\n },\n \"application/vnd.adobe.xfdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdf\"]\n },\n \"application/vnd.aether.imp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata-pagedef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.cmoca-cmresource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-charset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codedfont\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codepage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-cmtable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-formdef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-mediummap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-objectcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-overlay\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-pagesegment\": {\n \"source\": \"iana\"\n },\n \"application/vnd.age\": {\n \"source\": \"iana\",\n \"extensions\": [\"age\"]\n },\n \"application/vnd.ah-barcode\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ahead.space\": {\n \"source\": \"iana\",\n \"extensions\": [\"ahead\"]\n },\n \"application/vnd.airzip.filesecure.azf\": {\n \"source\": \"iana\",\n \"extensions\": [\"azf\"]\n },\n \"application/vnd.airzip.filesecure.azs\": {\n \"source\": \"iana\",\n \"extensions\": [\"azs\"]\n },\n \"application/vnd.amadeus+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.amazon.ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"azw\"]\n },\n \"application/vnd.amazon.mobi8-ebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.americandynamics.acc\": {\n \"source\": \"iana\",\n \"extensions\": [\"acc\"]\n },\n \"application/vnd.amiga.ami\": {\n \"source\": \"iana\",\n \"extensions\": [\"ami\"]\n },\n \"application/vnd.amundsen.maze+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.android.ota\": {\n \"source\": \"iana\"\n },\n \"application/vnd.android.package-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"apk\"]\n },\n \"application/vnd.anki\": {\n \"source\": \"iana\"\n },\n \"application/vnd.anser-web-certificate-issue-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"cii\"]\n },\n \"application/vnd.anser-web-funds-transfer-initiation\": {\n \"source\": \"apache\",\n \"extensions\": [\"fti\"]\n },\n \"application/vnd.antix.game-component\": {\n \"source\": \"iana\",\n \"extensions\": [\"atx\"]\n },\n \"application/vnd.apache.arrow.file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.arrow.stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.compact\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.json\": {\n \"source\": \"iana\"\n },\n \"application/vnd.api+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.aplextor.warrp+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apothekende.reservation+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apple.installer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpkg\"]\n },\n \"application/vnd.apple.keynote\": {\n \"source\": \"iana\",\n \"extensions\": [\"key\"]\n },\n \"application/vnd.apple.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"m3u8\"]\n },\n \"application/vnd.apple.numbers\": {\n \"source\": \"iana\",\n \"extensions\": [\"numbers\"]\n },\n \"application/vnd.apple.pages\": {\n \"source\": \"iana\",\n \"extensions\": [\"pages\"]\n },\n \"application/vnd.apple.pkpass\": {\n \"compressible\": false,\n \"extensions\": [\"pkpass\"]\n },\n \"application/vnd.arastra.swi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.aristanetworks.swi\": {\n \"source\": \"iana\",\n \"extensions\": [\"swi\"]\n },\n \"application/vnd.artisan+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.artsquare\": {\n \"source\": \"iana\"\n },\n \"application/vnd.astraea-software.iota\": {\n \"source\": \"iana\",\n \"extensions\": [\"iota\"]\n },\n \"application/vnd.audiograph\": {\n \"source\": \"iana\",\n \"extensions\": [\"aep\"]\n },\n \"application/vnd.autopackage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.avalon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.avistar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.balsamiq.bmml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmml\"]\n },\n \"application/vnd.balsamiq.bmpr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.banana-accounting\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.error\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bekitzur-stech+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bint.med-content\": {\n \"source\": \"iana\"\n },\n \"application/vnd.biopax.rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.blink-idb-value-wrapper\": {\n \"source\": \"iana\"\n },\n \"application/vnd.blueice.multipass\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpm\"]\n },\n \"application/vnd.bluetooth.ep.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bluetooth.le.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bmi\": {\n \"source\": \"iana\",\n \"extensions\": [\"bmi\"]\n },\n \"application/vnd.bpf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bpf3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.businessobjects\": {\n \"source\": \"iana\",\n \"extensions\": [\"rep\"]\n },\n \"application/vnd.byu.uapi+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cab-jscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-cpdl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-lips\": {\n \"source\": \"iana\"\n },\n \"application/vnd.capasystems-pg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cendio.thinlinc.clientconf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.century-systems.tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chemdraw+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdxml\"]\n },\n \"application/vnd.chess-pgn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chipnuts.karaoke-mmd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmd\"]\n },\n \"application/vnd.ciedi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cinderella\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdy\"]\n },\n \"application/vnd.cirpack.isdn-ext\": {\n \"source\": \"iana\"\n },\n \"application/vnd.citationstyles.style+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csl\"]\n },\n \"application/vnd.claymore\": {\n \"source\": \"iana\",\n \"extensions\": [\"cla\"]\n },\n \"application/vnd.cloanto.rp9\": {\n \"source\": \"iana\",\n \"extensions\": [\"rp9\"]\n },\n \"application/vnd.clonk.c4group\": {\n \"source\": \"iana\",\n \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n },\n \"application/vnd.cluetrust.cartomobile-config\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amc\"]\n },\n \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amz\"]\n },\n \"application/vnd.coffeescript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collection+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.doc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.next+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.comicbook+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.comicbook-rar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commerce-battelle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commonspace\": {\n \"source\": \"iana\",\n \"extensions\": [\"csp\"]\n },\n \"application/vnd.contact.cmsg\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdbcmsg\"]\n },\n \"application/vnd.coreos.ignition+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cosmocaller\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmc\"]\n },\n \"application/vnd.crick.clicker\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkx\"]\n },\n \"application/vnd.crick.clicker.keyboard\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkk\"]\n },\n \"application/vnd.crick.clicker.palette\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkp\"]\n },\n \"application/vnd.crick.clicker.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkt\"]\n },\n \"application/vnd.crick.clicker.wordbank\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkw\"]\n },\n \"application/vnd.criticaltools.wbs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wbs\"]\n },\n \"application/vnd.cryptii.pipe+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.crypto-shade-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.vault\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ctc-posml\": {\n \"source\": \"iana\",\n \"extensions\": [\"pml\"]\n },\n \"application/vnd.ctct.ws+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cups-pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-postscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-ppd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppd\"]\n },\n \"application/vnd.cups-raster\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-raw\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl.car\": {\n \"source\": \"apache\",\n \"extensions\": [\"car\"]\n },\n \"application/vnd.curl.pcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcurl\"]\n },\n \"application/vnd.cyan.dean.root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cybank\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cyclonedx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cyclonedx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.d2l.coursepackage1p0+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.d3m-dataset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.d3m-problem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dart\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dart\"]\n },\n \"application/vnd.data-vision.rdz\": {\n \"source\": \"iana\",\n \"extensions\": [\"rdz\"]\n },\n \"application/vnd.datapackage+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dataresource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dbf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dbf\"]\n },\n \"application/vnd.debian.binary-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dece.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n },\n \"application/vnd.dece.ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uvt\",\"uvvt\"]\n },\n \"application/vnd.dece.unspecified\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvx\",\"uvvx\"]\n },\n \"application/vnd.dece.zip\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvz\",\"uvvz\"]\n },\n \"application/vnd.denovo.fcselayout-link\": {\n \"source\": \"iana\",\n \"extensions\": [\"fe_launch\"]\n },\n \"application/vnd.desmume.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dm.delegation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dna\": {\n \"source\": \"iana\",\n \"extensions\": [\"dna\"]\n },\n \"application/vnd.document+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dolby.mlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"mlp\"]\n },\n \"application/vnd.dolby.mobile.1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dolby.mobile.2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.doremir.scorecloud-binary-document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dpgraph\": {\n \"source\": \"iana\",\n \"extensions\": [\"dpg\"]\n },\n \"application/vnd.dreamfactory\": {\n \"source\": \"iana\",\n \"extensions\": [\"dfac\"]\n },\n \"application/vnd.drive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ds-keypoint\": {\n \"source\": \"apache\",\n \"extensions\": [\"kpxx\"]\n },\n \"application/vnd.dtg.local\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.flash\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ait\": {\n \"source\": \"iana\",\n \"extensions\": [\"ait\"]\n },\n \"application/vnd.dvb.dvbisl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.dvbj\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.esgcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcdftnotifaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgpdd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcroaming\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-base\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-enhancement\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.notif-aggregate-root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-container+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-generic+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-msglist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-init+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.pfr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.service\": {\n \"source\": \"iana\",\n \"extensions\": [\"svc\"]\n },\n \"application/vnd.dxr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dynageo\": {\n \"source\": \"iana\",\n \"extensions\": [\"geo\"]\n },\n \"application/vnd.dzr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.easykaraoke.cdgdownload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecdis-update\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecip.rlp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eclipse.ditto+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ecowin.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"mag\"]\n },\n \"application/vnd.ecowin.filerequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.fileupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.series\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesrequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.img\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.iso\": {\n \"source\": \"iana\"\n },\n \"application/vnd.emclient.accessrequest+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.enliven\": {\n \"source\": \"iana\",\n \"extensions\": [\"nml\"]\n },\n \"application/vnd.enphase.envoy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eprints.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.epson.esf\": {\n \"source\": \"iana\",\n \"extensions\": [\"esf\"]\n },\n \"application/vnd.epson.msf\": {\n \"source\": \"iana\",\n \"extensions\": [\"msf\"]\n },\n \"application/vnd.epson.quickanime\": {\n \"source\": \"iana\",\n \"extensions\": [\"qam\"]\n },\n \"application/vnd.epson.salt\": {\n \"source\": \"iana\",\n \"extensions\": [\"slt\"]\n },\n \"application/vnd.epson.ssf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ssf\"]\n },\n \"application/vnd.ericsson.quickcall\": {\n \"source\": \"iana\"\n },\n \"application/vnd.espass-espass+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.eszigno3+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es3\",\"et3\"]\n },\n \"application/vnd.etsi.aoc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.asic-e+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.asic-s+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.cug+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvcommand+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-bc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-cod+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-npvr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvservice+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mcid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mheg5\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.pstn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.sci+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.simservs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.timestamp-token\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.tsl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.tsl.der\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eu.kasparian.car+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.eudora.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.profile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.settings\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.theme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.exstream-empower+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.exstream-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ezpix-album\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez2\"]\n },\n \"application/vnd.ezpix-package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez3\"]\n },\n \"application/vnd.f-secure.mobile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.familysearch.gedcom+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.fastcopy-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"fdf\"]\n },\n \"application/vnd.fdsn.mseed\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseed\"]\n },\n \"application/vnd.fdsn.seed\": {\n \"source\": \"iana\",\n \"extensions\": [\"seed\",\"dataless\"]\n },\n \"application/vnd.ffsns\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ficlab.flb+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.filmit.zfc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fints\": {\n \"source\": \"iana\"\n },\n \"application/vnd.firemonkeys.cloudcell\": {\n \"source\": \"iana\"\n },\n \"application/vnd.flographit\": {\n \"source\": \"iana\",\n \"extensions\": [\"gph\"]\n },\n \"application/vnd.fluxtime.clip\": {\n \"source\": \"iana\",\n \"extensions\": [\"ftc\"]\n },\n \"application/vnd.font-fontforge-sfd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.framemaker\": {\n \"source\": \"iana\",\n \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n },\n \"application/vnd.frogans.fnc\": {\n \"source\": \"iana\",\n \"extensions\": [\"fnc\"]\n },\n \"application/vnd.frogans.ltf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ltf\"]\n },\n \"application/vnd.fsc.weblaunch\": {\n \"source\": \"iana\",\n \"extensions\": [\"fsc\"]\n },\n \"application/vnd.fujifilm.fb.docuworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.binder\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.jfi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fujitsu.oasys\": {\n \"source\": \"iana\",\n \"extensions\": [\"oas\"]\n },\n \"application/vnd.fujitsu.oasys2\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa2\"]\n },\n \"application/vnd.fujitsu.oasys3\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa3\"]\n },\n \"application/vnd.fujitsu.oasysgp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fg5\"]\n },\n \"application/vnd.fujitsu.oasysprs\": {\n \"source\": \"iana\",\n \"extensions\": [\"bh2\"]\n },\n \"application/vnd.fujixerox.art-ex\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.art4\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.ddd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ddd\"]\n },\n \"application/vnd.fujixerox.docuworks\": {\n \"source\": \"iana\",\n \"extensions\": [\"xdw\"]\n },\n \"application/vnd.fujixerox.docuworks.binder\": {\n \"source\": \"iana\",\n \"extensions\": [\"xbd\"]\n },\n \"application/vnd.fujixerox.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.hbpl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fut-misnet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fuzzysheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fzs\"]\n },\n \"application/vnd.genomatix.tuxedo\": {\n \"source\": \"iana\",\n \"extensions\": [\"txd\"]\n },\n \"application/vnd.gentics.grd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geocube+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geogebra.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggb\"]\n },\n \"application/vnd.geogebra.slides\": {\n \"source\": \"iana\"\n },\n \"application/vnd.geogebra.tool\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggt\"]\n },\n \"application/vnd.geometry-explorer\": {\n \"source\": \"iana\",\n \"extensions\": [\"gex\",\"gre\"]\n },\n \"application/vnd.geonext\": {\n \"source\": \"iana\",\n \"extensions\": [\"gxt\"]\n },\n \"application/vnd.geoplan\": {\n \"source\": \"iana\",\n \"extensions\": [\"g2w\"]\n },\n \"application/vnd.geospace\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3w\"]\n },\n \"application/vnd.gerber\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.gmx\": {\n \"source\": \"iana\",\n \"extensions\": [\"gmx\"]\n },\n \"application/vnd.google-apps.document\": {\n \"compressible\": false,\n \"extensions\": [\"gdoc\"]\n },\n \"application/vnd.google-apps.presentation\": {\n \"compressible\": false,\n \"extensions\": [\"gslides\"]\n },\n \"application/vnd.google-apps.spreadsheet\": {\n \"compressible\": false,\n \"extensions\": [\"gsheet\"]\n },\n \"application/vnd.google-earth.kml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"kml\"]\n },\n \"application/vnd.google-earth.kmz\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"kmz\"]\n },\n \"application/vnd.gov.sk.e-form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.gov.sk.e-form+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.grafeq\": {\n \"source\": \"iana\",\n \"extensions\": [\"gqf\",\"gqs\"]\n },\n \"application/vnd.gridmp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.groove-account\": {\n \"source\": \"iana\",\n \"extensions\": [\"gac\"]\n },\n \"application/vnd.groove-help\": {\n \"source\": \"iana\",\n \"extensions\": [\"ghf\"]\n },\n \"application/vnd.groove-identity-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gim\"]\n },\n \"application/vnd.groove-injector\": {\n \"source\": \"iana\",\n \"extensions\": [\"grv\"]\n },\n \"application/vnd.groove-tool-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtm\"]\n },\n \"application/vnd.groove-tool-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpl\"]\n },\n \"application/vnd.groove-vcard\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcg\"]\n },\n \"application/vnd.hal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"hal\"]\n },\n \"application/vnd.handheld-entertainment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zmm\"]\n },\n \"application/vnd.hbci\": {\n \"source\": \"iana\",\n \"extensions\": [\"hbci\"]\n },\n \"application/vnd.hc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hcl-bireports\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hdt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.heroku+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hhe.lesson-player\": {\n \"source\": \"iana\",\n \"extensions\": [\"les\"]\n },\n \"application/vnd.hl7cda+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hl7v2+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hp-hpgl\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpgl\"]\n },\n \"application/vnd.hp-hpid\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpid\"]\n },\n \"application/vnd.hp-hps\": {\n \"source\": \"iana\",\n \"extensions\": [\"hps\"]\n },\n \"application/vnd.hp-jlyt\": {\n \"source\": \"iana\",\n \"extensions\": [\"jlt\"]\n },\n \"application/vnd.hp-pcl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcl\"]\n },\n \"application/vnd.hp-pclxl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pclxl\"]\n },\n \"application/vnd.httphone\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hydrostatix.sof-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfd-hdstx\"]\n },\n \"application/vnd.hyper+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyper-item+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyperdrive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hzn-3d-crossword\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.electronic-media\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.minipay\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpy\"]\n },\n \"application/vnd.ibm.modcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n },\n \"application/vnd.ibm.rights-management\": {\n \"source\": \"iana\",\n \"extensions\": [\"irm\"]\n },\n \"application/vnd.ibm.secure-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"sc\"]\n },\n \"application/vnd.iccprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"icc\",\"icm\"]\n },\n \"application/vnd.ieee.1905\": {\n \"source\": \"iana\"\n },\n \"application/vnd.igloader\": {\n \"source\": \"iana\",\n \"extensions\": [\"igl\"]\n },\n \"application/vnd.imagemeter.folder+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.imagemeter.image+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.immervision-ivp\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivp\"]\n },\n \"application/vnd.immervision-ivu\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivu\"]\n },\n \"application/vnd.ims.imsccv1p1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.lis.v2.result+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informedcontrol.rms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informix-visionary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.innopath.wamp.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.insors.igm\": {\n \"source\": \"iana\",\n \"extensions\": [\"igm\"]\n },\n \"application/vnd.intercon.formnet\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpw\",\"xpx\"]\n },\n \"application/vnd.intergeo\": {\n \"source\": \"iana\",\n \"extensions\": [\"i2g\"]\n },\n \"application/vnd.intertrust.digibox\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intertrust.nncp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intu.qbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"qbo\"]\n },\n \"application/vnd.intu.qfx\": {\n \"source\": \"iana\",\n \"extensions\": [\"qfx\"]\n },\n \"application/vnd.iptc.g2.catalogitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.conceptitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.packageitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.planningitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ipunplugged.rcprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"rcprofile\"]\n },\n \"application/vnd.irepository.package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"irp\"]\n },\n \"application/vnd.is-xpr\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpr\"]\n },\n \"application/vnd.isac.fcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcs\"]\n },\n \"application/vnd.iso11783-10+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.jam\": {\n \"source\": \"iana\",\n \"extensions\": [\"jam\"]\n },\n \"application/vnd.japannet-directory-service\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-jpnstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-payment-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-setstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.jcp.javame.midlet-rms\": {\n \"source\": \"iana\",\n \"extensions\": [\"rms\"]\n },\n \"application/vnd.jisp\": {\n \"source\": \"iana\",\n \"extensions\": [\"jisp\"]\n },\n \"application/vnd.joost.joda-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"joda\"]\n },\n \"application/vnd.jsk.isdn-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.kahootz\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktz\",\"ktr\"]\n },\n \"application/vnd.kde.karbon\": {\n \"source\": \"iana\",\n \"extensions\": [\"karbon\"]\n },\n \"application/vnd.kde.kchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"chrt\"]\n },\n \"application/vnd.kde.kformula\": {\n \"source\": \"iana\",\n \"extensions\": [\"kfo\"]\n },\n \"application/vnd.kde.kivio\": {\n \"source\": \"iana\",\n \"extensions\": [\"flw\"]\n },\n \"application/vnd.kde.kontour\": {\n \"source\": \"iana\",\n \"extensions\": [\"kon\"]\n },\n \"application/vnd.kde.kpresenter\": {\n \"source\": \"iana\",\n \"extensions\": [\"kpr\",\"kpt\"]\n },\n \"application/vnd.kde.kspread\": {\n \"source\": \"iana\",\n \"extensions\": [\"ksp\"]\n },\n \"application/vnd.kde.kword\": {\n \"source\": \"iana\",\n \"extensions\": [\"kwd\",\"kwt\"]\n },\n \"application/vnd.kenameaapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"htke\"]\n },\n \"application/vnd.kidspiration\": {\n \"source\": \"iana\",\n \"extensions\": [\"kia\"]\n },\n \"application/vnd.kinar\": {\n \"source\": \"iana\",\n \"extensions\": [\"kne\",\"knp\"]\n },\n \"application/vnd.koan\": {\n \"source\": \"iana\",\n \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n },\n \"application/vnd.kodak-descriptor\": {\n \"source\": \"iana\",\n \"extensions\": [\"sse\"]\n },\n \"application/vnd.las\": {\n \"source\": \"iana\"\n },\n \"application/vnd.las.las+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.las.las+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lasxml\"]\n },\n \"application/vnd.laszip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.leap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.liberty-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.llamagraphics.life-balance.desktop\": {\n \"source\": \"iana\",\n \"extensions\": [\"lbd\"]\n },\n \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lbe\"]\n },\n \"application/vnd.logipipe.circuit+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.loom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.lotus-1-2-3\": {\n \"source\": \"iana\",\n \"extensions\": [\"123\"]\n },\n \"application/vnd.lotus-approach\": {\n \"source\": \"iana\",\n \"extensions\": [\"apr\"]\n },\n \"application/vnd.lotus-freelance\": {\n \"source\": \"iana\",\n \"extensions\": [\"pre\"]\n },\n \"application/vnd.lotus-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"nsf\"]\n },\n \"application/vnd.lotus-organizer\": {\n \"source\": \"iana\",\n \"extensions\": [\"org\"]\n },\n \"application/vnd.lotus-screencam\": {\n \"source\": \"iana\",\n \"extensions\": [\"scm\"]\n },\n \"application/vnd.lotus-wordpro\": {\n \"source\": \"iana\",\n \"extensions\": [\"lwp\"]\n },\n \"application/vnd.macports.portpkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"portpkg\"]\n },\n \"application/vnd.mapbox-vector-tile\": {\n \"source\": \"iana\",\n \"extensions\": [\"mvt\"]\n },\n \"application/vnd.marlin.drm.actiontoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.conftoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.license+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.mdcf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mason+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.maxar.archive.3tz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.maxmind.maxmind-db\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mcd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mcd\"]\n },\n \"application/vnd.medcalcdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"mc1\"]\n },\n \"application/vnd.mediastation.cdkey\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdkey\"]\n },\n \"application/vnd.meridian-slingshot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mfer\": {\n \"source\": \"iana\",\n \"extensions\": [\"mwf\"]\n },\n \"application/vnd.mfmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"mfm\"]\n },\n \"application/vnd.micro+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.micrografx.flo\": {\n \"source\": \"iana\",\n \"extensions\": [\"flo\"]\n },\n \"application/vnd.micrografx.igx\": {\n \"source\": \"iana\",\n \"extensions\": [\"igx\"]\n },\n \"application/vnd.microsoft.portable-executable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.microsoft.windows.thumbnail-cache\": {\n \"source\": \"iana\"\n },\n \"application/vnd.miele+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.mif\": {\n \"source\": \"iana\",\n \"extensions\": [\"mif\"]\n },\n \"application/vnd.minisoft-hp3000-save\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mobius.daf\": {\n \"source\": \"iana\",\n \"extensions\": [\"daf\"]\n },\n \"application/vnd.mobius.dis\": {\n \"source\": \"iana\",\n \"extensions\": [\"dis\"]\n },\n \"application/vnd.mobius.mbk\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbk\"]\n },\n \"application/vnd.mobius.mqy\": {\n \"source\": \"iana\",\n \"extensions\": [\"mqy\"]\n },\n \"application/vnd.mobius.msl\": {\n \"source\": \"iana\",\n \"extensions\": [\"msl\"]\n },\n \"application/vnd.mobius.plc\": {\n \"source\": \"iana\",\n \"extensions\": [\"plc\"]\n },\n \"application/vnd.mobius.txf\": {\n \"source\": \"iana\",\n \"extensions\": [\"txf\"]\n },\n \"application/vnd.mophun.application\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpn\"]\n },\n \"application/vnd.mophun.certificate\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpc\"]\n },\n \"application/vnd.motorola.flexsuite\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.adsi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.fis\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.gotap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.kmr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.ttc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.wem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.iprm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mozilla.xul+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xul\"]\n },\n \"application/vnd.ms-3mfdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-artgalry\": {\n \"source\": \"iana\",\n \"extensions\": [\"cil\"]\n },\n \"application/vnd.ms-asf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-cab-compressed\": {\n \"source\": \"iana\",\n \"extensions\": [\"cab\"]\n },\n \"application/vnd.ms-color.iccprofile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-excel\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n },\n \"application/vnd.ms-excel.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlam\"]\n },\n \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsb\"]\n },\n \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsm\"]\n },\n \"application/vnd.ms-excel.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltm\"]\n },\n \"application/vnd.ms-fontobject\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eot\"]\n },\n \"application/vnd.ms-htmlhelp\": {\n \"source\": \"iana\",\n \"extensions\": [\"chm\"]\n },\n \"application/vnd.ms-ims\": {\n \"source\": \"iana\",\n \"extensions\": [\"ims\"]\n },\n \"application/vnd.ms-lrm\": {\n \"source\": \"iana\",\n \"extensions\": [\"lrm\"]\n },\n \"application/vnd.ms-office.activex+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-officetheme\": {\n \"source\": \"iana\",\n \"extensions\": [\"thmx\"]\n },\n \"application/vnd.ms-opentype\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-outlook\": {\n \"compressible\": false,\n \"extensions\": [\"msg\"]\n },\n \"application/vnd.ms-package.obfuscated-opentype\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-pki.seccat\": {\n \"source\": \"apache\",\n \"extensions\": [\"cat\"]\n },\n \"application/vnd.ms-pki.stl\": {\n \"source\": \"apache\",\n \"extensions\": [\"stl\"]\n },\n \"application/vnd.ms-playready.initiator+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-powerpoint\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n },\n \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppam\"]\n },\n \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"pptm\"]\n },\n \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldm\"]\n },\n \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsm\"]\n },\n \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"potm\"]\n },\n \"application/vnd.ms-printdevicecapabilities+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-printing.printticket+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-printschematicket+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-project\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpp\",\"mpt\"]\n },\n \"application/vnd.ms-tnef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.nwprinting.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.printerpairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.wsd.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-word.document.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"docm\"]\n },\n \"application/vnd.ms-word.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotm\"]\n },\n \"application/vnd.ms-works\": {\n \"source\": \"iana\",\n \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n },\n \"application/vnd.ms-wpl\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpl\"]\n },\n \"application/vnd.ms-xpsdocument\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xps\"]\n },\n \"application/vnd.msa-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mseq\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseq\"]\n },\n \"application/vnd.msign\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator.cif\": {\n \"source\": \"iana\"\n },\n \"application/vnd.music-niff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.musician\": {\n \"source\": \"iana\",\n \"extensions\": [\"mus\"]\n },\n \"application/vnd.muvee.style\": {\n \"source\": \"iana\",\n \"extensions\": [\"msty\"]\n },\n \"application/vnd.mynfc\": {\n \"source\": \"iana\",\n \"extensions\": [\"taglet\"]\n },\n \"application/vnd.nacamar.ybrid+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ncd.control\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ncd.reference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nearst.inv+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nebumind.line\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nervana\": {\n \"source\": \"iana\"\n },\n \"application/vnd.netfpx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.neurolanguage.nlu\": {\n \"source\": \"iana\",\n \"extensions\": [\"nlu\"]\n },\n \"application/vnd.nimn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.nitro.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.snes.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nitf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ntf\",\"nitf\"]\n },\n \"application/vnd.noblenet-directory\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnd\"]\n },\n \"application/vnd.noblenet-sealer\": {\n \"source\": \"iana\",\n \"extensions\": [\"nns\"]\n },\n \"application/vnd.noblenet-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnw\"]\n },\n \"application/vnd.nokia.catalogs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.iptv.config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.isds-radio-presets\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.landmarkcollection+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.n-gage.ac+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ac\"]\n },\n \"application/vnd.nokia.n-gage.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"ngdat\"]\n },\n \"application/vnd.nokia.n-gage.symbian.install\": {\n \"source\": \"iana\",\n \"extensions\": [\"n-gage\"]\n },\n \"application/vnd.nokia.ncd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.radio-preset\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpst\"]\n },\n \"application/vnd.nokia.radio-presets\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpss\"]\n },\n \"application/vnd.novadigm.edm\": {\n \"source\": \"iana\",\n \"extensions\": [\"edm\"]\n },\n \"application/vnd.novadigm.edx\": {\n \"source\": \"iana\",\n \"extensions\": [\"edx\"]\n },\n \"application/vnd.novadigm.ext\": {\n \"source\": \"iana\",\n \"extensions\": [\"ext\"]\n },\n \"application/vnd.ntt-local.content-share\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.file-transfer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.ogw_remote-access\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_remote\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oasis.opendocument.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"odc\"]\n },\n \"application/vnd.oasis.opendocument.chart-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otc\"]\n },\n \"application/vnd.oasis.opendocument.database\": {\n \"source\": \"iana\",\n \"extensions\": [\"odb\"]\n },\n \"application/vnd.oasis.opendocument.formula\": {\n \"source\": \"iana\",\n \"extensions\": [\"odf\"]\n },\n \"application/vnd.oasis.opendocument.formula-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"odft\"]\n },\n \"application/vnd.oasis.opendocument.graphics\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odg\"]\n },\n \"application/vnd.oasis.opendocument.graphics-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otg\"]\n },\n \"application/vnd.oasis.opendocument.image\": {\n \"source\": \"iana\",\n \"extensions\": [\"odi\"]\n },\n \"application/vnd.oasis.opendocument.image-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"oti\"]\n },\n \"application/vnd.oasis.opendocument.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odp\"]\n },\n \"application/vnd.oasis.opendocument.presentation-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otp\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ods\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ots\"]\n },\n \"application/vnd.oasis.opendocument.text\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odt\"]\n },\n \"application/vnd.oasis.opendocument.text-master\": {\n \"source\": \"iana\",\n \"extensions\": [\"odm\"]\n },\n \"application/vnd.oasis.opendocument.text-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ott\"]\n },\n \"application/vnd.oasis.opendocument.text-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"oth\"]\n },\n \"application/vnd.obn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ocf+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oci.image.manifest.v1+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oftn.l10n+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessdownload+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessstreaming+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.cspg-hexbinary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.dae.svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.dae.xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.pae.gem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.spdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.spdlist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.ueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.userprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.olpc-sugar\": {\n \"source\": \"iana\",\n \"extensions\": [\"xo\"]\n },\n \"application/vnd.oma-scws-config\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-request\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.drm-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.imd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.ltkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.notification+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.provisioningtrigger\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgboot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgdd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sgdu\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.simple-symbol-container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sprov+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.stkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.cab-address-book+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-feature-handler+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-pcc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-subs-invite+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-user-prefs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.dcd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dcdc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dd2+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dd2\"]\n },\n \"application/vnd.oma.drm.risd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.group-usage-list+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.lwm2m+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+tlv\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.pal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.final-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.groups+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.push\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.scidm.messages+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.xcap-directory+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.omads-email+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-file+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-folder+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omaloc-supl-init\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepager\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertat\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openblox.game+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"obgx\"]\n },\n \"application/vnd.openblox.game-binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openeye.oeb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openofficeorg.extension\": {\n \"source\": \"apache\",\n \"extensions\": [\"oxt\"]\n },\n \"application/vnd.openstreetmap.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osm\"]\n },\n \"application/vnd.opentimestamps.ots\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pptx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"potx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xlsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"docx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.core-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.relationships+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oracle.resource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.orange.indata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osa.netdeploy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgeo.mapguide.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgp\"]\n },\n \"application/vnd.osgi.bundle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgi.dp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dp\"]\n },\n \"application/vnd.osgi.subsystem\": {\n \"source\": \"iana\",\n \"extensions\": [\"esa\"]\n },\n \"application/vnd.otps.ct-kip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oxli.countgraph\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pagerduty+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.palm\": {\n \"source\": \"iana\",\n \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n },\n \"application/vnd.panoply\": {\n \"source\": \"iana\"\n },\n \"application/vnd.paos.xml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patentdive\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patientecommsdoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pawaafile\": {\n \"source\": \"iana\",\n \"extensions\": [\"paw\"]\n },\n \"application/vnd.pcos\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pg.format\": {\n \"source\": \"iana\",\n \"extensions\": [\"str\"]\n },\n \"application/vnd.pg.osasli\": {\n \"source\": \"iana\",\n \"extensions\": [\"ei6\"]\n },\n \"application/vnd.piaccess.application-licence\": {\n \"source\": \"iana\"\n },\n \"application/vnd.picsel\": {\n \"source\": \"iana\",\n \"extensions\": [\"efif\"]\n },\n \"application/vnd.pmi.widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wg\"]\n },\n \"application/vnd.poc.group-advertisement+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.pocketlearn\": {\n \"source\": \"iana\",\n \"extensions\": [\"plf\"]\n },\n \"application/vnd.powerbuilder6\": {\n \"source\": \"iana\",\n \"extensions\": [\"pbd\"]\n },\n \"application/vnd.powerbuilder6-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.preminet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.previewsystems.box\": {\n \"source\": \"iana\",\n \"extensions\": [\"box\"]\n },\n \"application/vnd.proteus.magazine\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgz\"]\n },\n \"application/vnd.psfs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.publishare-delta-tree\": {\n \"source\": \"iana\",\n \"extensions\": [\"qps\"]\n },\n \"application/vnd.pvi.ptid1\": {\n \"source\": \"iana\",\n \"extensions\": [\"ptid\"]\n },\n \"application/vnd.pwg-multiplexed\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pwg-xhtml-print+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.qualcomm.brew-app-res\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quarantainenet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quark.quarkxpress\": {\n \"source\": \"iana\",\n \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n },\n \"application/vnd.quobject-quoxdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.radisys.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-stream+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-base+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-group+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-speech+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-transform+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rainstor.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rapid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rar\": {\n \"source\": \"iana\",\n \"extensions\": [\"rar\"]\n },\n \"application/vnd.realvnc.bed\": {\n \"source\": \"iana\",\n \"extensions\": [\"bed\"]\n },\n \"application/vnd.recordare.musicxml\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxl\"]\n },\n \"application/vnd.recordare.musicxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musicxml\"]\n },\n \"application/vnd.renlearn.rlprint\": {\n \"source\": \"iana\"\n },\n \"application/vnd.resilient.logic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.restful+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rig.cryptonote\": {\n \"source\": \"iana\",\n \"extensions\": [\"cryptonote\"]\n },\n \"application/vnd.rim.cod\": {\n \"source\": \"apache\",\n \"extensions\": [\"cod\"]\n },\n \"application/vnd.rn-realmedia\": {\n \"source\": \"apache\",\n \"extensions\": [\"rm\"]\n },\n \"application/vnd.rn-realmedia-vbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmvb\"]\n },\n \"application/vnd.route66.link66+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"link66\"]\n },\n \"application/vnd.rs-274x\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ruckus.download\": {\n \"source\": \"iana\"\n },\n \"application/vnd.s3sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sailingtracker.track\": {\n \"source\": \"iana\",\n \"extensions\": [\"st\"]\n },\n \"application/vnd.sar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.cid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.mid2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.scribus\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.3df\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.csf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.doc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.eml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.mht\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.net\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.ppt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.tiff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.xls\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.seemail\": {\n \"source\": \"iana\",\n \"extensions\": [\"see\"]\n },\n \"application/vnd.seis+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.sema\": {\n \"source\": \"iana\",\n \"extensions\": [\"sema\"]\n },\n \"application/vnd.semd\": {\n \"source\": \"iana\",\n \"extensions\": [\"semd\"]\n },\n \"application/vnd.semf\": {\n \"source\": \"iana\",\n \"extensions\": [\"semf\"]\n },\n \"application/vnd.shade-save-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shana.informed.formdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"ifm\"]\n },\n \"application/vnd.shana.informed.formtemplate\": {\n \"source\": \"iana\",\n \"extensions\": [\"itp\"]\n },\n \"application/vnd.shana.informed.interchange\": {\n \"source\": \"iana\",\n \"extensions\": [\"iif\"]\n },\n \"application/vnd.shana.informed.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipk\"]\n },\n \"application/vnd.shootproof+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shopkick+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sigrok.session\": {\n \"source\": \"iana\"\n },\n \"application/vnd.simtech-mindmapper\": {\n \"source\": \"iana\",\n \"extensions\": [\"twd\",\"twds\"]\n },\n \"application/vnd.siren+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.smaf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmf\"]\n },\n \"application/vnd.smart.notebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.smart.teacher\": {\n \"source\": \"iana\",\n \"extensions\": [\"teacher\"]\n },\n \"application/vnd.snesdev-page-table\": {\n \"source\": \"iana\"\n },\n \"application/vnd.software602.filler.form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fo\"]\n },\n \"application/vnd.software602.filler.form-xml-zip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.solent.sdkm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sdkm\",\"sdkd\"]\n },\n \"application/vnd.spotfire.dxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxp\"]\n },\n \"application/vnd.spotfire.sfs\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfs\"]\n },\n \"application/vnd.sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-cod\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-dtf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-ntf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.stardivision.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdc\"]\n },\n \"application/vnd.stardivision.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sda\"]\n },\n \"application/vnd.stardivision.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdd\"]\n },\n \"application/vnd.stardivision.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"smf\"]\n },\n \"application/vnd.stardivision.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdw\",\"vor\"]\n },\n \"application/vnd.stardivision.writer-global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgl\"]\n },\n \"application/vnd.stepmania.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"smzip\"]\n },\n \"application/vnd.stepmania.stepchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"sm\"]\n },\n \"application/vnd.street-stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sun.wadl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wadl\"]\n },\n \"application/vnd.sun.xml.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxc\"]\n },\n \"application/vnd.sun.xml.calc.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stc\"]\n },\n \"application/vnd.sun.xml.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxd\"]\n },\n \"application/vnd.sun.xml.draw.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"std\"]\n },\n \"application/vnd.sun.xml.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxi\"]\n },\n \"application/vnd.sun.xml.impress.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"sti\"]\n },\n \"application/vnd.sun.xml.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxm\"]\n },\n \"application/vnd.sun.xml.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxw\"]\n },\n \"application/vnd.sun.xml.writer.global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxg\"]\n },\n \"application/vnd.sun.xml.writer.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stw\"]\n },\n \"application/vnd.sus-calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"sus\",\"susp\"]\n },\n \"application/vnd.svd\": {\n \"source\": \"iana\",\n \"extensions\": [\"svd\"]\n },\n \"application/vnd.swiftview-ics\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sycle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.syft+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.symbian.install\": {\n \"source\": \"apache\",\n \"extensions\": [\"sis\",\"sisx\"]\n },\n \"application/vnd.syncml+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xsm\"]\n },\n \"application/vnd.syncml.dm+wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"bdm\"]\n },\n \"application/vnd.syncml.dm+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xdm\"]\n },\n \"application/vnd.syncml.dm.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"ddf\"]\n },\n \"application/vnd.syncml.dmtnds+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmtnds+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.syncml.ds.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tableschema+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tao.intent-module-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"tao\"]\n },\n \"application/vnd.tcpdump.pcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n },\n \"application/vnd.think-cell.ppttc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tmd.mediaflex.api+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tmobile-livetv\": {\n \"source\": \"iana\",\n \"extensions\": [\"tmo\"]\n },\n \"application/vnd.tri.onesource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.trid.tpt\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpt\"]\n },\n \"application/vnd.triscape.mxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxs\"]\n },\n \"application/vnd.trueapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"tra\"]\n },\n \"application/vnd.truedoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ubisoft.webplayer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ufdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"ufd\",\"ufdl\"]\n },\n \"application/vnd.uiq.theme\": {\n \"source\": \"iana\",\n \"extensions\": [\"utz\"]\n },\n \"application/vnd.umajin\": {\n \"source\": \"iana\",\n \"extensions\": [\"umj\"]\n },\n \"application/vnd.unity\": {\n \"source\": \"iana\",\n \"extensions\": [\"unityweb\"]\n },\n \"application/vnd.uoml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uoml\"]\n },\n \"application/vnd.uplanet.alert\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.alert-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.signal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uri-map\": {\n \"source\": \"iana\"\n },\n \"application/vnd.valve.source.material\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcx\"]\n },\n \"application/vnd.vd-study\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vectorworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vel+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.verimatrix.vcas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.veritone.aion+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.veryant.thin\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ves.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vidsoft.vidconference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.visio\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\"]\n },\n \"application/vnd.visionary\": {\n \"source\": \"iana\",\n \"extensions\": [\"vis\"]\n },\n \"application/vnd.vividence.scriptfile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vsf\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsf\"]\n },\n \"application/vnd.wap.sic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.slc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"wbxml\"]\n },\n \"application/vnd.wap.wmlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlc\"]\n },\n \"application/vnd.wap.wmlscriptc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlsc\"]\n },\n \"application/vnd.webturbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"wtb\"]\n },\n \"application/vnd.wfa.dpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.p2p\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.wsc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmf.bootstrap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica.package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.player\": {\n \"source\": \"iana\",\n \"extensions\": [\"nbp\"]\n },\n \"application/vnd.wordperfect\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpd\"]\n },\n \"application/vnd.wqd\": {\n \"source\": \"iana\",\n \"extensions\": [\"wqd\"]\n },\n \"application/vnd.wrq-hp3000-labelled\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wt.stf\": {\n \"source\": \"iana\",\n \"extensions\": [\"stf\"]\n },\n \"application/vnd.wv.csp+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wv.csp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.wv.ssp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xacml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xara\": {\n \"source\": \"iana\",\n \"extensions\": [\"xar\"]\n },\n \"application/vnd.xfdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdl\"]\n },\n \"application/vnd.xfdl.webform\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xmpie.cpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.dpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.plan\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.ppkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.xlim\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.hv-dic\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvd\"]\n },\n \"application/vnd.yamaha.hv-script\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvs\"]\n },\n \"application/vnd.yamaha.hv-voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvp\"]\n },\n \"application/vnd.yamaha.openscoreformat\": {\n \"source\": \"iana\",\n \"extensions\": [\"osf\"]\n },\n \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osfpvg\"]\n },\n \"application/vnd.yamaha.remote-setup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.smaf-audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"saf\"]\n },\n \"application/vnd.yamaha.smaf-phrase\": {\n \"source\": \"iana\",\n \"extensions\": [\"spf\"]\n },\n \"application/vnd.yamaha.through-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.tunnel-udpencap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yaoweme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yellowriver-custom-menu\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmp\"]\n },\n \"application/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.zul\": {\n \"source\": \"iana\",\n \"extensions\": [\"zir\",\"zirz\"]\n },\n \"application/vnd.zzazz.deck+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zaz\"]\n },\n \"application/voicexml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vxml\"]\n },\n \"application/voucher-cms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vq-rtcpxr\": {\n \"source\": \"iana\"\n },\n \"application/wasm\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wasm\"]\n },\n \"application/watcherinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wif\"]\n },\n \"application/webpush-options+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/whoispp-query\": {\n \"source\": \"iana\"\n },\n \"application/whoispp-response\": {\n \"source\": \"iana\"\n },\n \"application/widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wgt\"]\n },\n \"application/winhlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"hlp\"]\n },\n \"application/wita\": {\n \"source\": \"iana\"\n },\n \"application/wordperfect5.1\": {\n \"source\": \"iana\"\n },\n \"application/wsdl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wsdl\"]\n },\n \"application/wspolicy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wspolicy\"]\n },\n \"application/x-7z-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"7z\"]\n },\n \"application/x-abiword\": {\n \"source\": \"apache\",\n \"extensions\": [\"abw\"]\n },\n \"application/x-ace-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"ace\"]\n },\n \"application/x-amf\": {\n \"source\": \"apache\"\n },\n \"application/x-apple-diskimage\": {\n \"source\": \"apache\",\n \"extensions\": [\"dmg\"]\n },\n \"application/x-arj\": {\n \"compressible\": false,\n \"extensions\": [\"arj\"]\n },\n \"application/x-authorware-bin\": {\n \"source\": \"apache\",\n \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n },\n \"application/x-authorware-map\": {\n \"source\": \"apache\",\n \"extensions\": [\"aam\"]\n },\n \"application/x-authorware-seg\": {\n \"source\": \"apache\",\n \"extensions\": [\"aas\"]\n },\n \"application/x-bcpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"bcpio\"]\n },\n \"application/x-bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/x-bittorrent\": {\n \"source\": \"apache\",\n \"extensions\": [\"torrent\"]\n },\n \"application/x-blorb\": {\n \"source\": \"apache\",\n \"extensions\": [\"blb\",\"blorb\"]\n },\n \"application/x-bzip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz\"]\n },\n \"application/x-bzip2\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz2\",\"boz\"]\n },\n \"application/x-cbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n },\n \"application/x-cdlink\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcd\"]\n },\n \"application/x-cfs-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"cfs\"]\n },\n \"application/x-chat\": {\n \"source\": \"apache\",\n \"extensions\": [\"chat\"]\n },\n \"application/x-chess-pgn\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgn\"]\n },\n \"application/x-chrome-extension\": {\n \"extensions\": [\"crx\"]\n },\n \"application/x-cocoa\": {\n \"source\": \"nginx\",\n \"extensions\": [\"cco\"]\n },\n \"application/x-compress\": {\n \"source\": \"apache\"\n },\n \"application/x-conference\": {\n \"source\": \"apache\",\n \"extensions\": [\"nsc\"]\n },\n \"application/x-cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpio\"]\n },\n \"application/x-csh\": {\n \"source\": \"apache\",\n \"extensions\": [\"csh\"]\n },\n \"application/x-deb\": {\n \"compressible\": false\n },\n \"application/x-debian-package\": {\n \"source\": \"apache\",\n \"extensions\": [\"deb\",\"udeb\"]\n },\n \"application/x-dgc-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"dgc\"]\n },\n \"application/x-director\": {\n \"source\": \"apache\",\n \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n },\n \"application/x-doom\": {\n \"source\": \"apache\",\n \"extensions\": [\"wad\"]\n },\n \"application/x-dtbncx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ncx\"]\n },\n \"application/x-dtbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dtb\"]\n },\n \"application/x-dtbresource+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"res\"]\n },\n \"application/x-dvi\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"dvi\"]\n },\n \"application/x-envoy\": {\n \"source\": \"apache\",\n \"extensions\": [\"evy\"]\n },\n \"application/x-eva\": {\n \"source\": \"apache\",\n \"extensions\": [\"eva\"]\n },\n \"application/x-font-bdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"bdf\"]\n },\n \"application/x-font-dos\": {\n \"source\": \"apache\"\n },\n \"application/x-font-framemaker\": {\n \"source\": \"apache\"\n },\n \"application/x-font-ghostscript\": {\n \"source\": \"apache\",\n \"extensions\": [\"gsf\"]\n },\n \"application/x-font-libgrx\": {\n \"source\": \"apache\"\n },\n \"application/x-font-linux-psf\": {\n \"source\": \"apache\",\n \"extensions\": [\"psf\"]\n },\n \"application/x-font-pcf\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcf\"]\n },\n \"application/x-font-snf\": {\n \"source\": \"apache\",\n \"extensions\": [\"snf\"]\n },\n \"application/x-font-speedo\": {\n \"source\": \"apache\"\n },\n \"application/x-font-sunos-news\": {\n \"source\": \"apache\"\n },\n \"application/x-font-type1\": {\n \"source\": \"apache\",\n \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n },\n \"application/x-font-vfont\": {\n \"source\": \"apache\"\n },\n \"application/x-freearc\": {\n \"source\": \"apache\",\n \"extensions\": [\"arc\"]\n },\n \"application/x-futuresplash\": {\n \"source\": \"apache\",\n \"extensions\": [\"spl\"]\n },\n \"application/x-gca-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"gca\"]\n },\n \"application/x-glulx\": {\n \"source\": \"apache\",\n \"extensions\": [\"ulx\"]\n },\n \"application/x-gnumeric\": {\n \"source\": \"apache\",\n \"extensions\": [\"gnumeric\"]\n },\n \"application/x-gramps-xml\": {\n \"source\": \"apache\",\n \"extensions\": [\"gramps\"]\n },\n \"application/x-gtar\": {\n \"source\": \"apache\",\n \"extensions\": [\"gtar\"]\n },\n \"application/x-gzip\": {\n \"source\": \"apache\"\n },\n \"application/x-hdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"hdf\"]\n },\n \"application/x-httpd-php\": {\n \"compressible\": true,\n \"extensions\": [\"php\"]\n },\n \"application/x-install-instructions\": {\n \"source\": \"apache\",\n \"extensions\": [\"install\"]\n },\n \"application/x-iso9660-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"iso\"]\n },\n \"application/x-iwork-keynote-sffkey\": {\n \"extensions\": [\"key\"]\n },\n \"application/x-iwork-numbers-sffnumbers\": {\n \"extensions\": [\"numbers\"]\n },\n \"application/x-iwork-pages-sffpages\": {\n \"extensions\": [\"pages\"]\n },\n \"application/x-java-archive-diff\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jardiff\"]\n },\n \"application/x-java-jnlp-file\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jnlp\"]\n },\n \"application/x-javascript\": {\n \"compressible\": true\n },\n \"application/x-keepass2\": {\n \"extensions\": [\"kdbx\"]\n },\n \"application/x-latex\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"latex\"]\n },\n \"application/x-lua-bytecode\": {\n \"extensions\": [\"luac\"]\n },\n \"application/x-lzh-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"lzh\",\"lha\"]\n },\n \"application/x-makeself\": {\n \"source\": \"nginx\",\n \"extensions\": [\"run\"]\n },\n \"application/x-mie\": {\n \"source\": \"apache\",\n \"extensions\": [\"mie\"]\n },\n \"application/x-mobipocket-ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"prc\",\"mobi\"]\n },\n \"application/x-mpegurl\": {\n \"compressible\": false\n },\n \"application/x-ms-application\": {\n \"source\": \"apache\",\n \"extensions\": [\"application\"]\n },\n \"application/x-ms-shortcut\": {\n \"source\": \"apache\",\n \"extensions\": [\"lnk\"]\n },\n \"application/x-ms-wmd\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmd\"]\n },\n \"application/x-ms-wmz\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmz\"]\n },\n \"application/x-ms-xbap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbap\"]\n },\n \"application/x-msaccess\": {\n \"source\": \"apache\",\n \"extensions\": [\"mdb\"]\n },\n \"application/x-msbinder\": {\n \"source\": \"apache\",\n \"extensions\": [\"obd\"]\n },\n \"application/x-mscardfile\": {\n \"source\": \"apache\",\n \"extensions\": [\"crd\"]\n },\n \"application/x-msclip\": {\n \"source\": \"apache\",\n \"extensions\": [\"clp\"]\n },\n \"application/x-msdos-program\": {\n \"extensions\": [\"exe\"]\n },\n \"application/x-msdownload\": {\n \"source\": \"apache\",\n \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n },\n \"application/x-msmediaview\": {\n \"source\": \"apache\",\n \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n },\n \"application/x-msmetafile\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n },\n \"application/x-msmoney\": {\n \"source\": \"apache\",\n \"extensions\": [\"mny\"]\n },\n \"application/x-mspublisher\": {\n \"source\": \"apache\",\n \"extensions\": [\"pub\"]\n },\n \"application/x-msschedule\": {\n \"source\": \"apache\",\n \"extensions\": [\"scd\"]\n },\n \"application/x-msterminal\": {\n \"source\": \"apache\",\n \"extensions\": [\"trm\"]\n },\n \"application/x-mswrite\": {\n \"source\": \"apache\",\n \"extensions\": [\"wri\"]\n },\n \"application/x-netcdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"nc\",\"cdf\"]\n },\n \"application/x-ns-proxy-autoconfig\": {\n \"compressible\": true,\n \"extensions\": [\"pac\"]\n },\n \"application/x-nzb\": {\n \"source\": \"apache\",\n \"extensions\": [\"nzb\"]\n },\n \"application/x-perl\": {\n \"source\": \"nginx\",\n \"extensions\": [\"pl\",\"pm\"]\n },\n \"application/x-pilot\": {\n \"source\": \"nginx\",\n \"extensions\": [\"prc\",\"pdb\"]\n },\n \"application/x-pkcs12\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"p12\",\"pfx\"]\n },\n \"application/x-pkcs7-certificates\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7b\",\"spc\"]\n },\n \"application/x-pkcs7-certreqresp\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7r\"]\n },\n \"application/x-pki-message\": {\n \"source\": \"iana\"\n },\n \"application/x-rar-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"rar\"]\n },\n \"application/x-redhat-package-manager\": {\n \"source\": \"nginx\",\n \"extensions\": [\"rpm\"]\n },\n \"application/x-research-info-systems\": {\n \"source\": \"apache\",\n \"extensions\": [\"ris\"]\n },\n \"application/x-sea\": {\n \"source\": \"nginx\",\n \"extensions\": [\"sea\"]\n },\n \"application/x-sh\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"sh\"]\n },\n \"application/x-shar\": {\n \"source\": \"apache\",\n \"extensions\": [\"shar\"]\n },\n \"application/x-shockwave-flash\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"swf\"]\n },\n \"application/x-silverlight-app\": {\n \"source\": \"apache\",\n \"extensions\": [\"xap\"]\n },\n \"application/x-sql\": {\n \"source\": \"apache\",\n \"extensions\": [\"sql\"]\n },\n \"application/x-stuffit\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"sit\"]\n },\n \"application/x-stuffitx\": {\n \"source\": \"apache\",\n \"extensions\": [\"sitx\"]\n },\n \"application/x-subrip\": {\n \"source\": \"apache\",\n \"extensions\": [\"srt\"]\n },\n \"application/x-sv4cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4cpio\"]\n },\n \"application/x-sv4crc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4crc\"]\n },\n \"application/x-t3vm-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"t3\"]\n },\n \"application/x-tads\": {\n \"source\": \"apache\",\n \"extensions\": [\"gam\"]\n },\n \"application/x-tar\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"tar\"]\n },\n \"application/x-tcl\": {\n \"source\": \"apache\",\n \"extensions\": [\"tcl\",\"tk\"]\n },\n \"application/x-tex\": {\n \"source\": \"apache\",\n \"extensions\": [\"tex\"]\n },\n \"application/x-tex-tfm\": {\n \"source\": \"apache\",\n \"extensions\": [\"tfm\"]\n },\n \"application/x-texinfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"texinfo\",\"texi\"]\n },\n \"application/x-tgif\": {\n \"source\": \"apache\",\n \"extensions\": [\"obj\"]\n },\n \"application/x-ustar\": {\n \"source\": \"apache\",\n \"extensions\": [\"ustar\"]\n },\n \"application/x-virtualbox-hdd\": {\n \"compressible\": true,\n \"extensions\": [\"hdd\"]\n },\n \"application/x-virtualbox-ova\": {\n \"compressible\": true,\n \"extensions\": [\"ova\"]\n },\n \"application/x-virtualbox-ovf\": {\n \"compressible\": true,\n \"extensions\": [\"ovf\"]\n },\n \"application/x-virtualbox-vbox\": {\n \"compressible\": true,\n \"extensions\": [\"vbox\"]\n },\n \"application/x-virtualbox-vbox-extpack\": {\n \"compressible\": false,\n \"extensions\": [\"vbox-extpack\"]\n },\n \"application/x-virtualbox-vdi\": {\n \"compressible\": true,\n \"extensions\": [\"vdi\"]\n },\n \"application/x-virtualbox-vhd\": {\n \"compressible\": true,\n \"extensions\": [\"vhd\"]\n },\n \"application/x-virtualbox-vmdk\": {\n \"compressible\": true,\n \"extensions\": [\"vmdk\"]\n },\n \"application/x-wais-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"src\"]\n },\n \"application/x-web-app-manifest+json\": {\n \"compressible\": true,\n \"extensions\": [\"webapp\"]\n },\n \"application/x-www-form-urlencoded\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/x-x509-ca-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"der\",\"crt\",\"pem\"]\n },\n \"application/x-x509-ca-ra-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-x509-next-ca-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-xfig\": {\n \"source\": \"apache\",\n \"extensions\": [\"fig\"]\n },\n \"application/x-xliff+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/x-xpinstall\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"xpi\"]\n },\n \"application/x-xz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xz\"]\n },\n \"application/x-zmachine\": {\n \"source\": \"apache\",\n \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n },\n \"application/x400-bp\": {\n \"source\": \"iana\"\n },\n \"application/xacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xaml+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xaml\"]\n },\n \"application/xcap-att+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xav\"]\n },\n \"application/xcap-caps+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xca\"]\n },\n \"application/xcap-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdf\"]\n },\n \"application/xcap-el+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xel\"]\n },\n \"application/xcap-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcap-ns+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xns\"]\n },\n \"application/xcon-conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcon-conference-info-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xenc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xenc\"]\n },\n \"application/xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xhtml\",\"xht\"]\n },\n \"application/xhtml-voice+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/xliff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n },\n \"application/xml-dtd\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dtd\"]\n },\n \"application/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"application/xml-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xmpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xop\"]\n },\n \"application/xproc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xpl\"]\n },\n \"application/xslt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xsl\",\"xslt\"]\n },\n \"application/xspf+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xspf\"]\n },\n \"application/xv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n },\n \"application/yang\": {\n \"source\": \"iana\",\n \"extensions\": [\"yang\"]\n },\n \"application/yang-data+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yin+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"yin\"]\n },\n \"application/zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"zip\"]\n },\n \"application/zlib\": {\n \"source\": \"iana\"\n },\n \"application/zstd\": {\n \"source\": \"iana\"\n },\n \"audio/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/3gpp\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"3gpp\"]\n },\n \"audio/3gpp2\": {\n \"source\": \"iana\"\n },\n \"audio/aac\": {\n \"source\": \"iana\"\n },\n \"audio/ac3\": {\n \"source\": \"iana\"\n },\n \"audio/adpcm\": {\n \"source\": \"apache\",\n \"extensions\": [\"adp\"]\n },\n \"audio/amr\": {\n \"source\": \"iana\",\n \"extensions\": [\"amr\"]\n },\n \"audio/amr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/amr-wb+\": {\n \"source\": \"iana\"\n },\n \"audio/aptx\": {\n \"source\": \"iana\"\n },\n \"audio/asc\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-advanced-lossless\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-x\": {\n \"source\": \"iana\"\n },\n \"audio/atrac3\": {\n \"source\": \"iana\"\n },\n \"audio/basic\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"au\",\"snd\"]\n },\n \"audio/bv16\": {\n \"source\": \"iana\"\n },\n \"audio/bv32\": {\n \"source\": \"iana\"\n },\n \"audio/clearmode\": {\n \"source\": \"iana\"\n },\n \"audio/cn\": {\n \"source\": \"iana\"\n },\n \"audio/dat12\": {\n \"source\": \"iana\"\n },\n \"audio/dls\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es201108\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202050\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202211\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202212\": {\n \"source\": \"iana\"\n },\n \"audio/dv\": {\n \"source\": \"iana\"\n },\n \"audio/dvi4\": {\n \"source\": \"iana\"\n },\n \"audio/eac3\": {\n \"source\": \"iana\"\n },\n \"audio/encaprtp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc\": {\n \"source\": \"iana\"\n },\n \"audio/evrc-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc0\": {\n \"source\": \"iana\"\n },\n \"audio/evrc1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb1\": {\n \"source\": \"iana\"\n },\n \"audio/evs\": {\n \"source\": \"iana\"\n },\n \"audio/flexfec\": {\n \"source\": \"iana\"\n },\n \"audio/fwdred\": {\n \"source\": \"iana\"\n },\n \"audio/g711-0\": {\n \"source\": \"iana\"\n },\n \"audio/g719\": {\n \"source\": \"iana\"\n },\n \"audio/g722\": {\n \"source\": \"iana\"\n },\n \"audio/g7221\": {\n \"source\": \"iana\"\n },\n \"audio/g723\": {\n \"source\": \"iana\"\n },\n \"audio/g726-16\": {\n \"source\": \"iana\"\n },\n \"audio/g726-24\": {\n \"source\": \"iana\"\n },\n \"audio/g726-32\": {\n \"source\": \"iana\"\n },\n \"audio/g726-40\": {\n \"source\": \"iana\"\n },\n \"audio/g728\": {\n \"source\": \"iana\"\n },\n \"audio/g729\": {\n \"source\": \"iana\"\n },\n \"audio/g7291\": {\n \"source\": \"iana\"\n },\n \"audio/g729d\": {\n \"source\": \"iana\"\n },\n \"audio/g729e\": {\n \"source\": \"iana\"\n },\n \"audio/gsm\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-efr\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-hr-08\": {\n \"source\": \"iana\"\n },\n \"audio/ilbc\": {\n \"source\": \"iana\"\n },\n \"audio/ip-mr_v2.5\": {\n \"source\": \"iana\"\n },\n \"audio/isac\": {\n \"source\": \"apache\"\n },\n \"audio/l16\": {\n \"source\": \"iana\"\n },\n \"audio/l20\": {\n \"source\": \"iana\"\n },\n \"audio/l24\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/l8\": {\n \"source\": \"iana\"\n },\n \"audio/lpc\": {\n \"source\": \"iana\"\n },\n \"audio/melp\": {\n \"source\": \"iana\"\n },\n \"audio/melp1200\": {\n \"source\": \"iana\"\n },\n \"audio/melp2400\": {\n \"source\": \"iana\"\n },\n \"audio/melp600\": {\n \"source\": \"iana\"\n },\n \"audio/mhas\": {\n \"source\": \"iana\"\n },\n \"audio/midi\": {\n \"source\": \"apache\",\n \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n },\n \"audio/mobile-xmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxmf\"]\n },\n \"audio/mp3\": {\n \"compressible\": false,\n \"extensions\": [\"mp3\"]\n },\n \"audio/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"m4a\",\"mp4a\"]\n },\n \"audio/mp4a-latm\": {\n \"source\": \"iana\"\n },\n \"audio/mpa\": {\n \"source\": \"iana\"\n },\n \"audio/mpa-robust\": {\n \"source\": \"iana\"\n },\n \"audio/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n },\n \"audio/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"audio/musepack\": {\n \"source\": \"apache\"\n },\n \"audio/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n },\n \"audio/opus\": {\n \"source\": \"iana\"\n },\n \"audio/parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/pcma\": {\n \"source\": \"iana\"\n },\n \"audio/pcma-wb\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu-wb\": {\n \"source\": \"iana\"\n },\n \"audio/prs.sid\": {\n \"source\": \"iana\"\n },\n \"audio/qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/raptorfec\": {\n \"source\": \"iana\"\n },\n \"audio/red\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/rtploopback\": {\n \"source\": \"iana\"\n },\n \"audio/rtx\": {\n \"source\": \"iana\"\n },\n \"audio/s3m\": {\n \"source\": \"apache\",\n \"extensions\": [\"s3m\"]\n },\n \"audio/scip\": {\n \"source\": \"iana\"\n },\n \"audio/silk\": {\n \"source\": \"apache\",\n \"extensions\": [\"sil\"]\n },\n \"audio/smv\": {\n \"source\": \"iana\"\n },\n \"audio/smv-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/smv0\": {\n \"source\": \"iana\"\n },\n \"audio/sofa\": {\n \"source\": \"iana\"\n },\n \"audio/sp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/speex\": {\n \"source\": \"iana\"\n },\n \"audio/t140c\": {\n \"source\": \"iana\"\n },\n \"audio/t38\": {\n \"source\": \"iana\"\n },\n \"audio/telephone-event\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp_bb\": {\n \"source\": \"iana\"\n },\n \"audio/tone\": {\n \"source\": \"iana\"\n },\n \"audio/tsvcis\": {\n \"source\": \"iana\"\n },\n \"audio/uemclip\": {\n \"source\": \"iana\"\n },\n \"audio/ulpfec\": {\n \"source\": \"iana\"\n },\n \"audio/usac\": {\n \"source\": \"iana\"\n },\n \"audio/vdvi\": {\n \"source\": \"iana\"\n },\n \"audio/vmr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.3gpp.iufp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.4sb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.audiokoz\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.celp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cisco.nse\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cmles.radio-events\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.anp1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.inf1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dece.audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"uva\",\"uvva\"]\n },\n \"audio/vnd.digital-winds\": {\n \"source\": \"iana\",\n \"extensions\": [\"eol\"]\n },\n \"audio/vnd.dlna.adts\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mlp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mps\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2x\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2z\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pulse.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dra\": {\n \"source\": \"iana\",\n \"extensions\": [\"dra\"]\n },\n \"audio/vnd.dts\": {\n \"source\": \"iana\",\n \"extensions\": [\"dts\"]\n },\n \"audio/vnd.dts.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"dtshd\"]\n },\n \"audio/vnd.dts.uhd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dvb.file\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.everad.plj\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.hns.audio\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.lucent.voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"lvp\"]\n },\n \"audio/vnd.ms-playready.media.pya\": {\n \"source\": \"iana\",\n \"extensions\": [\"pya\"]\n },\n \"audio/vnd.nokia.mobile-xmf\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nortel.vbk\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nuera.ecelp4800\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp4800\"]\n },\n \"audio/vnd.nuera.ecelp7470\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp7470\"]\n },\n \"audio/vnd.nuera.ecelp9600\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp9600\"]\n },\n \"audio/vnd.octel.sbc\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.presonus.multitrack\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rhetorex.32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rip\": {\n \"source\": \"iana\",\n \"extensions\": [\"rip\"]\n },\n \"audio/vnd.rn-realaudio\": {\n \"compressible\": false\n },\n \"audio/vnd.sealedmedia.softseal.mpeg\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.vmx.cvsd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.wave\": {\n \"compressible\": false\n },\n \"audio/vorbis\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/vorbis-config\": {\n \"source\": \"iana\"\n },\n \"audio/wav\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/wave\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"weba\"]\n },\n \"audio/x-aac\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"aac\"]\n },\n \"audio/x-aiff\": {\n \"source\": \"apache\",\n \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n },\n \"audio/x-caf\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"caf\"]\n },\n \"audio/x-flac\": {\n \"source\": \"apache\",\n \"extensions\": [\"flac\"]\n },\n \"audio/x-m4a\": {\n \"source\": \"nginx\",\n \"extensions\": [\"m4a\"]\n },\n \"audio/x-matroska\": {\n \"source\": \"apache\",\n \"extensions\": [\"mka\"]\n },\n \"audio/x-mpegurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"m3u\"]\n },\n \"audio/x-ms-wax\": {\n \"source\": \"apache\",\n \"extensions\": [\"wax\"]\n },\n \"audio/x-ms-wma\": {\n \"source\": \"apache\",\n \"extensions\": [\"wma\"]\n },\n \"audio/x-pn-realaudio\": {\n \"source\": \"apache\",\n \"extensions\": [\"ram\",\"ra\"]\n },\n \"audio/x-pn-realaudio-plugin\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmp\"]\n },\n \"audio/x-realaudio\": {\n \"source\": \"nginx\",\n \"extensions\": [\"ra\"]\n },\n \"audio/x-tta\": {\n \"source\": \"apache\"\n },\n \"audio/x-wav\": {\n \"source\": \"apache\",\n \"extensions\": [\"wav\"]\n },\n \"audio/xm\": {\n \"source\": \"apache\",\n \"extensions\": [\"xm\"]\n },\n \"chemical/x-cdx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cdx\"]\n },\n \"chemical/x-cif\": {\n \"source\": \"apache\",\n \"extensions\": [\"cif\"]\n },\n \"chemical/x-cmdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmdf\"]\n },\n \"chemical/x-cml\": {\n \"source\": \"apache\",\n \"extensions\": [\"cml\"]\n },\n \"chemical/x-csml\": {\n \"source\": \"apache\",\n \"extensions\": [\"csml\"]\n },\n \"chemical/x-pdb\": {\n \"source\": \"apache\"\n },\n \"chemical/x-xyz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xyz\"]\n },\n \"font/collection\": {\n \"source\": \"iana\",\n \"extensions\": [\"ttc\"]\n },\n \"font/otf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"otf\"]\n },\n \"font/sfnt\": {\n \"source\": \"iana\"\n },\n \"font/ttf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttf\"]\n },\n \"font/woff\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff\"]\n },\n \"font/woff2\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff2\"]\n },\n \"image/aces\": {\n \"source\": \"iana\",\n \"extensions\": [\"exr\"]\n },\n \"image/apng\": {\n \"compressible\": false,\n \"extensions\": [\"apng\"]\n },\n \"image/avci\": {\n \"source\": \"iana\",\n \"extensions\": [\"avci\"]\n },\n \"image/avcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"avcs\"]\n },\n \"image/avif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"avif\"]\n },\n \"image/bmp\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/cgm\": {\n \"source\": \"iana\",\n \"extensions\": [\"cgm\"]\n },\n \"image/dicom-rle\": {\n \"source\": \"iana\",\n \"extensions\": [\"drle\"]\n },\n \"image/emf\": {\n \"source\": \"iana\",\n \"extensions\": [\"emf\"]\n },\n \"image/fits\": {\n \"source\": \"iana\",\n \"extensions\": [\"fits\"]\n },\n \"image/g3fax\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3\"]\n },\n \"image/gif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gif\"]\n },\n \"image/heic\": {\n \"source\": \"iana\",\n \"extensions\": [\"heic\"]\n },\n \"image/heic-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heics\"]\n },\n \"image/heif\": {\n \"source\": \"iana\",\n \"extensions\": [\"heif\"]\n },\n \"image/heif-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heifs\"]\n },\n \"image/hej2k\": {\n \"source\": \"iana\",\n \"extensions\": [\"hej2\"]\n },\n \"image/hsj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"hsj2\"]\n },\n \"image/ief\": {\n \"source\": \"iana\",\n \"extensions\": [\"ief\"]\n },\n \"image/jls\": {\n \"source\": \"iana\",\n \"extensions\": [\"jls\"]\n },\n \"image/jp2\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jp2\",\"jpg2\"]\n },\n \"image/jpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpeg\",\"jpg\",\"jpe\"]\n },\n \"image/jph\": {\n \"source\": \"iana\",\n \"extensions\": [\"jph\"]\n },\n \"image/jphc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jhc\"]\n },\n \"image/jpm\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpm\"]\n },\n \"image/jpx\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpx\",\"jpf\"]\n },\n \"image/jxr\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxr\"]\n },\n \"image/jxra\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxra\"]\n },\n \"image/jxrs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxrs\"]\n },\n \"image/jxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxs\"]\n },\n \"image/jxsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsc\"]\n },\n \"image/jxsi\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsi\"]\n },\n \"image/jxss\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxss\"]\n },\n \"image/ktx\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx\"]\n },\n \"image/ktx2\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx2\"]\n },\n \"image/naplps\": {\n \"source\": \"iana\"\n },\n \"image/pjpeg\": {\n \"compressible\": false\n },\n \"image/png\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"png\"]\n },\n \"image/prs.btif\": {\n \"source\": \"iana\",\n \"extensions\": [\"btif\"]\n },\n \"image/prs.pti\": {\n \"source\": \"iana\",\n \"extensions\": [\"pti\"]\n },\n \"image/pwg-raster\": {\n \"source\": \"iana\"\n },\n \"image/sgi\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgi\"]\n },\n \"image/svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"svg\",\"svgz\"]\n },\n \"image/t38\": {\n \"source\": \"iana\",\n \"extensions\": [\"t38\"]\n },\n \"image/tiff\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"tif\",\"tiff\"]\n },\n \"image/tiff-fx\": {\n \"source\": \"iana\",\n \"extensions\": [\"tfx\"]\n },\n \"image/vnd.adobe.photoshop\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"psd\"]\n },\n \"image/vnd.airzip.accelerator.azv\": {\n \"source\": \"iana\",\n \"extensions\": [\"azv\"]\n },\n \"image/vnd.cns.inf2\": {\n \"source\": \"iana\"\n },\n \"image/vnd.dece.graphic\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n },\n \"image/vnd.djvu\": {\n \"source\": \"iana\",\n \"extensions\": [\"djvu\",\"djv\"]\n },\n \"image/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"image/vnd.dwg\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwg\"]\n },\n \"image/vnd.dxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxf\"]\n },\n \"image/vnd.fastbidsheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fbs\"]\n },\n \"image/vnd.fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"fpx\"]\n },\n \"image/vnd.fst\": {\n \"source\": \"iana\",\n \"extensions\": [\"fst\"]\n },\n \"image/vnd.fujixerox.edmics-mmr\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmr\"]\n },\n \"image/vnd.fujixerox.edmics-rlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"rlc\"]\n },\n \"image/vnd.globalgraphics.pgb\": {\n \"source\": \"iana\"\n },\n \"image/vnd.microsoft.icon\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/vnd.mix\": {\n \"source\": \"iana\"\n },\n \"image/vnd.mozilla.apng\": {\n \"source\": \"iana\"\n },\n \"image/vnd.ms-dds\": {\n \"compressible\": true,\n \"extensions\": [\"dds\"]\n },\n \"image/vnd.ms-modi\": {\n \"source\": \"iana\",\n \"extensions\": [\"mdi\"]\n },\n \"image/vnd.ms-photo\": {\n \"source\": \"apache\",\n \"extensions\": [\"wdp\"]\n },\n \"image/vnd.net-fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"npx\"]\n },\n \"image/vnd.pco.b16\": {\n \"source\": \"iana\",\n \"extensions\": [\"b16\"]\n },\n \"image/vnd.radiance\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealed.png\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.gif\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.jpg\": {\n \"source\": \"iana\"\n },\n \"image/vnd.svf\": {\n \"source\": \"iana\"\n },\n \"image/vnd.tencent.tap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tap\"]\n },\n \"image/vnd.valve.source.texture\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtf\"]\n },\n \"image/vnd.wap.wbmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"wbmp\"]\n },\n \"image/vnd.xiff\": {\n \"source\": \"iana\",\n \"extensions\": [\"xif\"]\n },\n \"image/vnd.zbrush.pcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcx\"]\n },\n \"image/webp\": {\n \"source\": \"apache\",\n \"extensions\": [\"webp\"]\n },\n \"image/wmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmf\"]\n },\n \"image/x-3ds\": {\n \"source\": \"apache\",\n \"extensions\": [\"3ds\"]\n },\n \"image/x-cmu-raster\": {\n \"source\": \"apache\",\n \"extensions\": [\"ras\"]\n },\n \"image/x-cmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmx\"]\n },\n \"image/x-freehand\": {\n \"source\": \"apache\",\n \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n },\n \"image/x-icon\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/x-jng\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jng\"]\n },\n \"image/x-mrsid-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"sid\"]\n },\n \"image/x-ms-bmp\": {\n \"source\": \"nginx\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/x-pcx\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcx\"]\n },\n \"image/x-pict\": {\n \"source\": \"apache\",\n \"extensions\": [\"pic\",\"pct\"]\n },\n \"image/x-portable-anymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pnm\"]\n },\n \"image/x-portable-bitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pbm\"]\n },\n \"image/x-portable-graymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgm\"]\n },\n \"image/x-portable-pixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"ppm\"]\n },\n \"image/x-rgb\": {\n \"source\": \"apache\",\n \"extensions\": [\"rgb\"]\n },\n \"image/x-tga\": {\n \"source\": \"apache\",\n \"extensions\": [\"tga\"]\n },\n \"image/x-xbitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbm\"]\n },\n \"image/x-xcf\": {\n \"compressible\": false\n },\n \"image/x-xpixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xpm\"]\n },\n \"image/x-xwindowdump\": {\n \"source\": \"apache\",\n \"extensions\": [\"xwd\"]\n },\n \"message/cpim\": {\n \"source\": \"iana\"\n },\n \"message/delivery-status\": {\n \"source\": \"iana\"\n },\n \"message/disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\n \"disposition-notification\"\n ]\n },\n \"message/external-body\": {\n \"source\": \"iana\"\n },\n \"message/feedback-report\": {\n \"source\": \"iana\"\n },\n \"message/global\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8msg\"]\n },\n \"message/global-delivery-status\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8dsn\"]\n },\n \"message/global-disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8mdn\"]\n },\n \"message/global-headers\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8hdr\"]\n },\n \"message/http\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/imdn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"message/news\": {\n \"source\": \"iana\"\n },\n \"message/partial\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/rfc822\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eml\",\"mime\"]\n },\n \"message/s-http\": {\n \"source\": \"iana\"\n },\n \"message/sip\": {\n \"source\": \"iana\"\n },\n \"message/sipfrag\": {\n \"source\": \"iana\"\n },\n \"message/tracking-status\": {\n \"source\": \"iana\"\n },\n \"message/vnd.si.simp\": {\n \"source\": \"iana\"\n },\n \"message/vnd.wfa.wsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wsc\"]\n },\n \"model/3mf\": {\n \"source\": \"iana\",\n \"extensions\": [\"3mf\"]\n },\n \"model/e57\": {\n \"source\": \"iana\"\n },\n \"model/gltf+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gltf\"]\n },\n \"model/gltf-binary\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"glb\"]\n },\n \"model/iges\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"igs\",\"iges\"]\n },\n \"model/mesh\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n },\n \"model/mtl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mtl\"]\n },\n \"model/obj\": {\n \"source\": \"iana\",\n \"extensions\": [\"obj\"]\n },\n \"model/step\": {\n \"source\": \"iana\"\n },\n \"model/step+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"stpx\"]\n },\n \"model/step+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpz\"]\n },\n \"model/step-xml+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpxz\"]\n },\n \"model/stl\": {\n \"source\": \"iana\",\n \"extensions\": [\"stl\"]\n },\n \"model/vnd.collada+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dae\"]\n },\n \"model/vnd.dwf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwf\"]\n },\n \"model/vnd.flatland.3dml\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"gdl\"]\n },\n \"model/vnd.gs-gdl\": {\n \"source\": \"apache\"\n },\n \"model/vnd.gs.gdl\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gtw\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtw\"]\n },\n \"model/vnd.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"model/vnd.mts\": {\n \"source\": \"iana\",\n \"extensions\": [\"mts\"]\n },\n \"model/vnd.opengex\": {\n \"source\": \"iana\",\n \"extensions\": [\"ogex\"]\n },\n \"model/vnd.parasolid.transmit.binary\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_b\"]\n },\n \"model/vnd.parasolid.transmit.text\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_t\"]\n },\n \"model/vnd.pytha.pyox\": {\n \"source\": \"iana\"\n },\n \"model/vnd.rosette.annotated-data-model\": {\n \"source\": \"iana\"\n },\n \"model/vnd.sap.vds\": {\n \"source\": \"iana\",\n \"extensions\": [\"vds\"]\n },\n \"model/vnd.usdz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"usdz\"]\n },\n \"model/vnd.valve.source.compiled-map\": {\n \"source\": \"iana\",\n \"extensions\": [\"bsp\"]\n },\n \"model/vnd.vtu\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtu\"]\n },\n \"model/vrml\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"wrl\",\"vrml\"]\n },\n \"model/x3d+binary\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3db\",\"x3dbz\"]\n },\n \"model/x3d+fastinfoset\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3db\"]\n },\n \"model/x3d+vrml\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3dv\",\"x3dvz\"]\n },\n \"model/x3d+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"x3d\",\"x3dz\"]\n },\n \"model/x3d-vrml\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3dv\"]\n },\n \"multipart/alternative\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/appledouble\": {\n \"source\": \"iana\"\n },\n \"multipart/byteranges\": {\n \"source\": \"iana\"\n },\n \"multipart/digest\": {\n \"source\": \"iana\"\n },\n \"multipart/encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/form-data\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/header-set\": {\n \"source\": \"iana\"\n },\n \"multipart/mixed\": {\n \"source\": \"iana\"\n },\n \"multipart/multilingual\": {\n \"source\": \"iana\"\n },\n \"multipart/parallel\": {\n \"source\": \"iana\"\n },\n \"multipart/related\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/report\": {\n \"source\": \"iana\"\n },\n \"multipart/signed\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/vnd.bint.med-plus\": {\n \"source\": \"iana\"\n },\n \"multipart/voice-message\": {\n \"source\": \"iana\"\n },\n \"multipart/x-mixed-replace\": {\n \"source\": \"iana\"\n },\n \"text/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"text/cache-manifest\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"appcache\",\"manifest\"]\n },\n \"text/calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"ics\",\"ifb\"]\n },\n \"text/calender\": {\n \"compressible\": true\n },\n \"text/cmd\": {\n \"compressible\": true\n },\n \"text/coffeescript\": {\n \"extensions\": [\"coffee\",\"litcoffee\"]\n },\n \"text/cql\": {\n \"source\": \"iana\"\n },\n \"text/cql-expression\": {\n \"source\": \"iana\"\n },\n \"text/cql-identifier\": {\n \"source\": \"iana\"\n },\n \"text/css\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"css\"]\n },\n \"text/csv\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csv\"]\n },\n \"text/csv-schema\": {\n \"source\": \"iana\"\n },\n \"text/directory\": {\n \"source\": \"iana\"\n },\n \"text/dns\": {\n \"source\": \"iana\"\n },\n \"text/ecmascript\": {\n \"source\": \"iana\"\n },\n \"text/encaprtp\": {\n \"source\": \"iana\"\n },\n \"text/enriched\": {\n \"source\": \"iana\"\n },\n \"text/fhirpath\": {\n \"source\": \"iana\"\n },\n \"text/flexfec\": {\n \"source\": \"iana\"\n },\n \"text/fwdred\": {\n \"source\": \"iana\"\n },\n \"text/gff3\": {\n \"source\": \"iana\"\n },\n \"text/grammar-ref-list\": {\n \"source\": \"iana\"\n },\n \"text/html\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"html\",\"htm\",\"shtml\"]\n },\n \"text/jade\": {\n \"extensions\": [\"jade\"]\n },\n \"text/javascript\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"text/jcr-cnd\": {\n \"source\": \"iana\"\n },\n \"text/jsx\": {\n \"compressible\": true,\n \"extensions\": [\"jsx\"]\n },\n \"text/less\": {\n \"compressible\": true,\n \"extensions\": [\"less\"]\n },\n \"text/markdown\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"markdown\",\"md\"]\n },\n \"text/mathml\": {\n \"source\": \"nginx\",\n \"extensions\": [\"mml\"]\n },\n \"text/mdx\": {\n \"compressible\": true,\n \"extensions\": [\"mdx\"]\n },\n \"text/mizar\": {\n \"source\": \"iana\"\n },\n \"text/n3\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"n3\"]\n },\n \"text/parameters\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/parityfec\": {\n \"source\": \"iana\"\n },\n \"text/plain\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n },\n \"text/provenance-notation\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/prs.fallenstein.rst\": {\n \"source\": \"iana\"\n },\n \"text/prs.lines.tag\": {\n \"source\": \"iana\",\n \"extensions\": [\"dsc\"]\n },\n \"text/prs.prop.logic\": {\n \"source\": \"iana\"\n },\n \"text/raptorfec\": {\n \"source\": \"iana\"\n },\n \"text/red\": {\n \"source\": \"iana\"\n },\n \"text/rfc822-headers\": {\n \"source\": \"iana\"\n },\n \"text/richtext\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtx\"]\n },\n \"text/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"text/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"text/rtploopback\": {\n \"source\": \"iana\"\n },\n \"text/rtx\": {\n \"source\": \"iana\"\n },\n \"text/sgml\": {\n \"source\": \"iana\",\n \"extensions\": [\"sgml\",\"sgm\"]\n },\n \"text/shaclc\": {\n \"source\": \"iana\"\n },\n \"text/shex\": {\n \"source\": \"iana\",\n \"extensions\": [\"shex\"]\n },\n \"text/slim\": {\n \"extensions\": [\"slim\",\"slm\"]\n },\n \"text/spdx\": {\n \"source\": \"iana\",\n \"extensions\": [\"spdx\"]\n },\n \"text/strings\": {\n \"source\": \"iana\"\n },\n \"text/stylus\": {\n \"extensions\": [\"stylus\",\"styl\"]\n },\n \"text/t140\": {\n \"source\": \"iana\"\n },\n \"text/tab-separated-values\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tsv\"]\n },\n \"text/troff\": {\n \"source\": \"iana\",\n \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n },\n \"text/turtle\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"ttl\"]\n },\n \"text/ulpfec\": {\n \"source\": \"iana\"\n },\n \"text/uri-list\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uri\",\"uris\",\"urls\"]\n },\n \"text/vcard\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vcard\"]\n },\n \"text/vnd.a\": {\n \"source\": \"iana\"\n },\n \"text/vnd.abc\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ascii-art\": {\n \"source\": \"iana\"\n },\n \"text/vnd.curl\": {\n \"source\": \"iana\",\n \"extensions\": [\"curl\"]\n },\n \"text/vnd.curl.dcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"dcurl\"]\n },\n \"text/vnd.curl.mcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"mcurl\"]\n },\n \"text/vnd.curl.scurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"scurl\"]\n },\n \"text/vnd.debian.copyright\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.dmclientscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"text/vnd.esmertec.theme-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.familysearch.gedcom\": {\n \"source\": \"iana\",\n \"extensions\": [\"ged\"]\n },\n \"text/vnd.ficlab.flt\": {\n \"source\": \"iana\"\n },\n \"text/vnd.fly\": {\n \"source\": \"iana\",\n \"extensions\": [\"fly\"]\n },\n \"text/vnd.fmi.flexstor\": {\n \"source\": \"iana\",\n \"extensions\": [\"flx\"]\n },\n \"text/vnd.gml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.graphviz\": {\n \"source\": \"iana\",\n \"extensions\": [\"gv\"]\n },\n \"text/vnd.hans\": {\n \"source\": \"iana\"\n },\n \"text/vnd.hgl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.in3d.3dml\": {\n \"source\": \"iana\",\n \"extensions\": [\"3dml\"]\n },\n \"text/vnd.in3d.spot\": {\n \"source\": \"iana\",\n \"extensions\": [\"spot\"]\n },\n \"text/vnd.iptc.newsml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.iptc.nitf\": {\n \"source\": \"iana\"\n },\n \"text/vnd.latex-z\": {\n \"source\": \"iana\"\n },\n \"text/vnd.motorola.reflex\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ms-mediapackage\": {\n \"source\": \"iana\"\n },\n \"text/vnd.net2phone.commcenter.command\": {\n \"source\": \"iana\"\n },\n \"text/vnd.radisys.msml-basic-layout\": {\n \"source\": \"iana\"\n },\n \"text/vnd.senx.warpscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.si.uricatalogue\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sosi\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sun.j2me.app-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"jad\"]\n },\n \"text/vnd.trolltech.linguist\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.wap.si\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.sl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.wml\": {\n \"source\": \"iana\",\n \"extensions\": [\"wml\"]\n },\n \"text/vnd.wap.wmlscript\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmls\"]\n },\n \"text/vtt\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"vtt\"]\n },\n \"text/x-asm\": {\n \"source\": \"apache\",\n \"extensions\": [\"s\",\"asm\"]\n },\n \"text/x-c\": {\n \"source\": \"apache\",\n \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n },\n \"text/x-component\": {\n \"source\": \"nginx\",\n \"extensions\": [\"htc\"]\n },\n \"text/x-fortran\": {\n \"source\": \"apache\",\n \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n },\n \"text/x-gwt-rpc\": {\n \"compressible\": true\n },\n \"text/x-handlebars-template\": {\n \"extensions\": [\"hbs\"]\n },\n \"text/x-java-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"java\"]\n },\n \"text/x-jquery-tmpl\": {\n \"compressible\": true\n },\n \"text/x-lua\": {\n \"extensions\": [\"lua\"]\n },\n \"text/x-markdown\": {\n \"compressible\": true,\n \"extensions\": [\"mkd\"]\n },\n \"text/x-nfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"nfo\"]\n },\n \"text/x-opml\": {\n \"source\": \"apache\",\n \"extensions\": [\"opml\"]\n },\n \"text/x-org\": {\n \"compressible\": true,\n \"extensions\": [\"org\"]\n },\n \"text/x-pascal\": {\n \"source\": \"apache\",\n \"extensions\": [\"p\",\"pas\"]\n },\n \"text/x-processing\": {\n \"compressible\": true,\n \"extensions\": [\"pde\"]\n },\n \"text/x-sass\": {\n \"extensions\": [\"sass\"]\n },\n \"text/x-scss\": {\n \"extensions\": [\"scss\"]\n },\n \"text/x-setext\": {\n \"source\": \"apache\",\n \"extensions\": [\"etx\"]\n },\n \"text/x-sfv\": {\n \"source\": \"apache\",\n \"extensions\": [\"sfv\"]\n },\n \"text/x-suse-ymp\": {\n \"compressible\": true,\n \"extensions\": [\"ymp\"]\n },\n \"text/x-uuencode\": {\n \"source\": \"apache\",\n \"extensions\": [\"uu\"]\n },\n \"text/x-vcalendar\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcs\"]\n },\n \"text/x-vcard\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcf\"]\n },\n \"text/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\"]\n },\n \"text/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"text/yaml\": {\n \"compressible\": true,\n \"extensions\": [\"yaml\",\"yml\"]\n },\n \"video/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"video/3gpp\": {\n \"source\": \"iana\",\n \"extensions\": [\"3gp\",\"3gpp\"]\n },\n \"video/3gpp-tt\": {\n \"source\": \"iana\"\n },\n \"video/3gpp2\": {\n \"source\": \"iana\",\n \"extensions\": [\"3g2\"]\n },\n \"video/av1\": {\n \"source\": \"iana\"\n },\n \"video/bmpeg\": {\n \"source\": \"iana\"\n },\n \"video/bt656\": {\n \"source\": \"iana\"\n },\n \"video/celb\": {\n \"source\": \"iana\"\n },\n \"video/dv\": {\n \"source\": \"iana\"\n },\n \"video/encaprtp\": {\n \"source\": \"iana\"\n },\n \"video/ffv1\": {\n \"source\": \"iana\"\n },\n \"video/flexfec\": {\n \"source\": \"iana\"\n },\n \"video/h261\": {\n \"source\": \"iana\",\n \"extensions\": [\"h261\"]\n },\n \"video/h263\": {\n \"source\": \"iana\",\n \"extensions\": [\"h263\"]\n },\n \"video/h263-1998\": {\n \"source\": \"iana\"\n },\n \"video/h263-2000\": {\n \"source\": \"iana\"\n },\n \"video/h264\": {\n \"source\": \"iana\",\n \"extensions\": [\"h264\"]\n },\n \"video/h264-rcdo\": {\n \"source\": \"iana\"\n },\n \"video/h264-svc\": {\n \"source\": \"iana\"\n },\n \"video/h265\": {\n \"source\": \"iana\"\n },\n \"video/iso.segment\": {\n \"source\": \"iana\",\n \"extensions\": [\"m4s\"]\n },\n \"video/jpeg\": {\n \"source\": \"iana\",\n \"extensions\": [\"jpgv\"]\n },\n \"video/jpeg2000\": {\n \"source\": \"iana\"\n },\n \"video/jpm\": {\n \"source\": \"apache\",\n \"extensions\": [\"jpm\",\"jpgm\"]\n },\n \"video/jxsv\": {\n \"source\": \"iana\"\n },\n \"video/mj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"mj2\",\"mjp2\"]\n },\n \"video/mp1s\": {\n \"source\": \"iana\"\n },\n \"video/mp2p\": {\n \"source\": \"iana\"\n },\n \"video/mp2t\": {\n \"source\": \"iana\",\n \"extensions\": [\"ts\"]\n },\n \"video/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n },\n \"video/mp4v-es\": {\n \"source\": \"iana\"\n },\n \"video/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n },\n \"video/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"video/mpv\": {\n \"source\": \"iana\"\n },\n \"video/nv\": {\n \"source\": \"iana\"\n },\n \"video/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogv\"]\n },\n \"video/parityfec\": {\n \"source\": \"iana\"\n },\n \"video/pointer\": {\n \"source\": \"iana\"\n },\n \"video/quicktime\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"qt\",\"mov\"]\n },\n \"video/raptorfec\": {\n \"source\": \"iana\"\n },\n \"video/raw\": {\n \"source\": \"iana\"\n },\n \"video/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"video/rtploopback\": {\n \"source\": \"iana\"\n },\n \"video/rtx\": {\n \"source\": \"iana\"\n },\n \"video/scip\": {\n \"source\": \"iana\"\n },\n \"video/smpte291\": {\n \"source\": \"iana\"\n },\n \"video/smpte292m\": {\n \"source\": \"iana\"\n },\n \"video/ulpfec\": {\n \"source\": \"iana\"\n },\n \"video/vc1\": {\n \"source\": \"iana\"\n },\n \"video/vc2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.cctv\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvh\",\"uvvh\"]\n },\n \"video/vnd.dece.mobile\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvm\",\"uvvm\"]\n },\n \"video/vnd.dece.mp4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.pd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvp\",\"uvvp\"]\n },\n \"video/vnd.dece.sd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvs\",\"uvvs\"]\n },\n \"video/vnd.dece.video\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvv\",\"uvvv\"]\n },\n \"video/vnd.directv.mpeg\": {\n \"source\": \"iana\"\n },\n \"video/vnd.directv.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dlna.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dvb.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"dvb\"]\n },\n \"video/vnd.fvt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fvt\"]\n },\n \"video/vnd.hns.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsavc\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsmpeg2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.videop\": {\n \"source\": \"iana\"\n },\n \"video/vnd.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxu\",\"m4u\"]\n },\n \"video/vnd.ms-playready.media.pyv\": {\n \"source\": \"iana\",\n \"extensions\": [\"pyv\"]\n },\n \"video/vnd.nokia.interleaved-multimedia\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.mp4vr\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.videovoip\": {\n \"source\": \"iana\"\n },\n \"video/vnd.objectvideo\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.bink\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.smacker\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg1\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.swf\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealedmedia.softseal.mov\": {\n \"source\": \"iana\"\n },\n \"video/vnd.uvvu.mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvu\",\"uvvu\"]\n },\n \"video/vnd.vivo\": {\n \"source\": \"iana\",\n \"extensions\": [\"viv\"]\n },\n \"video/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"video/vp8\": {\n \"source\": \"iana\"\n },\n \"video/vp9\": {\n \"source\": \"iana\"\n },\n \"video/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"webm\"]\n },\n \"video/x-f4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"f4v\"]\n },\n \"video/x-fli\": {\n \"source\": \"apache\",\n \"extensions\": [\"fli\"]\n },\n \"video/x-flv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"flv\"]\n },\n \"video/x-m4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"m4v\"]\n },\n \"video/x-matroska\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n },\n \"video/x-mng\": {\n \"source\": \"apache\",\n \"extensions\": [\"mng\"]\n },\n \"video/x-ms-asf\": {\n \"source\": \"apache\",\n \"extensions\": [\"asf\",\"asx\"]\n },\n \"video/x-ms-vob\": {\n \"source\": \"apache\",\n \"extensions\": [\"vob\"]\n },\n \"video/x-ms-wm\": {\n \"source\": \"apache\",\n \"extensions\": [\"wm\"]\n },\n \"video/x-ms-wmv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"wmv\"]\n },\n \"video/x-ms-wmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmx\"]\n },\n \"video/x-ms-wvx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wvx\"]\n },\n \"video/x-msvideo\": {\n \"source\": \"apache\",\n \"extensions\": [\"avi\"]\n },\n \"video/x-sgi-movie\": {\n \"source\": \"apache\",\n \"extensions\": [\"movie\"]\n },\n \"video/x-smv\": {\n \"source\": \"apache\",\n \"extensions\": [\"smv\"]\n },\n \"x-conference/x-cooltalk\": {\n \"source\": \"apache\",\n \"extensions\": [\"ice\"]\n },\n \"x-shader/x-fragment\": {\n \"compressible\": true\n },\n \"x-shader/x-vertex\": {\n \"compressible\": true\n }\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n", "'use strict';\n\nvar zlib = require('zlib');\n\nmodule.exports = {\n gzip: function gzip(input, options) {\n var promise = new Promise(function (resolve, reject) {\n zlib.gzip(input, options, function (error, result) {\n if (!error) resolve(result);else reject(Error(error));\n });\n });\n return promise;\n },\n ungzip: function ungzip(input, options) {\n var promise = new Promise(function (resolve, reject) {\n zlib.gunzip(input, options, function (error, result) {\n if (!error) resolve(result);else reject(Error(error));\n });\n });\n return promise;\n }\n};", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nexports.hasOwnProperty = hasOwnProperty;\nfunction _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys_1 = new Array(obj.length);\n for (var k = 0; k < keys_1.length; k++) {\n keys_1[k] = \"\" + k;\n }\n return keys_1;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\nexports._objectKeys = _objectKeys;\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nfunction _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null; //this is how JSON.stringify behaves for array items\n default:\n return obj; //no need to clone primitives\n }\n}\nexports._deepClone = _deepClone;\n//3x faster than cached /^\\d+$/.test(str)\nfunction isInteger(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\nexports.isInteger = isInteger;\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nfunction escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\nexports.escapePathComponent = escapePathComponent;\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nfunction unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexports.unescapePathComponent = unescapePathComponent;\nfunction _getPathRecursive(root, obj) {\n var found;\n for (var key in root) {\n if (hasOwnProperty(root, key)) {\n if (root[key] === obj) {\n return escapePathComponent(key) + '/';\n }\n else if (typeof root[key] === 'object') {\n found = _getPathRecursive(root[key], obj);\n if (found != '') {\n return escapePathComponent(key) + '/' + found;\n }\n }\n }\n }\n return '';\n}\nexports._getPathRecursive = _getPathRecursive;\nfunction getPath(root, obj) {\n if (root === obj) {\n return '/';\n }\n var path = _getPathRecursive(root, obj);\n if (path === '') {\n throw new Error(\"Object not found in root\");\n }\n return \"/\" + path;\n}\nexports.getPath = getPath;\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nfunction hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {\n if (hasUndefined(obj[i_1])) {\n return true;\n }\n }\n }\n else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nexports.hasUndefined = hasUndefined;\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n return _this;\n }\n return PatchError;\n}(Error));\nexports.PatchError = PatchError;\n", "Object.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_js_1 = require(\"./helpers.js\");\nexports.JsonPatchError = helpers_js_1.PatchError;\nexports.deepClone = helpers_js_1._deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function (obj, key, document) {\n obj[key] = this.value;\n return { newDocument: document };\n },\n remove: function (obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return { newDocument: document, removed: removed };\n },\n replace: function (obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: function (obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = helpers_js_1._deepClone(removed);\n }\n var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n return { newDocument: document, removed: removed };\n },\n copy: function (obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, { op: \"add\", path: this.path, value: helpers_js_1._deepClone(valueToCopy) });\n return { newDocument: document };\n },\n test: function (obj, key, document) {\n return { newDocument: document, test: _areEquals(obj[key], this.value) };\n },\n _get: function (obj, key, document) {\n this.value = obj[key];\n return { newDocument: document };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function (arr, i, document) {\n if (helpers_js_1.isInteger(i)) {\n arr.splice(i, 0, this.value);\n }\n else { // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return { newDocument: document, index: i };\n },\n remove: function (arr, i, document) {\n var removedList = arr.splice(i, 1);\n return { newDocument: document, removed: removedList[0] };\n },\n replace: function (arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nfunction getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = { op: \"_get\", path: pointer };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\nexports.getValueByPointer = getValueByPointer;\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nfunction applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) { validateOperation = false; }\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (index === void 0) { index = 0; }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n }\n else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = { newDocument: document };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n }\n else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n }\n else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') { // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n }\n else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new exports.JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n }\n else if (operation.op === 'remove') { // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n }\n else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n }\n else { /* bad operation */\n if (validateOperation) {\n throw new exports.JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */\n else {\n if (!mutateDocument) {\n document = helpers_js_1._deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n }\n else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = helpers_js_1.unescapePathComponent(key);\n }\n if (banPrototypeModifications &&\n (key == '__proto__' ||\n (key == 'prototype' && t > 0 && keys[t - 1] == 'constructor'))) {\n throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n }\n else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n }\n else {\n if (validateOperation && !helpers_js_1.isInteger(key)) {\n throw new exports.JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (helpers_js_1.isInteger(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new exports.JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new exports.JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new exports.JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new exports.JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\nexports.applyOperation = applyOperation;\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nfunction applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new exports.JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = helpers_js_1._deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n results.newDocument = document;\n return results;\n}\nexports.applyPatch = applyPatch;\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nfunction applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) { // failed test\n throw new exports.JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\nexports.applyReducer = applyReducer;\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nfunction validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new exports.JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n }\n else if (!objOps[operation.op]) {\n throw new exports.JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else if (typeof operation.path !== 'string') {\n throw new exports.JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new exports.JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new exports.JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new exports.JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && helpers_js_1.hasUndefined(operation.value)) {\n throw new exports.JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n }\n else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new exports.JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n }\n else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new exports.JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new exports.JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\nexports.validator = validator;\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nfunction validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new exports.JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(helpers_js_1._deepClone(document), helpers_js_1._deepClone(sequence), externalValidator || true);\n }\n else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n }\n catch (e) {\n if (e instanceof exports.JsonPatchError) {\n return e;\n }\n else {\n throw e;\n }\n }\n}\nexports.validate = validate;\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nfunction _areEquals(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!_areEquals(a[i], b[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!b.hasOwnProperty(keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\nexports._areEquals = _areEquals;\n;\n", "Object.defineProperty(exports, \"__esModule\", { value: true });\n/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2021 Joachim Wester\n * MIT license\n */\nvar helpers_js_1 = require(\"./helpers.js\");\nvar core_js_1 = require(\"./core.js\");\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}());\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nfunction unobserve(root, observer) {\n observer.unobserve();\n}\nexports.unobserve = unobserve;\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nfunction observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n }\n else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = helpers_js_1._deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function () {\n generate(observer);\n };\n var fastCheck = function () {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') { //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\nexports.observe = observe;\n/**\n * Generate an array of patches from an observer\n */\nfunction generate(observer, invertible) {\n if (invertible === void 0) { invertible = false; }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n core_js_1.applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\nexports.generate = generate;\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = helpers_js_1._objectKeys(obj);\n var oldKeys = helpers_js_1._objectKeys(mirror);\n var changed = false;\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (helpers_js_1.hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + helpers_js_1.escapePathComponent(key), invertible);\n }\n else {\n if (oldVal !== newVal) {\n changed = true;\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + helpers_js_1.escapePathComponent(key), value: helpers_js_1._deepClone(oldVal) });\n }\n patches.push({ op: \"replace\", path: path + \"/\" + helpers_js_1.escapePathComponent(key), value: helpers_js_1._deepClone(newVal) });\n }\n }\n }\n else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + helpers_js_1.escapePathComponent(key), value: helpers_js_1._deepClone(oldVal) });\n }\n patches.push({ op: \"remove\", path: path + \"/\" + helpers_js_1.escapePathComponent(key) });\n deleted = true; // property has been deleted\n }\n else {\n if (invertible) {\n patches.push({ op: \"test\", path: path, value: mirror });\n }\n patches.push({ op: \"replace\", path: path, value: obj });\n changed = true;\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!helpers_js_1.hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({ op: \"add\", path: path + \"/\" + helpers_js_1.escapePathComponent(key), value: helpers_js_1._deepClone(obj[key]) });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nfunction compare(tree1, tree2, invertible) {\n if (invertible === void 0) { invertible = false; }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}\nexports.compare = compare;\n", "var core = require(\"./commonjs/core.js\");\nObject.assign(exports, core);\n\nvar duplex = require(\"./commonjs/duplex.js\");\nObject.assign(exports, duplex);\n\nvar helpers = require(\"./commonjs/helpers.js\");\nexports.JsonPatchError = helpers.PatchError;\nexports.deepClone = helpers._deepClone;\nexports.escapePathComponent = helpers.escapePathComponent;\nexports.unescapePathComponent = helpers.unescapePathComponent;\n", "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';", "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;", "export enum HttpMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n DELETE = 'DELETE',\n PATCH = 'PATCH',\n HEAD = 'HEAD',\n OPTIONS = 'OPTIONS',\n TRACE = 'TRACE',\n CONNECT = 'CONNECT',\n}", "export enum HttpStatus {\n Ok = 200,\n\n /**\n * HTTP 301 Moved Permanently \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC8FC\uC5B4\uC9C4 URL\uB85C \uC644\uC804\uD788 \uC62E\uACA8\uC84C\uB2E4\uB294 \uAC83\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uB294 \uC774 \uD398\uC774\uC9C0\uB85C \uB9AC\uB514\uB809\uD2B8\uD558\uACE0, \uAC80\uC0C9 \uC5D4\uC9C4\uC740 \uD574\uB2F9 \uB9AC\uC18C\uC2A4\uB85C \uC5F0\uACB0\uB418\uB294 \uB9C1\uD06C\uB97C \uAC31\uC2E0\uD569\uB2C8\uB2E4.\n */\n MovedPermanently = 301,\n /**\n * https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Status/302\n * HTTP(HyperText Transfer Protocol) 302 Found \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC9C0\uC815\uB41C URL\uB85C \uC77C\uC2DC\uC801\uC73C\uB85C \uC774\uB3D9\uB418\uC5C8\uC74C\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uB294 \uC774 \uD398\uC774\uC9C0\uB85C \uB9AC\uB514\uB809\uC158\uB418\uC9C0\uB9CC \uAC80\uC0C9 \uC5D4\uC9C4\uC740 \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uB9C1\uD06C\uB97C \uC5C5\uB370\uC774\uD2B8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4('SEO-speak'\uC5D0\uC11C\uB294 'link-juice'\uAC00 \uC0C8 URL\uB85C \uC804\uC1A1\uB418\uC9C0 \uC54A\uB294\uB2E4\uACE0 \uD569\uB2C8\uB2E4).\n * \uBA85\uC138\uC11C\uC5D0\uC11C \uB9AC\uB514\uB809\uC158\uC774 \uC218\uD589\uB420 \uB54C \uBA54\uC11C\uB4DC(\uBC0F \uBCF8\uBB38)\uAC00 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uB3C4\uB85D \uC694\uAD6C\uD558\uB354\uB77C\uB3C4 \uBAA8\uB4E0 \uC0AC\uC6A9\uC790 \uC5D0\uC774\uC804\uD2B8\uAC00 \uC774\uB97C \uC900\uC218\uD558\uB294 \uAC83\uC740 \uC544\uB2D9\uB2C8\uB2E4. \uC5EC\uB7EC\uBD84\uC740 \uC5EC\uC804\uD788 \uC774\uB7EC\uD55C \uC720\uD615\uC758 \uBC84\uADF8\uAC00 \uC788\uB294 \uC18C\uD504\uD2B8\uC6E8\uC5B4\uB97C \uCC3E\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uB530\uB77C\uC11C \uB530\uB77C\uC11C 302 \uCF54\uB4DC\uB294 GET \uB610\uB294 HEAD \uBA54\uC11C\uB4DC\uC5D0 \uB300\uD55C \uC751\uB2F5\uC73C\uB85C\uB9CC \uC124\uC815\uD558\uACE0 \uC774 \uACBD\uC6B0 \uBA54\uC11C\uB4DC \uBCC0\uACBD\uC774 \uBA85\uC2DC\uC801\uC73C\uB85C \uAE08\uC9C0\uB418\uBBC0\uB85C 307 Temporary Redirect \uB97C \uB300\uC2E0 \uC0AC\uC6A9\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n * \uC0AC\uC6A9\uD558\uB358 \uBA54\uC11C\uB4DC\uB97C GET\uC73C\uB85C \uBCC0\uACBD\uD558\uB824\uB294 \uACBD\uC6B0, 303 See Other\uC744 \uB300\uC2E0 \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624. PUT \uBA54\uC11C\uB4DC\uC5D0 \uB300\uD55C \uC751\uB2F5\uC744 \uC5C5\uB85C\uB4DC\uB41C \uB9AC\uC18C\uC2A4\uAC00 \uC544\uB2C8\uB77C 'You successfully updown XYZ'\uC640 \uAC19\uC740 \uD655\uC778 \uBA54\uC2DC\uC9C0\uB85C \uC8FC\uACE0 \uC2F6\uC744\uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n */\n Found = 302,\n /**\n * HTTP(HyperText Transfer Protocol) 303 See Other \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uB9AC\uB514\uB809\uC158\uC774 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4 \uC790\uCCB4\uC5D0 \uC5F0\uACB0\uB418\uC9C0 \uC54A\uACE0 \uB2E4\uB978 \uD398\uC774\uC9C0(\uC608: \uD655\uC778 \uD398\uC774\uC9C0, \uC2E4\uC81C \uAC1C\uCCB4 \uD45C\uC2DC(HTTP range-14 \uCC38\uC870) \uB610\uB294 \uC5C5\uB85C\uB4DC \uC9C4\uD589\uB960 \uD398\uC774\uC9C0)\uC5D0 \uC5F0\uACB0\uB428\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uC774 \uC751\uB2F5 \uCF54\uB4DC\uB294 PUT \uB610\uB294 POST\uC758 \uACB0\uACFC\uB85C \uB2E4\uC2DC \uC804\uC1A1\uB418\uB294 \uACBD\uC6B0\uAC00 \uB9CE\uC2B5\uB2C8\uB2E4. \uC774 \uB9AC\uB514\uB809\uC158 \uD398\uC774\uC9C0\uB97C \uD45C\uC2DC\uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uB294 \uBC29\uBC95\uC740 \uD56D\uC0C1 GET\uC785\uB2C8\uB2E4.\n */\n SeeOther = 303,\n /**\n * \uD074\uB77C\uC774\uC5B8\uD2B8 \uB9AC\uB514\uB809\uC158 \uC751\uB2F5 \uCF54\uB4DC 304 Not Modified \uB294 \uC694\uCCAD\uB41C \uB9AC\uC18C\uC2A4\uB97C \uC7AC\uC804\uC1A1\uD560 \uD544\uC694\uAC00 \uC5C6\uC74C\uC744 \uB098\uD0C0\uB0B8\uB2E4. \uCE90\uC2DC\uB41C \uC790\uC6D0\uC73C\uB85C\uC758 \uC554\uBB35\uC801\uC778 \uB9AC\uB514\uB809\uC158\uC774\uB2E4. \uC774 \uB294 GET \uB098 HEAD \uC694\uCCAD\uCC98\uB7FC \uC694\uCCAD \uBC29\uBC95\uC774 \uC548\uC804 \uD55C \uACBD\uC6B0 \uB610\uB294 \uC694\uCCAD\uC774 \uC870\uAC74\uBD80\uB85C If-None-Match \uB610\uB294 If-Modified-Since \uD5E4\uB354\uB97C \uC0AC\uC6A9\uD560 \uB54C \uC751\uB2F5 \uB41C\uB2E4.\n * \uC774\uC5D0 \uC0C1\uC751\uD558\uB294 200 OK \uC751\uB2F5\uC5D0\uB294 Cache-Control, Content-Location, Date, ETag, Expires, \uADF8\uB9AC\uACE0 Vary \uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC5C8\uC744 \uAC83\uC774\uB2E4.\n */\n NotModified = 304,\n /**\n * HTTP 307 Temporary Redirect \uB9AC\uB2E4\uC774\uB809\uD2B8 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC8FC\uC5B4\uC9C4 URL \uB85C \uC784\uC2DC\uB85C \uC62E\uACA8\uC84C\uB2E4\uB294 \uAC83\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4.\n * \uC6D0\uB798 \uC694\uCCAD\uD55C \uBA54\uC18C\uB4DC\uC640 Body \uB97C \uC7AC\uC0AC\uC6A9\uD558\uC5EC \uC694\uCCAD\uC744 \uB9AC\uB2E4\uC774\uB809\uD2B8 \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C \uBA54\uC18C\uB4DC\uB97C GET\uC73C\uB85C \uBC14\uAFB8\uAE30 \uC704\uD574\uC11C 303 See Other\uB97C \uC0AC\uC6A9\uD558\uC2DC\uBA74 \uB429\uB2C8\uB2E4. \uC774\uAC83\uC740 PUT\uC694\uCCAD\uC5D0 \uC5C5\uB85C\uB4DC\uB41C \uB9AC\uC18C\uC2A4\uAC00 \uC544\uB2CC \"You successfully uploaded XYZ\"\uC640 \uAC19\uC740 \uD655\uC778\uBA54\uC2DC\uC9C0 \uC751\uB2F5\uC744 \uC81C\uACF5 \uD558\uB294\uB370\uC5D0 \uC720\uC6A9\uD569\uB2C8\uB2E4.\n * 307\uACFC 302\uAC00 \uC720\uC77C\uD558\uAC8C \uB2E4\uB978\uC810\uC740 307\uC740 Method \uC640 Body \uB97C \uBCC0\uACBD\uD558\uC9C0 \uC54A\uACE0 \uB9AC\uB2E4\uC774\uB809\uD2B8 \uC694\uCCAD\uC744 \uD558\uB3C4\uB85D \uBCF4\uC7A5\uD569\uB2C8\uB2E4. 302\uC751\uB2F5\uC73C\uB85C \uC778\uD558\uC5EC \uC77C\uBD80 \uC624\uB798\uB41C \uD074\uB77C\uC774\uC5B8\uD2B8\uB4E4\uC740 \uBA54\uC18C\uB4DC\uB97C GET\uC73C\uB85C \uD2C0\uB9AC\uAC8C \uBCC0\uACBD\uD558\uC600\uC2B5\uB2C8\uB2E4. GET\uC774 \uC544\uB2CC \uB2E4\uB978 \uBA54\uC18C\uB4DC\uC5D0 302\uB3D9\uC791\uC740 \uC6F9\uC5D0\uC11C \uC608\uC0C1\uB418\uC9C0 \uC54A\uC9C0\uB9CC 307 \uB3D9\uC791\uC740 \uC608\uC0C1\uD560\uC218 \uC788\uC2B5\uB2C8\uB2E4. GET \uC694\uCCAD\uC5D0 \uB300\uD574\uC11C\uB294 \uB3D9\uC77C\uD558\uAC8C \uB3D9\uC791 \uD569\uB2C8\uB2E4.\n */\n TemporaryRedirect = 307,\n /**\n * \uD558\uC774\uD37C\uD14D\uC2A4\uD2B8 \uC804\uC1A1 \uD504\uB85C\uD1A0\uCF5C (HTTP) 308 Permanent Redirect \uB9AC\uB514\uB809\uC158 \uC0C1\uD0DC \uC751\uB2F5 \uCF54\uB4DC\uB294 \uC694\uCCAD\uB41C \uB9AC\uC18C\uC2A4\uAC00 Location \uD5E4\uB354\uC5D0 \uC9C0\uC815\uB41C URL\uB85C \uD655\uC2E4\uD788 \uC774\uB3D9\uB418\uC5C8\uC74C\uC744 \uB098\uD0C0\uB0C5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uAC00 \uC774 \uD398\uC774\uC9C0\uB85C \uB9AC\uB514\uB809\uC158\uB418\uACE0 \uAC80\uC0C9\uC5D4\uC9C4\uC740 \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uB9C1\uD06C\uB97C \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4('SEO-speak'\uC5D0\uC11C\uB294 'link-juice'\uAC00 \uC0C8 URL\uB85C \uC804\uC1A1\uB429\uB2C8\uB2E4).\n * \uC694\uCCAD \uBA54\uC11C\uB4DC\uC640 \uBCF8\uBB38\uC740 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC9C0\uB9CC, 301\uC740 \uB54C\uB54C\uB85C GET \uBA54\uC11C\uB4DC\uB85C \uC798\uBABB \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\n PermanentRedirect = 308,\n BadRequest = 400,\n Unauthorized = 401,\n Forbidden = 403,\n NotFound = 404,\n InternalServerError = 500,\n NotImplemented = 501,\n BadGateway = 502,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n HttpVersionNotSupported = 505\n}\n", "export enum Mimes {\n ApplicationJson = 'application/json',\n ApplicationOctetStream = 'application/octet-stream',\n ApplicationXml = 'application/xml',\n ApplicationJsonPatch = 'application/json-patch+json',\n ApplicationXWwwFormUrlencoded = 'application/x-www-form-urlencoded',\n TextPlain = 'text/plain',\n TextHtml = 'text/html',\n All = '*/*',\n TextCss = 'text/css',\n TextJavascript = 'text/javascript',\n TextXml = 'text/xml',\n TextXslt = 'text/xslt',\n TextXmlDtd = 'text/xml-dtd',\n TextPlainUtf8 = 'text/plain; charset=utf-8',\n ImagePng = 'image/png',\n ImageGif = 'image/gif',\n ImageJpeg = 'image/jpeg',\n ImageSvg = 'image/svg+xml',\n ImageBmp = 'image/bmp',\n ImageTiff = 'image/tiff',\n ImagePdf = 'application/pdf',\n ImageXBmp = 'image/x-bmp',\n ImageXpixmap = 'image/x-xpixmap',\n ImageXxbm = 'image/x-xbm',\n MultipartFormData = 'multipart/form-data',\n}\n", "import { ConstructorType } from '../types';\nexport namespace ReflectUtils {\n export const getParameterTypes = (target: any, propertyKey?: string | symbol): ConstructorType<any>[] => {\n // console.log('---------param')\n if (propertyKey) {\n return Reflect.getMetadata('design:paramtypes', target, propertyKey) || [];\n } else {\n return Reflect.getMetadata('design:paramtypes', target) || [];\n }\n }\n\n\n export const getReturnType = (target: any, propertyKey: string | symbol): any => {\n return Reflect.getMetadata('design:returntype', target, propertyKey);\n }\n\n // @Reflect.metadata(\"design:type\", Point)\n export const getType = (target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getMetadata('design:type', target, propertyKey);\n } else {\n return Reflect.getMetadata('design:type', target);\n }\n }\n\n export const getMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (propertyKey) {\n return Reflect.getMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getMetadata(metadataKey, target);\n }\n }\n\n export const getMetadataKeys = (target: any) => {\n return Reflect.getMetadataKeys(target);\n }\n\n export const getOwnMetadata = (metadataKey: any, target: any, propertyKey?: string): number[] | any => {\n if (propertyKey) {\n return Reflect.getOwnMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getOwnMetadata(metadataKey, target);\n }\n }\n\n export const getMetadatas = (target: any) => {\n return ReflectUtils.getMetadataKeys(target).map(it => ReflectUtils.getMetadata(it, target));\n }\n\n export const metadata = (metadataKey: any, data: any) => {\n return Reflect.metadata(metadataKey, data);\n }\n\n export const defineMetadata = (metadataKey: any, value: any, target: any, propertyKey?: string | symbol) => {\n // console.log(\"Reflect:\",Reflect)\n if (propertyKey && Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target, propertyKey);\n } else if (Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target);\n // Reflect.defineMetadata(\"design:paramtypes\", value, target);\n }\n // console.log(\"Reflect:\",Reflect.getMetadata(metadataKey, target))\n // console.log(\"Reflect:\",Reflect.getMetadata('design:paramtypes', target))\n }\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport { ReflectMethod } from '@dooboostore/simple-boot/types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { Resolver } from '../resolvers/Resolver';\nimport { Mimes } from '../codes/Mimes';\nimport { HttpMethod } from '../codes/HttpMethod';\n\nexport enum UrlMappingSituationType {\n REQ_JSON_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_JSON_BODY',\n REQ_FORM_URL_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_FORM_URL_BODY'\n}\nexport type MappingConfig = {\n method: HttpMethod | string,\n description?: {\n name?: string;\n detail?: string;\n };\n\n req?: {\n contentType?: (Mimes|string)[];\n accept?: (Mimes|string)[];\n };\n\n res?: {\n status?: number;\n header?: {[key: string]: string};\n contentType?: Mimes | string;\n }\n resolver?: Resolver|ConstructorType<Resolver>;\n}\nexport type SaveMappingConfig = {propertyKey: string | symbol; config: MappingConfig}\nconst MappingMetadataKey = Symbol('MappingMetadataKey');\n// const GETSMappingMetadataKey = Symbol('GET_METHODS');\n// const GETMappingMetadataKey = Symbol('GET_METHOD');\n\nconst process = (config: MappingConfig, target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(MappingMetadataKey, target.constructor) ?? []) as SaveMappingConfig[];\n saveMappingConfigs.push({propertyKey, config});\n ReflectUtils.defineMetadata(MappingMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(MappingMetadataKey, config, target, propertyKey);\n}\nexport function UrlMapping(config: MappingConfig): ReflectMethod;\nexport function UrlMapping(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function UrlMapping(configOrtarget?: MappingConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrtarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n process(configOrtarget, target, propertyKey, descriptor);\n }\n }\n}\nexport const getUrlMapping = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return ReflectUtils.getMetadata(MappingMetadataKey, target, propertyKey);\n}\n\nexport const getUrlMappings = (target: any): SaveMappingConfig[] => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(MappingMetadataKey, target);\n}\nexport function GET(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function GET(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function GET(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.GET;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getGET = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getGETS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function POST(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function POST(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function POST(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.POST}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.POST;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPOST = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPOSTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.POST);\n}\nexport function DELETE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function DELETE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function DELETE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.DELETE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.DELETE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getDELETE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getDELETES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.DELETE);\n}\nexport function PUT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PUT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PUT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PUT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PUT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPUT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPUTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.PUT);\n}\nexport function PATCH(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PATCH(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PATCH(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PATCH}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PATCH;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPATCH = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPATCHS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function OPTIONS(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function OPTIONS(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function OPTIONS(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.OPTIONS}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.OPTIONS;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getOPTIONS = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getOPTIONSS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.OPTIONS);\n}\nexport function HEAD(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function HEAD(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function HEAD(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.HEAD}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.HEAD;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getHEAD = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getHEADS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function TRACE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function TRACE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function TRACE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.TRACE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.TRACE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getTRACE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getTRACES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.TRACE);\n}\nexport function CONNECT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function CONNECT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function CONNECT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.CONNECT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.CONNECT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getCONNECT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getCONNECTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.CONNECT);\n}\n", "import {EndPoint} from './EndPoint';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\nimport { HttpHeaders } from '../codes/HttpHeaders';\n\nexport type CrossDomainHeaderEndPointConfig = {\n accessControlAllowOrigin?: string | string[],\n accessControlAllowMethods?: string | string[],\n accessControlAllowHeaders?: string | string[],\n accessControlExposeHeaders?: string | string[]\n}\nexport class CrossDomainHeaderEndPoint implements EndPoint {\n constructor(private config?: CrossDomainHeaderEndPointConfig) {\n }\n\n /*\n rr.resSetHeader(\"Access-Control-Allow-Origin\", \"*\")\n rr.resSetHeader(\"Access-Control-Allow-Methods\", \"DELETE, POST, GET, OPTIONS\")\n rr.resSetHeader(\"Access-Control-Allow-Headers\", \"Content-Type, Authorization, X-Requested-With\")\n */\n async endPoint(rr: RequestResponse, app: SimpleBootHttpServer) {\n if (this.config?.accessControlAllowOrigin) {\n rr.resSetHeader(HttpHeaders.AccessControlAllowOrigin, Array.isArray(this.config.accessControlAllowOrigin) ? this.config.accessControlAllowOrigin.join(', ') : this.config.accessControlAllowOrigin);\n }\n if (this.config?.accessControlAllowMethods) {\n rr.resSetHeader(HttpHeaders.AccessControlAllowMethods, Array.isArray(this.config.accessControlAllowMethods) ? this.config.accessControlAllowMethods.join(', ') : this.config.accessControlAllowMethods);\n }\n if (this.config?.accessControlAllowHeaders) {\n rr.resSetHeader(HttpHeaders.AccessControlAllowHeaders, Array.isArray(this.config.accessControlAllowHeaders) ? this.config.accessControlAllowHeaders.join(', ') : this.config.accessControlAllowHeaders);\n }\n if (this.config?.accessControlExposeHeaders) {\n rr.resSetHeader(HttpHeaders.AccessControlExposeHeaders, Array.isArray(this.config.accessControlExposeHeaders) ? this.config.accessControlExposeHeaders.join(', ') : this.config.accessControlExposeHeaders);\n }\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n}\n", "import {EndPoint} from './EndPoint';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\n\nexport class HeaderEndPoint implements EndPoint {\n constructor(private headers?: { [key: string]: string | string[] }) {\n }\n\n async endPoint(rr: RequestResponse, app: SimpleBootHttpServer) {\n if (this.headers) {\n rr.resSetHeaders(this.headers);\n }\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n}\n", "\nexport class HttpError {\n name: string = 'Error'\n message: string;\n stack?: string\n data?: any;\n public status: number;\n\n constructor({status, message = 'HttpError'}: { status: number, message?: string }) {\n // super(message);\n this.message = message;\n this.status = status;\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class BadRequestError extends HttpError {\n constructor({status = HttpStatus.BadRequest, message = 'Bad Request'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class ForbiddenError extends HttpError {\n constructor({status = HttpStatus.Forbidden, message = 'Forbidden'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class InternalServerError extends HttpError {\n constructor({status = HttpStatus.InternalServerError, message = 'Internal Server Error'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class NotFoundError extends HttpError {\n constructor({status = HttpStatus.NotFound, message = 'Not Found'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import {HttpError} from './HttpError';\nimport {HttpStatus} from '../codes/HttpStatus';\n\nexport class UnauthorizedError extends HttpError {\n constructor({status = HttpStatus.Unauthorized, message = 'Unauthorized'}: {status?: number, message?: string} = {}) {\n super({status, message});\n }\n}\n", "import * as node_os from 'node:os';\n\nimport * as node_fs from 'node:fs';\nimport * as node_path from 'node:path';\nimport { MakeDirectoryOptions, RmDirOptions, RmOptions, WriteFileOptions } from 'fs';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\n\nexport namespace FileUtils {\n export type PathParamType = string | string[];\n\n\n export class File {\n public size: number | undefined;\n\n constructor(private _data: {\n path: string,\n originalName?: string,\n }) {\n\n this.updateStats();\n }\n\n get originalName(): string | undefined {\n return this._data.originalName;\n }\n\n get directory(): string {\n return this._data.path.substring(0, this._data.path.lastIndexOf('/'));\n }\n\n get fileName(): string {\n return this._data.path.substring(this._data.path.lastIndexOf('/') + 1);\n }\n\n get path(): string {\n return this._data.path;\n }\n\n get extension(): string | undefined {\n const ext = this._data.path.substring(this._data.path.lastIndexOf('.') + 1);\n return ext.length > 0 ? ext : undefined;\n }\n\n async updateStats(): Promise<void> {\n const stats = await node_fs.promises.stat(this._data.path);\n this.size = stats.size;\n }\n\n async delete(): Promise<void> {\n await node_fs.promises.unlink(this._data.path);\n this._data.path = '';\n this.size = undefined;\n }\n\n\n async copy(newPath: string): Promise<void> {\n await node_fs.promises.copyFile(this._data.path, newPath);\n this._data.path = newPath;\n this.size = (await node_fs.promises.stat(newPath)).size;\n }\n\n // path\uC5D0 \uD30C\uC77C\uBA85\uB3C4\uC788\uC5B4\uC57C\uB41C\uB2E4!!\n async move(newPath: string): Promise<void> {\n // newPath\uC758 \uB514\uB809\uD1A0\uB9AC\uAC00 \uC5C6\uC73C\uBA74 \uC0DD\uC131\n const dir = newPath.substring(0, newPath.lastIndexOf('/'));\n await node_fs.promises.mkdir(dir, {recursive: true});\n await node_fs.promises.rename(this._data.path, newPath);\n this._data.path = newPath;\n this.size = (await node_fs.promises.stat(newPath)).size;\n }\n\n async rename(newName: string): Promise<void> {\n const dir = this.directory;\n const newPath = `${dir}/${newName}`;\n await node_fs.promises.rename(this._data.path, newPath);\n this.size = (await node_fs.promises.stat(newPath)).size;\n this._data.path = newPath;\n }\n }\n\n export const writeFile = async (buffer: Buffer, config: { path?: string, originalName?: string }) => {\n config.path ??= `${node_os.tmpdir()}/${RandomUtils.uuid4()}_${Date.now()}`;\n await node_fs.promises.mkdir(config.path.substring(0, config.path.lastIndexOf('/')), {recursive: true});\n await node_fs.promises.writeFile(config.path, buffer);\n return new File({path: config.path, originalName: config.originalName});\n // console.log(`\uD30C\uC77C \uC800\uC7A5 \uC644\uB8CC: ${tempFilePath}`);\n }\n\n\n\n\n export const path = (path: PathParamType) => {\n return Array.isArray(path) ? node_path.join(...path) : path;\n }\n\n export const existsSync = (path: PathParamType, config?: { existes?: (path: string) => void, noExistes?: (path: string) => void }) => {\n const p = FileUtils.path(path);\n if (node_fs.existsSync(p)) {\n config?.existes?.(p);\n return true;\n } else {\n config?.noExistes?.(p);\n return false;\n }\n }\n\n export const mkdirSync = (path: PathParamType, config?: MakeDirectoryOptions) => {\n FileUtils.existsSync(\n path,\n {\n noExistes: (path) => {\n node_fs.mkdirSync(path, config);\n }\n });\n\n }\n\n export const mkdir = async (path: PathParamType, config?: MakeDirectoryOptions): Promise<string> => {\n return new Promise((resolve, reject) => {\n FileUtils.existsSync(\n path,\n {\n noExistes: (path) => {\n node_fs.mkdirSync(path, config);\n resolve(path);\n },\n existes: (path) => {\n resolve(path);\n }\n });\n });\n }\n\n export const readSync = (path: PathParamType, config?: { option?: Parameters<typeof node_fs['readFileSync']>[1] }) => {\n const p = FileUtils.path(path)\n const buffer = config?.option ? node_fs.readFileSync(p, config.option) : node_fs.readFileSync(p);\n // const buffer = node_fs.readFileSync(p);\n return buffer;\n }\n export const read = async (path: PathParamType, config: { option: Parameters<typeof node_fs['readFile']>[1] }) => {\n const p = FileUtils.path(path);\n return node_fs.readFile(p, config.option);\n }\n\n export const write = (data: string | Buffer, config: {path: PathParamType, options?: WriteFileOptions,}) => {\n const p = FileUtils.path(config.path);\n config.options ? node_fs.writeFileSync(p, data, config.options) : node_fs.writeFileSync(p, data);\n return p;\n }\n\n export const writeAppend = (data: string | Buffer, config: {path: PathParamType, options?: WriteFileOptions}) => {\n const p = FileUtils.path(config.path);\n config.options ? node_fs.appendFileSync(p, data, config.options) : node_fs.appendFileSync(p, data);\n return p;\n }\n\n export const deleteSync = (path: PathParamType, config?: {options?: RmOptions}) => {\n const p = FileUtils.path(path);\n if (FileUtils.existsSync(p)) {\n config?.options ? node_fs.rmSync(p, config?.options) : node_fs.rmSync(p);\n }\n }\n\n export const deleteDirSync = (path: PathParamType, config?: {options?: RmDirOptions}) => {\n const p = FileUtils.path(path);\n if (FileUtils.existsSync(p)) {\n config?.options ? node_fs.rmdirSync(p, config?.options) : node_fs.rmdirSync(p);\n }\n }\n export const deleteFileSync = (path: PathParamType) => {\n const p = FileUtils.path(path);\n if (FileUtils.existsSync(p)) {\n node_fs.unlinkSync(p);\n }\n }\n\n\n export const copySync = (source: PathParamType, destination: PathParamType, options?: Parameters<typeof node_fs.cpSync>[2]) => {\n const srcPath = FileUtils.path(source);\n const destPath = FileUtils.path(destination);\n node_fs.cpSync(srcPath, destPath, options);\n }\n\n}", "import { ConstructorType, FilterFalsy, FilterNullish, NonNullable, Nullable, Nullish, NullOrUndefined } from '../types';\n\nexport namespace ValidUtils {\n\n export const isArrowFunction = (fn: any): fn is Function => {\n // 1. \uD568\uC218\uAC00 \uC544\uB2C8\uBA74 false\n if (typeof fn !== 'function') {\n return false;\n }\n // 2. prototype \uC18D\uC131\uC774 \uC5C6\uC73C\uBA74 \uD654\uC0B4\uD45C \uD568\uC218 (\uB610\uB294 prototype\uC774 \uC5C6\uB294 \uB2E4\uB978 callable)\n // 3. \uD074\uB798\uC2A4\uB294 'class' \uD0A4\uC6CC\uB4DC\uB85C \uC2DC\uC791\uD558\uBBC0\uB85C \uC81C\uC678\n return typeof fn.prototype === 'undefined' && !fn.toString().startsWith('class');\n }\n\n export const isPlainObject = (obj: any): boolean => {\n return obj !== null && typeof obj === 'object' && obj.constructor === Object;\n }\n\n const isConstructorLike = (fn: any): boolean => {\n // 1. \uD568\uC218\uC5EC\uC57C \uD558\uACE0,\n // 2. prototype \uC18D\uC131\uC744 \uAC00\uC838\uC57C \uD568\n return typeof fn === 'function' && typeof fn.prototype !== 'undefined';\n }\n\n\n export const isFrozen = (obj: any): boolean => {\n return Object.isFrozen(obj);\n }\n export const isSealed= (obj: any): boolean => {\n return Object.isSealed(obj)\n }\n export const isFrozenOrSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) || ValidUtils.isSealed(obj);\n }\n export const isFrozenAndSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) && ValidUtils.isSealed(obj);\n }\n export const isNotFrozen = (obj: any): boolean => {\n return !Object.isFrozen(obj);\n }\n export const isNotSealed = (obj: any): boolean => {\n return !Object.isSealed(obj)\n }\n export const isNotFrozenOrSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) && !ValidUtils.isSealed(obj);\n }\n export const isNotFrozenAndSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) || !ValidUtils.isSealed(obj);\n }\n\n export const isNullOrUndefined = (data: unknown): data is (null | undefined) => {\n return data == null || undefined === data;\n}\n\n export const isConstructor = (obj: ConstructorType<any> | ((e: any) => void)): obj is ConstructorType<any> => {\n // \uD568\uC218\uC774\uBA74\uC11C prototype \uC18D\uC131\uC774 \uC788\uACE0 prototype\uC774 \uAC1D\uCCB4\uC778\uC9C0 \uD655\uC778\n return typeof obj === 'function'\n && obj.prototype !== undefined\n && obj.prototype.constructor === obj\n // && Object.getOwnPropertyNames(obj.prototype).length > 1; // constructor \uC678\uC5D0 \uB2E4\uB978 \uC18D\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\n }\n export const isFunction = (obj: ConstructorType<any> | ((e: any) => void)): obj is ((e: any) => void) => {\n return typeof obj === 'function' && !isConstructor(obj);\n }\n export const isNullish = <T = any>(data: T | null | undefined): data is null | undefined => {\n return ValidUtils.isNotNullish(data);\n }\n export const isNotNullish = <T>(data: T | null | undefined): data is NonNullable<T> => {\n if ((Array.isArray(data) || ValidUtils.isString(data))) {\n return data.length > 0;\n }\n\n if (data instanceof Set || data instanceof Map) {\n return data.size > 0;\n }\n\n if (typeof data === 'object' && data !== null) {\n return Object.keys(data).length > 0;\n }\n\n return data !== null && data !== undefined;\n }\n\n export const isNotNullUndefined = <T>(data: T | null | undefined): data is NonNullable<T> => {\n return data !== null && data !== undefined;\n }\n\n export const isNull = (data: any): data is null => {\n return data === null;\n }\n\n export const isUndefined = (data: any): data is undefined => {\n return data === undefined;\n }\n\n export const isArray = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Array]'\n }\n }\n\n export const isStringNumber = (value: string | number): boolean => {\n if (typeof value === 'number') {\n return !isNaN(value);\n }\n return typeof value === 'string' && value.trim() !== '' && !isNaN(Number(value));\n }\n\n export const isNumber = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Number]'\n }\n }\n\n export const isIterator = <T>(object_o: any): object_o is Iterable<T> => {\n return object_o != null && typeof object_o[Symbol.iterator] === 'function';\n };\n\n export const isString = (object_o: any): object_o is string => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object String]'\n }\n }\n\n // export const isFunction = (object_o: any): boolean => {\n // if (ValidUtils.isNullOrUndefined(object_o)) {\n // return false\n // } else {\n // return Object.prototype.toString.call(object_o).trim() === '[object Function]'\n // }\n // // if (typeof object_o === 'function') {\n // // return true;\n // // }else {\n // // return false;\n // // }\n // }\n\n export const isObject = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Object]'\n }\n }\n\n export const isMap = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Map]'\n }\n }\n\n\n export const isEmpty = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return true;\n } else if (ValidUtils.isArray(object_o)) {\n return object_o.length === 0;\n } else if (ValidUtils.isString(object_o)) {\n return object_o.trim().length === 0;\n } else if (ValidUtils.isMap(object_o)) {\n return object_o.size === 0;\n } else if (ValidUtils.isObject(object_o)) {\n return Object.keys(object_o).length === 0;\n } else {\n return false;\n }\n };\n\n\n export const isSet = <T = any>(data: any): data is Set<T> => {\n return data instanceof Set;\n };\n\n export const isNullishFiltered = <T>(value: unknown): value is FilterNullish<T> => {\n if (Array.isArray(value)) {\n return value.every(it => it !== undefined && it !== null);\n }\n return value !== undefined && value !== null;\n };\n\n export const isFalsyFiltered = <T>(value: unknown): value is FilterFalsy<T> => {\n if (Array.isArray(value)) {\n return value.every(it => {\n return it;\n });\n }\n return !!value;\n };\n\n export const includeValue = (obj: object, value: any): boolean => {\n return Object.values(obj).includes(value);\n };\n export const includeKey = (obj: object, key: string): boolean => {\n return Object.keys(obj).includes(key);\n };\n\n /** \uC885\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\uD558\uB294 \uD568\uC218 */\n export const lastConsonantLetter = (value: string): boolean => {\n const lastLetter = value.charCodeAt(value.length - 1);\n return (lastLetter - 0xac00) % 28 > 0;\n };\n\n export const inRange = (value: number, min: number, max: number) => {\n return min <= value && value <= max;\n };\n\n export const isBase64 = (inputString: string) => {\n // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA\n // const isValidBase64 = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n // return isValidBase64.test(base64String);\n\n let base64Data = inputString;\n\n // Data URL \uC811\uB450\uC0AC \uC81C\uAC70 (\uC608: \"data:image/png;base64,\")\n const parts = inputString.split(';base64,');\n if (parts.length > 1) {\n base64Data = parts[1];\n } else {\n // \"data:\"\uB9CC \uC788\uACE0 \";base64,\"\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uB3C4 \uACE0\uB824 (\uC5C4\uBC00\uD788\uB294 base64\uAC00 \uC544\uB2D0 \uC218 \uC788\uC74C)\n if (inputString.startsWith('data:')) {\n // \uC774 \uACBD\uC6B0\uB294 \uC720\uD6A8\uD55C base64\uB85C \uAC04\uC8FC\uD560\uC9C0 \uC815\uCC45\uC5D0 \uB530\uB77C \uB2E4\uB984\n // \uC5EC\uAE30\uC11C\uB294 \uC77C\uB2E8 base64 \uBD80\uBD84\uC774 \uC5C6\uB2E4\uACE0 \uAC00\uC815\uD558\uACE0 false \uCC98\uB9AC\n // return false;\n // \uB610\uB294 \uC811\uB450\uC0AC\uB9CC \uC81C\uAC70\uD558\uACE0 \uB0A8\uC740 \uBD80\uBD84\uC744 \uD14C\uC2A4\uD2B8\uD560 \uC218\uB3C4 \uC788\uC74C\n const commaIndex = inputString.indexOf(',');\n if (commaIndex > -1) {\n base64Data = inputString.substring(commaIndex + 1);\n } else {\n // \uC21C\uC218 base64\uAC00 \uC544\uB2D0 \uAC00\uB2A5\uC131 \uB192\uC74C\n // return false;\n }\n }\n }\n\n\n // Base64 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC815\uADDC\uC2DD\n // - \uBB38\uC790\uC5F4 \uAE38\uC774\uB294 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD568 (\uD328\uB529 \uC81C\uC678)\n // - \uD328\uB529 '='\uB294 \uCD5C\uB300 2\uAC1C\uAE4C\uC9C0 \uBB38\uC790\uC5F4 \uB05D\uC5D0\uB9CC \uC62C \uC218 \uC788\uC74C\n // - \uD328\uB529\uC774 1\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // - \uD328\uB529\uC774 2\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uB450 \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // \uC870\uAE08 \uB354 \uC5C4\uACA9\uD558\uACE0 \uD6A8\uC728\uC801\uC778 \uC815\uADDC\uC2DD:\n const base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n\n // \uCD94\uAC00\uC801\uC73C\uB85C, \uC2E4\uC81C base64 \uBB38\uC790\uC5F4\uC740 \uD328\uB529\uC744 \uC81C\uC678\uD55C \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4.\n // \uC815\uADDC\uC2DD\uB9CC\uC73C\uB85C\uB294 \uC774 \uBD80\uBD84\uC744 \uC644\uBCBD\uD788 \uCEE4\uBC84\uD558\uAE30 \uC5B4\uB824\uC6B8 \uC218 \uC788\uC5B4, \uAE38\uC774 \uCCB4\uD06C\uB97C \uCD94\uAC00\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n // \uD558\uC9C0\uB9CC \uD604\uC7AC \uC81C\uACF5\uB41C \uC815\uADDC\uC2DD\uC740 \uC774 \uBD80\uBD84\uC744 \uC5B4\uB290 \uC815\uB3C4 \uACE0\uB824\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.\n // (([A-Za-z0-9+/]{4})* \uBD80\uBD84\uACFC \uD328\uB529 \uBD80\uBD84)\n\n if (base64Data === '' || base64Data.length % 4 !== 0) {\n // \uBE48 \uBB38\uC790\uC5F4\uC774\uAC70\uB098, \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2C8\uBA74 (\uC77C\uBC18\uC801\uC73C\uB85C) \uC720\uD6A8\uD55C base64\uAC00 \uC544\uB2D8.\n // (\uB2E8, \uC77C\uBD80 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 \uD328\uB529\uC774 \uC5C6\uB294 base64\uB3C4 \uD5C8\uC6A9\uD558\uBBC0\uB85C, \uC5C4\uACA9\uD55C \uAE30\uC900\uC5D0 \uB530\uB77C \uB2E4\uB984)\n // \uD604\uC7AC \uC815\uADDC\uC2DD\uC740 \uD328\uB529\uC774 \uC62C\uBC14\uB974\uAC8C \uC801\uC6A9\uB41C \uACBD\uC6B0 \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2CC \uACBD\uC6B0\uB3C4 \uD1B5\uACFC\uC2DC\uD0AC \uC218 \uC788\uC74C\n // \uC608: \"QQ\" (\uAE38\uC774 2) -> false, \"QQQ\" (\uAE38\uC774 3) -> false\n // \"QQ==\" (\uAE38\uC774 4) -> true, \"QQQ=\" (\uAE38\uC774 4) -> true\n // \"QQQ\"\uB294 `base64Regex.test(\"QQQ\")`\uB294 false\uC774\uC9C0\uB9CC, `Buffer.from(\"QQQ\", \"base64\").toString(\"base64\")`\uB294 \"QQ==\"\uB97C \uBC18\uD658.\n // \uC5C4\uBC00\uD558\uAC8C\uB294 \uB514\uCF54\uB529 \uC2DC\uB3C4 \uD6C4 \uB2E4\uC2DC \uC778\uCF54\uB529\uD574\uC11C \uC6D0\uBCF8\uACFC \uAC19\uC740\uC9C0 \uBE44\uAD50\uD558\uB294 \uAC83\uC774 \uAC00\uC7A5 \uD655\uC2E4\uD558\uC9C0\uB9CC, \uC131\uB2A5 \uC774\uC288\uAC00 \uC788\uC744 \uC218 \uC788\uC74C.\n }\n\n\n return base64Regex.test(base64Data);\n }\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace RandomUtils {\n // export const readonly d = ''\n\n // export const getUniqueNumbers = (max: number, length: number) => {\n // max = Math.max(max, 0);\n // length = Math.max(Math.min(max, length), 0);\n // const array: number[] = [];\n // while (array.length < length) {\n // const num = Math.floor(Math.random() * max);\n // if (!array.includes(num)) array.push(num);\n // }\n // return array;\n // };\n\n export const uniqueInts = (min: number, max: number, count: number) => {\n const result: number[] = [];\n if (count > max - min) {\n throw new Error('Count is greater than the range of unique integers');\n }\n while (result.length < count) {\n const randomInt = RandomUtils.int(min, max);\n if (!result.includes(randomInt)) {\n result.push(randomInt);\n }\n }\n return result;\n }\n\n\n export const chance = (percentage: number): boolean => {\n if (percentage < 0 || percentage > 1) {\n throw new Error('Percentage must be between 0 and 1');\n }\n return Math.random() < percentage;\n };\n // max\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n export const int = (min?: number, max?: number) => {\n return Math.floor(RandomUtils.float(min, max));\n }\n\n // ex) 0,5 0~<5 <5\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC18C\uC218\uC810\uD3EC\uD568\n export const float = (min?: number, max?: number) => {\n if (ValidUtils.isNullOrUndefined(min)) {\n return Math.random();\n } else if (!ValidUtils.isNullOrUndefined(min) && ValidUtils.isNullOrUndefined(max)) {\n return Math.random() * (min || 0);\n } else {\n return Math.random() * ((max || 0) - (min || 0)) + (min || 0);\n }\n };\n\n export const uuid = (format: string = 'xxxx-xxxx-xxxx-xxxx'): string => {\n return format.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n\n\n export const uuid4 = (): string => {\n // // return uuid of form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n let uuid = '';\n let ii;\n for (ii = 0; ii < 32; ii += 1) {\n switch (ii) {\n case 8:\n case 20:\n uuid += '-';\n uuid += ((Math.random() * 16) | 0).toString(16);\n break;\n case 12:\n uuid += '-';\n uuid += '4';\n break;\n case 16:\n uuid += '-';\n uuid += ((Math.random() * 4) | 8).toString(16);\n break;\n default:\n uuid += ((Math.random() * 16) | 0).toString(16);\n }\n }\n return uuid;\n };\n\n export const hex = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let hex = '';\n for (let i = 0; i < 6; i++) {\n hex += letters[Math.floor(Math.random() * 16)];\n }\n return hex;\n };\n\n\n export const rgb = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n\n export const rgba = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 8; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n // (Math.random().toString(36)+'00000000000000000').slice(2, 10) + Date.now()\n\n export const alphabet = (len: number): string => {\n const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n let color = '';\n for (let i = 0; i < len; i++) {\n color += letters[Math.floor(Math.random() * letters.length)];\n }\n return color;\n };\n}\n", "export namespace ConvertUtils {\n\n export function toString (data: string): string;\n export function toString (data: string | Buffer): string;\n export function toString (data: Buffer, config?: {encoding?: BufferEncoding, start?: number, end?: number}): string;\n export function toString (data: string | Buffer, config?: {encoding?: BufferEncoding, start?: number, end?: number}) {\n if (data === undefined || data === null) {\n return '';\n } else if (typeof data === 'string') {\n return data;\n } else {\n return data.toString(config?.encoding ?? 'utf-8', config?.start, config?.end );\n }\n\n }\n\n export const toBuffer = (data: string, config?: {encoding: BufferEncoding}): Buffer => {\n if (config?.encoding === 'base64') {\n // const base64Content = base64Data.replace(/^data:.*,/, ''); \uC774\uAC78\uB85C\uD574\uB3C4\uB428\n // base64Data\uAC00 data:image/png;base64,AAAAA... \uC774\uB7F0 \uD615\uD0DC\n data = data.split(';base64,').pop() || '';\n // if (ValidUtils.isBase64(data)) {\n return Buffer.from(data, 'base64');\n // } else {\n // throw new Error(`Invalid data (${config?.encoding})`);\n // }\n } else {\n return Buffer.from(data)\n }\n\n }\n}", "import { Filter } from '../filters/Filter';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { FileUtils } from '@dooboostore/core-node/file/FileUtils';\nimport { ConvertUtils } from '@dooboostore/core-node/convert/ConvertUtils';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\n\nexport type CacheFilterSessionType = { key: string, lifeTime: number, isUpdate: boolean, responseHeaders?: string[] };\n\ntype CacheConfigCacheItemType = { path: string, createTime: number, lifeTime: number, responseHeader: { [key: string]: string | number | string[] } };\n\ntype KeyAndConfig = { key: string, lifeTime?: number, responseHeaders?: string[] } ;\n\nexport class CacheFilter implements Filter {\n public static readonly CARRIER_KEY_NAME = '_CARRIER_CACHE_FILTER_KEY_NAME';\n private storage = new Map<string, string | Buffer>();\n private cacheConfig: {\n createDate: string;\n updateDate: string;\n caches: { [key: string]: CacheConfigCacheItemType }\n }\n\n constructor(private config: {\n config: {\n cacheDir?: string;\n lifeTime: number;\n startUpClean?: boolean;\n },\n filter?: (rr: RequestResponse, app: SimpleBootHttpServer) => boolean;\n key: (rr: RequestResponse, app: SimpleBootHttpServer) => KeyAndConfig;\n }) {\n\n if (config.config.cacheDir && config.config.startUpClean) {\n FileUtils.deleteSync(config.config.cacheDir, {options: {recursive: true}});\n }\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app, carrier}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // this.key = undefined;\n // this.lifeTime = undefined;\n // this.isUpdate = false;\n const filter = this.config.filter?.(rr,app);\n if (!filter) {\n return true;\n }\n if (this.config.config.cacheDir) {\n FileUtils.mkdirSync(this.config.config.cacheDir, {recursive: true});\n }\n if (!this.cacheConfig && this.config.config.cacheDir) {\n try {\n this.cacheConfig = JSON.parse(ConvertUtils.toString(FileUtils.readSync([this.config.config.cacheDir, 'cacheConfig.json'], { option: {encoding: 'utf-8'}})));\n } catch (e) {\n }\n }\n const date = new Date().toISOString();\n this.cacheConfig ??= {\n createDate: date,\n updateDate: date,\n // accessDate: date,\n caches: {}\n };\n this.cacheConfig.createDate ??= date;\n this.cacheConfig.updateDate ??= date;\n // this.cacheConfig.accessDate ??= date;\n this.cacheConfig.caches ??= {};\n\n\n const rkey = this.config.key(rr, app);\n // console.log('--path filter', rr.reqMethod(), rr.reqUrlPathName, filter, rkey)\n const sessionData: CacheFilterSessionType = {key: rkey.key, lifeTime: rkey.lifeTime ?? this.config.config.lifeTime, isUpdate: false, responseHeaders: rkey.responseHeaders};\n\n\n const cache = this.cacheConfig.caches[sessionData.key];\n if (cache) {\n const existes = this.config.config.cacheDir ? FileUtils.existsSync(cache.path) : this.storage.has(cache.path);\n const diffTime = Date.now() - cache.createTime;\n if (!existes || diffTime > cache.lifeTime) {\n delete this.cacheConfig[sessionData.key];\n this.deleteChunk(cache.path);\n sessionData.isUpdate = true;\n } else {\n rr.resSetHeaders({\n ...cache.responseHeader,\n cacheFilter: `true;remainTime=${cache.lifeTime - diffTime}`\n });\n // console.log('chunk--->', cache.path);\n try {\n const chunk = this.getChunk(cache.path);\n // console.log('chunk--->', chunk);\n await rr.resEnd(chunk);\n } catch (e) {\n console.log('--------e', e)\n }\n }\n } else {\n sessionData.isUpdate = true;\n }\n carrier.set(CacheFilter.CARRIER_KEY_NAME, sessionData);\n return sessionData.isUpdate;\n }\n\n private deleteChunk(path: string) {\n if (this.config.config.cacheDir && FileUtils.existsSync(path)) {\n FileUtils.deleteFileSync(path);\n } else if (this.storage.has(path)) {\n this.storage.delete(path);\n }\n }\n\n private getChunk(path: string) {\n return this.config.config.cacheDir ? FileUtils.readSync(path) : this.storage.get(path);\n }\n\n async proceedAfter({rr, app, carrier}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // const data = await rr.resBodyStringData()\n const sessionData = carrier.get(CacheFilter.CARRIER_KEY_NAME) as CacheFilterSessionType ;\n if (sessionData && sessionData.isUpdate) {\n try {\n if (this.config.config.cacheDir) {\n FileUtils.mkdirSync([this.config.config.cacheDir, 'caches'], {recursive: true});\n }\n const resBody = rr.resBodyData();\n if (!resBody) {\n return true;\n }\n let p: string | undefined = undefined;\n const destFileUUID = RandomUtils.uuid4();\n p = this.writeChunk(destFileUUID, resBody);\n const updateDateNow = Date.now();\n const updateDate = new Date(updateDateNow).toISOString();\n this.cacheConfig.createDate ??= updateDate;\n this.cacheConfig.updateDate = updateDate;\n const responseHeaders: {[key: string]: string | number | string[]} = {}\n sessionData.responseHeaders?.map(it=>it.toLowerCase()).forEach(it => {\n responseHeaders[it] = rr.resHeader(it);\n })\n this.cacheConfig.caches[sessionData.key] = {\n path: p,\n createTime: updateDateNow,\n lifeTime: sessionData.lifeTime,\n responseHeader: responseHeaders\n };\n\n if (this.config.config.cacheDir) {\n FileUtils.write(JSON.stringify(this.cacheConfig), {path: [this.config.config.cacheDir, 'cacheConfig.json']});\n }\n } catch (e) {\n console.log('---', e)\n }\n }\n\n return true;\n }\n\n private writeChunk(destFileUUID: string, resBody: string | Buffer ) {\n if (this.config.config.cacheDir) {\n return FileUtils.write(resBody, {path: [this.config.config.cacheDir, 'caches', destFileUUID]});\n } else {\n this.storage.set(destFileUUID, resBody);\n return destFileUUID;\n }\n }\n}\n", "import {Filter} from '../filters/Filter';\nimport {HttpStatus} from '../codes/HttpStatus';\nimport {RequestResponse} from '../models/RequestResponse';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\n\nexport class HttpStatusFilter implements Filter {\n\n constructor(private httpStatus: HttpStatus | number) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // res.writeHead(this.httpStatus);\n rr.resStatusCode(this.httpStatus);\n rr.resEnd();\n return false;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n\n async onInit(app: SimpleBootHttpServer){\n }\n}\n", "import {Filter} from './Filter';\nimport {HttpStatus} from '../codes/HttpStatus';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\nimport {getUrlMappings} from '../decorators/MethodMapping';\n\ntype MethodType = {\n summary?: string;\n description?: string;\n operationId?: string;\n parameters?: {\n name: string;\n in: string;\n required: boolean;\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }[];\n responses: {\n [code: string]: {\n description: string;\n content?: {\n [type: string]: {\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n }\n};\ntype PathType = {\n [method: string]: MethodType\n};\ntype PathsType = {\n [path: string]: PathType\n};\nexport type OpenApiType = {\n openapi: string;\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n paths?: PathsType\n components?: {\n schemas?: {\n [key: string]: {\n type: string;\n required?: string[];\n properties?: {\n [key: string]: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n securitySchemes?: {\n [key: string]: {\n type: string;\n description?: string;\n in?: string;\n name?: string;\n scheme?: string;\n bearerFormat?: string;\n flows?: {\n [key: string]: {\n authorizationUrl?: string;\n tokenUrl?: string;\n refreshUrl?: string;\n scopes?: {\n [key: string]: {\n description?: string;\n }\n }\n }\n }\n }\n }\n }\n}\nexport type OpenApi3FilterConfig = {\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n}\nconst DefulatData: OpenApiType = {\n openapi: '3.0.1',\n info: {\n title: 'SimpleBootHttpServer OpenApi3',\n description: 'SimpleBootHttpServer OpenApi3',\n }\n}\n\nexport class OpenApi3Filter implements Filter {\n private openApiConfig: any;\n\n constructor(public config: { path: string, excludePath?: { method: string, path: string }[] }, openApiConfig?: OpenApi3FilterConfig) {\n this.openApiConfig = Object.assign(Object.assign({}, DefulatData), openApiConfig ?? {})\n }\n async onInit(app: SimpleBootHttpServer){\n }\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n if (rr.reqUrl === this.config.path) {\n const map = app.routerManager.routingMap();\n // let routers = app.simstanceManager.getSimAtomics().filter((it: SimAtomic) => it.getConfig(RouterMetadataKey));\n const data = {\n paths: {} as PathsType\n } as OpenApiType;\n\n Object.entries(map).filter(([k, v]) => typeof v !== 'string').forEach(([k, v]) => {\n const method = data.paths![k] = {} as PathType;\n getUrlMappings(v)?.forEach(it => {\n method[it.config.method] = {\n summary: it.propertyKey,\n description: it.propertyKey\n // operationId: it.operationId,\n // parameters: it.parameters,\n // responses: it.responses,\n } as MethodType\n });\n })\n\n rr.resWriteJson(Object.assign(Object.assign({}, this.openApiConfig), data)).resStatusCode(HttpStatus.Ok).resEnd();\n return false;\n }\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n", "import { Filter } from '../filters/Filter';\nimport fs from 'fs';\nimport path from 'path';\nimport mime from 'mime-types';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { RequestResponse } from '../models/RequestResponse';\n\nexport type RequestFilterType = string | RegExp | ((rr: RequestResponse, app: SimpleBootHttpServer) => boolean) | ((rr: RequestResponse, app: SimpleBootHttpServer) => Promise<boolean>);\n\nexport class ResourceFilter implements Filter {\n constructor(private resourceDistPath: string, private resourceRegex: (RequestFilterType | { request: RequestFilterType, dist: string })[] = []) {\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const url = (rr.reqUrlPathName ?? '').replace(/\\.\\./g, '');\n const urlObj = rr.reqUrlObject;\n // const requestUrl = parse(rr.reqUrl ?? '', true);\n let sw = true;\n const regExps = this.resourceRegex.filter(it => {\n if (it instanceof RegExp) {\n return it.test(url);\n }\n\n if (typeof it === 'string') {\n return RegExp(it).test(url);\n }\n\n if (typeof it === 'function') {\n return it(rr, app);\n }\n\n if (typeof it === 'object' && 'request' in it) {\n if (typeof it.request === 'function') {\n return it.request(rr, app);\n }\n return RegExp(it.request).test(url);\n }\n })\n // console.log('regExps', regExps, url, this.resourceRegex);\n // eslint-disable-next-line no-unused-vars\n for (const it of regExps) {\n const resourcePath = path.join(this.resourceDistPath, typeof it === 'object' && 'dist' in it ? it.dist : urlObj.pathname);\n // console.log('ResourceFilter', resourcePath, it, urlObj.pathname, url);\n sw = false;\n // console.log('-----', resourcePath);\n if (fs.existsSync(resourcePath)) {\n // const header = {} as any;\n // header[HttpHeaders.ContentType] = mime.lookup(resourcePath);\n // res.writeHead(HttpStatus.Ok, header);\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, mime.lookup(resourcePath).toString());\n await rr.resEnd(fs.readFileSync(resourcePath));\n break;\n } else {\n rr.resStatusCode(HttpStatus.NotFound)\n await rr.resEnd();\n break;\n }\n sw = false;\n }\n return sw;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n", "import { Filter } from '../filters/Filter';\nimport { RequestResponse } from '../models/RequestResponse';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\n\nexport class ThrowFilter implements Filter {\n constructor(private error: any) {\n }\n\n async onInit(app: SimpleBootHttpServer){\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const sw = rr.resIsDone();\n if (!sw) {\n throw this.error;\n };\n return false;\n }\n}\n", "export namespace InjectSituationType {\n export const TransactionManager = Symbol('TransactionManager');\n}", "import { Dictionary } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace StringUtils {\n export const deleteEnter = (data: string) => {\n return data.replace(/\\r?\\n/g, '')\n }\n\n export const pickEmoji = (data: string) => {\n return data.match(/[\\p{Emoji}]/gu) ?? [];\n }\n\n\n export const regexExec = (regex: RegExp, text: string) => {\n let varExec = regex.exec(text)\n const usingVars: any[] = [];\n while (varExec) {\n usingVars.push(varExec)\n varExec = regex.exec(varExec.input)\n }\n return usingVars;\n }\n\n export const regexExecArrayReplace = (origin: string, regexpExecArrayOrRegex: RegExpExecArray[] | RegExp, replace: string | ((data: RegExpExecArray) => string)) => {\n // console.log('------origin', origin ,regexpExecArrayOrRegex, replace)\n const regexpExecArrays = Array.isArray(regexpExecArrayOrRegex) ? regexpExecArrayOrRegex : StringUtils.regexExec(regexpExecArrayOrRegex, origin);\n regexpExecArrays.reverse().forEach(it => {\n const r = typeof replace === 'string' ? replace : replace(it);\n origin = origin.substr(0, it.index) + origin.substr(it.index).replace(it[0], r);\n })\n // console.log('------origin2', origin)\n return origin;\n }\n\n export const escapeSpecialCharacterRegExp = (data: string) => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n\n export const trim = (data: string) => data.trim();\n\n export const rsubString = (data_s: string, blen_n: number): string =>\n data_s.substring(data_s.length - blen_n, data_s.length);\n\n export const lsubString = (data_s: string, alen_n: number): string => data_s.substring(0, alen_n);\n\n export const lpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s = fill_s + full_s;\n }\n return StringUtils.rsubString(full_s, len_n);\n };\n export const rpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s += fill_s;\n }\n return StringUtils.lsubString(full_s, len_n);\n };\n\n export const lappend = (count_n: number, input_s: string): string => {\n let s = '';\n let i = 0;\n while (i++ < count_n) {\n s += input_s;\n }\n return s;\n };\n\n\n export const unescape = (html: string): string => {\n if (!html) return '';\n\n const htmlEntity: Dictionary<string> = {\n quot: '\"',\n amp: '&',\n apos: \"'\",\n lt: '<',\n gt: '>',\n nbsp: '\\u00A0',\n iexcl: '\u00A1',\n cent: '\u00A2',\n pound: '\u00A3',\n curren: '\u00A4',\n yen: '\u00A5',\n brvbar: '\u00A6',\n sect: '\u00A7',\n uml: '\u00A8',\n copy: '\u00A9',\n ordf: '\u00AA',\n laquo: '\u00AB',\n not: '\u00AC',\n shy: '\\u00AD',\n reg: '\u00AE',\n macr: '\u00AF',\n deg: '\u00B0',\n plusmn: '\u00B1',\n sup2: '\u00B2',\n sup3: '\u00B3',\n acute: '\u00B4',\n micro: '\u00B5',\n para: '\u00B6',\n middot: '\u00B7',\n cedil: '\u00B8',\n sup1: '\u00B9',\n ordm: '\u00BA',\n raquo: '\u00BB',\n frac14: '\u00BC',\n frac12: '\u00BD',\n frac34: '\u00BE',\n iquest: '\u00BF',\n '#x27': \"'\"\n };\n\n return html.replace(/&((?:(?:[a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});?)+);/gi, (match, entity) => {\n const entities: string[] = entity.toLowerCase().split(';');\n return entities.map(it => (it in htmlEntity ? htmlEntity[it] : match)).join('');\n });\n };\n\n export const executeExpression = (formatString: string, object: Record<string, string | number>) => {\n return formatString.replace(/\\${([^{}]*)}/g, (matched, piece) => String(object[piece] ?? matched));\n };\n\n export const ellipsis = (text: string, length: number) => {\n if (text.length > length) return `${text.slice(0, length)}...`;\n return text;\n };\n\n // type Postposition =\n /**\n * Appends a postposition to the given text based on the provided options.\n * @param {string} text - The text to append the postposition to.\n * @param {object} options - The options for postposition.\n * @param {string} options.vowel - The postposition to append if the text ends with a vowel(\uBAA8\uC74C).\n * @param {string} options.consonant - The postposition to append if the text ends with a consonant(\uC790\uC74C).\n * @returns {string} - The text with the appropriate postposition appended.\n */\n export const appendPostposition = (text: string, { vowel, consonant }: {\n vowel: string;\n consonant: string;\n }): string => {\n return `${text}${ValidUtils.lastConsonantLetter(text) ? consonant : vowel}`;\n };\n}\n", "import { StringUtils } from '../string/StringUtils';\n\nexport namespace Expression {\n\n // html = html.replace(/\\$\\{[\\s\\S]*?\\}\\$/g, '');\n\n export const bindExpression = (expression: string, bind: { [name: string]: ((arg: any) => any) | any }) => {\n // ${data} wow ${wow:parameter}\n // expression\uC5D0\uC11C ${...} \uD615\uD0DC\uB97C \uBAA8\uB450 \uCC3E\uC544\uC11C \uCC98\uB9AC\n return (expression ?? '').replace(/\\$\\{([\\s\\S.]*?)\\}/g, (_, group) => {\n // \uD30C\uB77C\uBBF8\uD130\uAC00 \uC788\uB294 \uACBD\uC6B0: name:param\n const [name, param] = group.split(':');\n const binder = bind[name];\n if (!binder) return '';\n if (typeof binder === 'function') {\n return binder(bind[param]);\n }\n return binder;\n });\n }\n export namespace Group {\n export const isExpression = (data: string | null) => {\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n return reg.test(data ?? '');\n }\n\n export const expressionGroups = (data: string | null) => {\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]*?)\\}[$#]))/g;\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n return StringUtils.regexExec(reg, data ?? '');\n }\n }\n export namespace Path {\n export type PathNameData = { [name: string]: string }\n export const pathNameData = (pathName: string, urlExpression: string) => {\n const urls = pathName.split('/');\n const urlExpressions = urlExpression.split('/');\n if (urls.length !== urlExpressions.length) {\n return;\n }\n const data: Path.PathNameData = {}\n for (let i = 0; i < urlExpressions.length; i++) {\n const it = urlExpressions[i];\n const urlit = urls[i];\n // ex) {serialNo:[0-9]+} or {no} ..\n const execResult = /^\\{(.+)\\}$/g.exec(it);\n if (!execResult) {\n if (it !== urlit) {\n return;\n }\n continue;\n }\n // regex check\n const [name, regex] = execResult[1].split(':'); // group1\n if (regex && !new RegExp(regex).test(urlit)) {\n return;\n }\n data[name] = urlit;\n }\n return data;\n }\n }\n}", "import { Expression } from '@dooboostore/core/expression/Expression';\n\nexport enum PublishType {\n DATA_PARAMETERS = 'DATA_PARAMETERS',\n INLINE_DATA_PARAMETERS = 'INLINE_DATA_PARAMETERS',\n}\n\n/* uri struct\n scheme uri example: mymodule://asd/asd/b?a=545&aa=33&wow=wow\n global uri example: ://asd/asd/b?a=545&aa=33&wow=wow\n route uri example: Router(/users/aa/ffw)://asd/asd/b?a=545&aa=33&wow=wow\n Symbol.for uri example: Symbol.for(zzz)://asd/asd/b?a=545&aa=33&wow=wow\n <\uC2A4\uD0B4>://<\uC0AC\uC6A9\uC790\uC774\uB984>:<\uBE44\uBC00\uBC88\uD638>@<\uD638\uC2A4\uD2B8>:<\uD3EC\uD2B8>/<\uACBD\uB85C>?<\uC9C8\uC758>#<\uD504\uB808\uADF8\uBA3C\uD2B8>\n*/\nexport class Intent<T = any, E = any> {\n public publishType?: PublishType;\n public sessionData = new Map<string, any>();\n\n constructor(public uri: string | { symbol: Symbol | Symbol[], uri: `/${string}` }, public data?: T, public event?: E) {\n\n if (typeof uri === 'string') {\n const match = uri.match(/^Symbol\\.for\\((.+)\\):\\/(.*)$/);\n if (match) {\n const symbol = Symbol.for(match[1] as string);\n this.uri = {\n symbol: symbol,\n uri: match[2] as `/${string}`,\n };\n }\n }\n }\n\n get symbols() {\n if (typeof this.uri === 'object') {\n // ensure symbol is always an array\n return Array.isArray(this.uri.symbol) ? this.uri.symbol : [this.uri.symbol];\n }\n return undefined;\n }\n\n get scheme() {\n if (typeof this.uri === 'string') {\n const parts = this.uri.split('://');\n if (parts.length > 1) {\n return parts[0];\n }\n return undefined;\n } else {\n return undefined;\n }\n }\n\n get paths() {\n return (this.pathname.split('/') ?? []);\n }\n\n get fullPath() {\n const uri = typeof this.uri === 'string' ? this.uri : this.uri.uri\n const paths = uri.split('://');\n return paths[paths.length >= 2 ? 1 : 0] ?? '';\n }\n\n get pathname() {\n const paths = this.fullPath.split('?');\n return paths[0];\n }\n\n get query() {\n const paths = this.fullPath.split('?');\n return paths[1] ?? '';\n }\n\n get queryParams(): { [key: string]: string } {\n const param = {} as { [key: string]: string };\n this.query.split('&')?.forEach(it => {\n const a = it.split('=')\n param[a[0]] = a[1];\n })\n return param;\n }\n\n get queryParamsAfterDecodeURI(): { [key: string]: string } {\n const params = this.queryParams;\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n params[key] = decodeURIComponent(params[key]);\n }\n }\n return params;\n }\n\n getPathnameData(urlExpression: string) {\n return Expression.Path.pathNameData(this.pathname, urlExpression);\n }\n\n \n\n get isSymbolScheme(): boolean {\n return this.symbols !== undefined;\n }\n}\n", "import { IncomingMessage, OutgoingHttpHeader, OutgoingHttpHeaders, ServerResponse } from 'http';\nimport { HttpHeaders, HttpHeadersType } from '../codes/HttpHeaders';\nimport { Mimes } from '../codes/Mimes';\nimport { Intent } from '@dooboostore/simple-boot/intent/Intent';\nimport { URL, URLSearchParams } from 'url';\nimport { Buffer } from 'buffer';\nimport { MultipartData } from './datas/MultipartData';\nimport { ReqFormUrlBody } from './datas/body/ReqFormUrlBody';\nimport { ReqJsonBody } from './datas/body/ReqJsonBody';\nimport { ReqHeader } from './datas/ReqHeader';\nimport { ReqMultipartFormBody } from './datas/body/ReqMultipartFormBody';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { gzip } from 'node-gzip';\nimport { SessionManager } from '../session/SessionManager';\nimport { HttpServerOption } from '../option/HttpServerOption';\nimport * as fs from 'fs';\nimport * as os from 'os';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\nimport { FileUtils } from '@dooboostore/core-node/file/FileUtils';\nimport { ConvertUtils as CoreConvertUtils} from '@dooboostore/core/convert/ConvertUtils';\nimport { ConvertUtils } from '@dooboostore/core-node/convert/ConvertUtils';\n// https://masteringjs.io/tutorials/node/http-request\ntype Config = { sessionManager?: SessionManager, option: HttpServerOption };\n\n// https://nodejs.org/ko/docs/guides/anatomy-of-an-http-transaction/\nexport class RequestResponse {\n protected resWriteChunk: string | Buffer | undefined;\n protected reqBodyChunk?: Buffer;\n protected req: IncomingMessage;\n protected res: ServerResponse;\n protected config: Config;\n // protected sessionManager?: SessionManager;\n\n // constructor(req: IncomingMessage, res: ServerResponse);\n // constructor(req: RequestResponse);\n // constructor(req: IncomingMessage, res: ServerResponse, sessionManager?: SessionManager);\n // constructor(req: IncomingMessage | RequestResponse, res?: ServerResponse, sessionManager?: SessionManager) {\n // // this.req = req;\n // // this.res = res;\n // if (req instanceof RequestResponse) {\n // this.req = req.req;\n // this.res = req.res;\n // this.sessionManager = req.sessionManager;\n // } else {\n // this.req = req;\n // this.res = res!;\n // this.sessionManager = sessionManager;\n // }\n // }\n constructor(req: IncomingMessage | RequestResponse, res: ServerResponse, config: Config) {\n // this.req = req;\n // this.res = res;\n if (req instanceof RequestResponse) {\n this.req = req.req;\n this.res = req.res;\n this.config = config;\n } else {\n this.req = req;\n this.res = res!;\n this.config = config;\n }\n }\n\n get reqSocket() {\n return this.req.socket;\n }\n\n get reqCookieMap() {\n let cookies = this.reqHeader(HttpHeaders.Cookie) ?? '';\n if (Array.isArray(cookies)) {\n cookies = cookies.join(';')\n }\n\n const map = new Map<string, string>();\n cookies.split(';').map(it => it.trim().split('=')).forEach(it => {\n map.set(it[0], it[1]);\n });\n return map;\n }\n\n reqCookieGet(key: string) {\n return this.reqCookieMap.get(key);\n }\n\n get reqRemoteAddress(): string | undefined {\n const ipHeader = this.req.headers['x-forwarded-for'];\n let ip = this.req.socket.remoteAddress;\n if (Array.isArray(ipHeader)) {\n ip = ipHeader.join(',').split(',').shift();\n } else if (typeof ipHeader === 'string') {\n ip = ipHeader.split(',').shift();\n }\n return ip;\n }\n\n get reqUrlObject(): URL {\n return new URL(this.reqUrl, `${this.reqSocket ? 'https://' : 'http'}${this.reqHost ?? 'localhost'}`);\n }\n\n get reqUrlPathName(): string {\n // parse(rr.reqUrl ?? '', true)\n return this.reqUrlObj().pathname ?? '';\n }\n\n get reqUrl(): string {\n return this.req.url ?? '';\n }\n\n reqUrlObj(config?:{scheme?: string, host?: string}): URL {\n return new URL(`${config?.scheme??'http' }://${config?.host ? config?.host : (this.reqHeaderFirst(HttpHeaders.Host) ?? 'localhost')}${this.req.url ?? ''}`);\n }\n\n get reqUrlSearchParamTuples(): [string, string][] {\n return Array.from(this.reqUrlObj().searchParams as any);\n }\n\n get reqUrlSearchParams(): URLSearchParams {\n return this.reqUrlObj().searchParams;\n }\n\n get reqUrlSearchParamsObj(): {[p: string]: string | string[]} {\n const entries = this.reqUrlObj().searchParams;\n return CoreConvertUtils.toObject(entries);\n // return obj;\n // return Object.fromEntries(entries as any)\n }\n\n get reqPathSearchParamUrl(): string {\n const reqUrlObj = this.reqUrlObj();\n return reqUrlObj.pathname + (reqUrlObj.searchParams.toString() ? '?' + reqUrlObj.searchParams.toString() : '')\n }\n\n get reqReadable() {\n return this.req.readable;\n }\n\n get reqIntent() {\n return new Intent(this.reqPathSearchParamUrl);\n }\n\n reqHasContentTypeHeader(mime: Mimes | string): boolean {\n return (this.reqHeaderFirst(HttpHeaders.ContentType) ?? '').toLowerCase().indexOf(mime.toLocaleLowerCase()) > -1;\n }\n\n reqHasAcceptHeader(mime: Mimes | string): boolean {\n return (this.reqHeaderFirst(HttpHeaders.Accept) ?? '').toLowerCase().indexOf(mime.toLocaleLowerCase()) > -1;\n }\n\n reqBodyData(): Promise<Buffer> {\n return new Promise<Buffer>((resolve, reject) => {\n if (this.reqReadable) {\n const data: Uint8Array[] = [];\n this.req.on('data', (chunk) => data.push(chunk));\n this.req.on('error', err => reject(err));\n this.req.on('end', () => {\n this.reqBodyChunk = Buffer.concat(data);\n resolve(this.reqBodyChunk);\n });\n } else {\n resolve(this.reqBodyChunk ?? Buffer.alloc(0));\n }\n });\n }\n \n resBodyData(): string | Buffer | undefined{\n return this.resWriteChunk;\n }\n\n\n\n async reqBodyMultipartFormDataObject<T>(): Promise<T> {\n const m = await this.reqBodyMultipartFormData();\n const formData = {} as any;\n\n for (const it of m) {\n if (it.isFile) {\n formData[it.name] = await FileUtils.writeFile(it.value, {originalName: it.filename });\n } else {\n const target = formData[it.name];\n if (Array.isArray(target)) {\n target.push(it.value);\n } else if (typeof target === 'string') {\n formData[it.name] = [target, it.value]\n } else {\n formData[it.name] = it.value;\n }\n }\n };\n return formData;\n }\n\n reqBodyMultipartFormData(): Promise<MultipartData[]> {\n return new Promise((resolve, reject) => {\n const contentTypeHeader = this.req.headers['content-type'];\n if (!contentTypeHeader || !contentTypeHeader.startsWith('multipart/form-data')) {\n return reject(new Error('Invalid Content-Type. Expected multipart/form-data.'));\n }\n\n const boundaryMatch = contentTypeHeader.match(/boundary=(?:\"([^\"]+)\"|([^;]+))/i);\n if (!boundaryMatch) {\n return reject(new Error('Boundary not found in Content-Type header.'));\n }\n const boundary = boundaryMatch[1] || boundaryMatch[2]; // \uB530\uC634\uD45C \uC720\uBB34 \uCC98\uB9AC\n if (!boundary) {\n return reject(new Error('Failed to extract boundary.'));\n }\n\n const boundaryBuffer = Buffer.from(`--${boundary}`);\n const crlfBuffer = Buffer.from('\\r\\n');\n const doubleCrlfBuffer = Buffer.from('\\r\\n\\r\\n'); // \uD5E4\uB354\uC640 \uBC14\uB514 \uAD6C\uBD84\uC790\n\n const chunks: Buffer[] = [];\n let totalLength = 0;\n\n this.req.on('data', (chunk: Buffer) => {\n chunks.push(chunk);\n totalLength += chunk.length;\n });\n\n this.req.on('error', (err) => {\n reject(err);\n });\n\n this.req.on('end', () => {\n if (totalLength === 0) {\n return resolve([]); // \uBE48 \uC694\uCCAD \uCC98\uB9AC\n }\n\n const fullBuffer = Buffer.concat(chunks, totalLength);\n const parsedParts: MultipartData[] = [];\n let currentPosition = 0;\n\n // \uCCAB \uBC88\uC9F8 boundary \uCC3E\uAE30 (\uBCF4\uD1B5 \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC788\uC74C)\n let boundaryStartIndex = fullBuffer.indexOf(boundaryBuffer, currentPosition);\n if (boundaryStartIndex === -1) {\n return reject(new Error('Initial boundary not found.'));\n }\n // boundary \uBC14\uB85C \uB2E4\uC74C \\r\\n \uAC74\uB108\uB6F0\uAE30\n currentPosition = boundaryStartIndex + boundaryBuffer.length;\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n\n\n while (currentPosition < fullBuffer.length) {\n // \uB2E4\uC74C boundary \uCC3E\uAE30 (\uD30C\uD2B8\uC758 \uB05D)\n const nextBoundaryIndex = fullBuffer.indexOf(boundaryBuffer, currentPosition);\n if (nextBoundaryIndex === -1) {\n // \uB9C8\uC9C0\uB9C9 boundary (--)\uC778\uC9C0 \uD655\uC778 \uD544\uC694\uD558\uB098, \uC5EC\uAE30\uC11C\uB294 \uB2E8\uC21C\uD558\uAC8C \uCC98\uB9AC\n // console.warn('Next boundary not found, assuming end of data or malformed.');\n break;\n }\n\n // \uD604\uC7AC \uD30C\uD2B8 \uB370\uC774\uD130 \uCD94\uCD9C (boundary \uC774\uC804\uAE4C\uC9C0)\n // \uC2E4\uC81C \uD30C\uD2B8 \uB370\uC774\uD130\uB294 \uB2E4\uC74C boundary \uBC14\uB85C \uC55E\uC758 \\r\\n\uC744 \uC81C\uC678\uD574\uC57C \uD568\n let partEndIndex = nextBoundaryIndex;\n if (partEndIndex > crlfBuffer.length && fullBuffer.slice(partEndIndex - crlfBuffer.length, partEndIndex).equals(crlfBuffer)) {\n partEndIndex -= crlfBuffer.length;\n }\n const partBuffer = fullBuffer.slice(currentPosition, partEndIndex);\n\n // \uD5E4\uB354\uC640 \uBC14\uB514 \uBD84\uB9AC\n const headerBodySeparatorIndex = partBuffer.indexOf(doubleCrlfBuffer);\n if (headerBodySeparatorIndex === -1) {\n console.warn('Skipping malformed part: no header/body separator found.');\n currentPosition = nextBoundaryIndex + boundaryBuffer.length;\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n if (fullBuffer.slice(currentPosition, currentPosition + 2).toString() === '--') break; // \uB9C8\uC9C0\uB9C9 boundary\n continue;\n }\n\n const headerBuffer = partBuffer.slice(0, headerBodySeparatorIndex);\n const bodyBuffer = partBuffer.slice(headerBodySeparatorIndex + doubleCrlfBuffer.length);\n const headersStr = headerBuffer.toString('utf-8'); // \uD5E4\uB354\uB294 \uBCF4\uD1B5 ASCII/UTF-8\n\n // \uD5E4\uB354 \uD30C\uC2F1\n const headers: { [key: string]: string } = {};\n headersStr.split('\\r\\n').forEach(line => {\n const colonIndex = line.indexOf(':');\n if (colonIndex > 0) {\n const key = line.substring(0, colonIndex).trim().toLowerCase();\n const value = line.substring(colonIndex + 1).trim();\n headers[key] = value;\n }\n });\n\n const contentDisposition = headers['content-disposition'];\n if (!contentDisposition) {\n console.warn('Skipping part: no Content-Disposition header.');\n currentPosition = nextBoundaryIndex + boundaryBuffer.length;\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n if (fullBuffer.slice(currentPosition, currentPosition + 2).toString() === '--') break;\n continue;\n }\n\n const nameMatch = contentDisposition.match(/name=\"([^\"]+)\"/i);\n const filenameMatch = contentDisposition.match(/filename=\"([^\"]+)\"/i);\n\n const name = nameMatch ? nameMatch[1] : null;\n const filename = filenameMatch ? filenameMatch[1] : null;\n const contentType = headers['content-type'] || null;\n\n if (name) {\n\n const isFile = !!filename;\n // @ts-ignore\n const multipartData:MultipartData = {\n name:name,\n isFile: isFile, // filename\uC774 \uC788\uC73C\uBA74 \uD30C\uC77C\uB85C \uAC04\uC8FC\n filename: filename,\n contentType: contentType,\n value: isFile ? bodyBuffer: bodyBuffer.toString('utf-8'),\n }\n parsedParts.push(multipartData);\n } else {\n console.warn(\"Skipping part: 'name' not found in Content-Disposition.\");\n }\n\n // \uB2E4\uC74C \uD30C\uD2B8 \uC2DC\uC791 \uC704\uCE58\uB85C \uC774\uB3D9\n currentPosition = nextBoundaryIndex + boundaryBuffer.length;\n // boundary \uBC14\uB85C \uB2E4\uC74C \\r\\n \uAC74\uB108\uB6F0\uAE30\n if (fullBuffer.slice(currentPosition, currentPosition + crlfBuffer.length).equals(crlfBuffer)) {\n currentPosition += crlfBuffer.length;\n }\n\n // \uB9C8\uC9C0\uB9C9 boundary (--)\uC778\uC9C0 \uD655\uC778\uD558\uACE0 \uB8E8\uD504 \uC885\uB8CC\n if (fullBuffer.slice(currentPosition, currentPosition + 2).toString() === '--') {\n break;\n }\n }\n resolve(parsedParts);\n });\n })\n // const form = formidable({});\n // return new Promise((resolve, reject) => {\n // form.parse(this.req, (err, fields, files) => {\n // if (err) {\n // reject(err);\n // return;\n // }\n //\n // console.log('----', files)\n // // this.res.set('Content-Type', 'application/json');\n // // ctx.status = 200;\n // // ctx.state = { fields, files };\n // // ctx.body = JSON.stringify(ctx.state, null, 2);\n // resolve(' ' as any);\n // });\n // });\n\n // return new Promise<MultipartData<any>[]>((resolve, reject) => {\n //\n //\n // const contentType = this.req.headers['content-type'];\n // const boundary = contentType.split('boundary=')[1];\n //\n // let body: Uint8Array[] = [];\n // this.req.on('data', chunk => body.push(chunk));\n // this.req.on('end', async () => {\n // const buffer = Buffer.concat(body);\n // // Boundary\uB85C \uD30C\uD2B8 \uBD84\uB9AC\n // const parts = buffer.toString().split(`--${boundary}`).slice(1, -1);\n // let jsonData = {};\n // let fileData = null;\n //\n // for (let part of parts) {\n // const [headerPart, ...bodyParts] = part.split('\\r\\n\\r\\n');\n // const headers = headerPart.split('\\r\\n').reduce((acc, line) => {\n // const [key, value] = line.split(': ').map(s => s.trim().toLowerCase());\n // if (key) acc[key] = value;\n // return acc;\n // }, {});\n //\n // const content = bodyParts.join('\\r\\n\\r\\n').trim();\n // const disposition = headers['content-disposition'];\n // const name = disposition?.match(/name=\"([^\"]+)\"/)?.[1];\n // const filename = disposition?.match(/filename=\"([^\"]+)\"/)?.[1];\n //\n // if (filename) {\n // // \uD30C\uC77C \uB370\uC774\uD130 (Blob)\n // fileData = { filename, contentType: headers['content-type'], data: Buffer.from(content, 'binary') };\n // } else if (name) {\n // // \uD14D\uC2A4\uD2B8 \uB370\uC774\uD130\n // if (name === 'metadata') jsonData = JSON.parse(content);\n // }\n // }\n //\n // // \uD30C\uC77C \uC800\uC7A5\n // if (fileData) {\n //\n //\n //\n //\n // const uploadPath = this.config.option.fileUploadTempPath || os.tmpdir();\n // fs.mkdirSync(uploadPath, { recursive: true }); // \uD3F4\uB354\uAC00 \uC5C6\uC73C\uBA74 \uC0DD\uC131\n // const saveTempPath = `${uploadPath}/${RandomUtils.uuid4()}${fileData.filename}`;\n // console.log('saveTempPathsaveTempPath', saveTempPath)\n // await fs.promises.writeFile(saveTempPath, fileData.data);\n // this.res.writeHead(200, { 'Content-Type': 'application/json' });\n // this.res.end(JSON.stringify({ message: '\uC5C5\uB85C\uB4DC \uC131\uACF5', jsonData, filename: fileData?.filename }));\n // // const uploadPath = this.config.option.fileUploadTempPath ;\n // // fs.mkdirSync(uploadPath, { recursive: true }); // \uD3F4\uB354\uAC00 \uC5C6\uC73C\uBA74 \uC0DD\uC131\n // // await fs.writeFile(`${uploadPath}/${fileData.filename}`, fileData.data);\n // }\n // });\n // });\n }\n\n async reqBodyStringData(): Promise<string> {\n const data = (await this.reqBodyData()).toString()\n return data;\n }\n\n async reqBodyJsonData<T>(): Promise<T> {\n return JSON.parse(await this.reqBodyStringData());\n }\n\n async reqBodyFormUrlData<T>(): Promise<T> {\n const data = (await this.reqBodyStringData())\n const formData = {} as any;\n Array.from(new URLSearchParams(data).entries()).forEach(([k, v]) => {\n const target = formData[k];\n if (Array.isArray(target)) {\n target.push(v);\n } else if (typeof target === 'string') {\n formData[k] = [target, v]\n } else {\n formData[k] = v;\n }\n });\n return formData;\n }\n\n async reqBodyReqFormUrlBody() {\n const data = await this.reqBodyFormUrlData()\n return Object.assign(new ReqFormUrlBody(), data);\n }\n\n async reqBodyReqJsonBody(): Promise<ReqJsonBody> {\n const data = (await this.reqBodyStringData());\n return Object.assign(new ReqJsonBody(), data ? JSON.parse(data) : {})\n }\n\n // reqBodyReqMultipartFormBody(): Promise<ReqMultipartFormBody> {\n // return this.reqBodyMultipartFormData().then(it => new ReqMultipartFormBody(it))\n // }\n\n resBodyJsonData<T>(): (T | null) {\n const data = ConvertUtils.toString(this.resBodyData());\n return data ? JSON.parse(data) : null;\n }\n\n resBodyStringData() {\n return ConvertUtils.toString(this.resBodyData());\n }\n\n reqMethod() {\n return this.req.method?.toUpperCase();\n }\n\n reqHeader(key: keyof typeof HttpHeaders | string) {\n return this.req.headers[key.toLowerCase()];\n }\n\n get reqHost() {\n return this.reqHeaderFirst(HttpHeaders.Host)\n }\n\n get reqHeaderObj(): ReqHeader {\n const h = new ReqHeader();\n Object.entries(this.req.headers).forEach(([k, v]) => {\n h[k] = v;\n });\n return h;\n }\n\n reqHeaderFirst(key: HttpHeadersType | string, defaultValue?: string) {\n const header = this.req.headers[key.toLowerCase()];\n if (header && Array.isArray(header)) {\n return header[0] ?? defaultValue;\n } else {\n return (header as string) ?? defaultValue;\n }\n }\n\n public reqAuthorizationHeader() {\n return this.reqHeaderFirst(HttpHeaders.Authorization);\n }\n\n reqRefreshTokenHeader() {\n return this.reqHeaderFirst(HttpHeaders.Authorization);\n }\n\n resStatusCode(code?: undefined): number;\n // eslint-disable-next-line no-dupe-class-members\n resStatusCode(code: number | HttpStatus): RequestResponseChain<number>;\n // eslint-disable-next-line no-dupe-class-members\n resStatusCode(code: number | undefined | HttpStatus): number | RequestResponseChain<number> {\n if (code) {\n this.res.statusCode = code;\n return new RequestResponseChain<number>(this.req, this.res, this.config, this.res.statusCode);\n } else {\n return this.res.statusCode;\n }\n }\n\n resHeader(key: HttpHeadersType | string) {\n return this.res.getHeader(key.toLowerCase());\n }\n\n resHeaderFirst(key: HttpHeadersType | string, defaultValue?: string) {\n const header = this.res.getHeader(key.toLowerCase());\n if (header && Array.isArray(header)) {\n return header[0] ?? defaultValue;\n } else {\n return (header as string) ?? defaultValue;\n }\n }\n\n async reqSession(): Promise<{ [key: string]: any }> {\n if (this.config.sessionManager) {\n return (await this.config.sessionManager.session(this)).dataSet.data;\n } else {\n return Promise.reject(new Error('Not SessionManager'));\n }\n }\n\n reqSessionSet(key: string, value: any): void {\n (this.reqSession as any)[key] = value;\n }\n\n reqSessionGet<T = any>(key: string): T | undefined {\n const session = this.reqSession as any;\n if (session) {\n return session[key] as T;\n }\n }\n\n resSetStatusCode(statusCode: number) {\n this.res.statusCode = statusCode;\n return this.createRequestResponseChain(this.res.statusCode);\n }\n\n // resEnd() {\n // this.res.end();\n // }\n\n // eslint-disable-next-line no-undef\n resWrite(chunk: string | Buffer | any, encoding: BufferEncoding = 'utf8') {\n this.resWriteChunk = chunk;\n return this.createRequestResponseChain(this.resWriteChunk);\n }\n\n // eslint-disable-next-line no-undef\n resWriteJson(chunk: any, encoding: BufferEncoding = 'utf8') {\n return this.resWrite(JSON.stringify(chunk), encoding);\n }\n\n resSetHeader(key: HttpHeadersType | string, value: string | string[]) {\n return this.createRequestResponseChain(this.res.setHeader(key.toLowerCase(), value));\n }\n\n resAddHeader(key: HttpHeadersType | string, value: string | string[]) {\n const existingValue = this.res.getHeader(key.toLowerCase());\n const newValue = Array.isArray(existingValue)\n ? existingValue.concat(value)\n : existingValue\n ? [existingValue.toString(), ...[].concat(value)]\n : value;\n return this.createRequestResponseChain(this.res.setHeader(key.toLowerCase(), newValue));\n }\n\n resSetHeaders(headers: { [key: string]: string | string[] }) {\n Object.entries(headers).forEach(([key, value]) => this.resSetHeader(key, value));\n return this.createRequestResponseChain();\n }\n\n resAddHeaders(headers: { [key: string]: string | string[] }) {\n Object.entries(headers).forEach(([key, value]) => this.resAddHeader(key, value));\n return this.createRequestResponseChain();\n }\n\n // \uB9C8\uC9C0\uB9C9 \uC885\uB8CC\uB420\uB54C \uD0C0\uB294\uAC70.\n private async resEndChunk() {\n const encoding = this.reqHeaderFirst(HttpHeaders.AcceptEncoding);\n let data = this.resWriteChunk;\n if (encoding?.includes('gzip')) {\n data = await gzip(data);\n this.resSetHeader(HttpHeaders.ContentEncoding, 'gzip');\n }\n this.res.end(data);\n }\n\n async resEnd(chunk?: string | Buffer) {\n this.resWriteChunk = chunk ?? this.resWriteChunk;\n if (this.req.readable) {\n await this.reqBodyData();\n await this.resEndChunk();\n } else {\n await this.resEndChunk();\n }\n }\n\n // writeContinue(callback?: () => void) {\n // this.res.writeContinue(callback);\n // return new RequestResponseChain(this.req, this.res);\n // }\n\n // reqWrite(chunk?: any) {\n // this.resWriteChunk = chunk;\n // // this.res.write(chunk);\n // return this.createRequestResponseChain();\n // }\n\n resWriteHead(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[] | { [key: string]: string | string[] }) {\n return this.createRequestResponseChain(this.res.writeHead(statusCode, headers));\n }\n resWriteHeadEnd(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[] | { [key: string]: string | string[] }) {\n this.createRequestResponseChain(this.res.writeHead(statusCode, headers));\n this.res.end();\n }\n\n resIsDone() {\n return this.res.finished || this.res.writableEnded || this.res.headersSent;\n // return new RequestResponseChain(this.req, this.res, this.res.finished || this.res.writableEnded);\n }\n\n createRequestResponseChain<T = any>(data?: T) {\n const requestResponseChain = new RequestResponseChain(this.req, this.res, this.config, data);\n requestResponseChain.resWriteChunk = this.resWriteChunk;\n requestResponseChain.reqBodyChunk = this.reqBodyChunk;\n return requestResponseChain;\n }\n\n // res.on(\"readable\", () => {\n // console.log('readable???')\n // });\n // res.on('complete', function (details) {\n // var size = details.req.bytes;\n // console.log('complete-->', size)\n // });\n // res.on('finish', function() {\n // console.log('finish??');\n // });\n // res.on('end', () => {\n // console.log('end--?')\n // });\n}\n\nexport class RequestResponseChain<T> extends RequestResponse {\n constructor(req: IncomingMessage, res: ServerResponse, config: Config, public result?: T) {\n super(req, res, config);\n }\n}", "export class ReqFormUrlBody {\n [key: string]: string | string[]\n}", "export class ReqJsonBody {\n [key: string]: any\n}", "import {IncomingHttpHeaders} from 'http';\n\nexport class ReqHeader implements IncomingHttpHeaders {\n [key: string]: string | string[] | undefined;\n\n 'accept-language': string | undefined;\n 'accept-patch': string | undefined;\n 'accept-ranges': string | undefined;\n 'access-control-allow-credentials': string | undefined;\n 'access-control-allow-headers': string | undefined;\n 'access-control-allow-methods': string | undefined;\n 'access-control-allow-origin': string | undefined;\n 'access-control-expose-headers': string | undefined;\n 'access-control-max-age': string | undefined;\n 'access-control-request-headers': string | undefined;\n 'access-control-request-method': string | undefined;\n 'alt-svc': string | undefined;\n 'cache-control': string | undefined;\n 'content-disposition': string | undefined;\n 'content-encoding': string | undefined;\n 'content-language': string | undefined;\n 'content-length': string | undefined;\n 'content-location': string | undefined;\n 'content-range': string | undefined;\n 'content-type': string | undefined;\n 'if-match': string | undefined;\n 'if-modified-since': string | undefined;\n 'if-none-match': string | undefined;\n 'if-unmodified-since': string | undefined;\n 'last-modified': string | undefined;\n 'proxy-authenticate': string | undefined;\n 'proxy-authorization': string | undefined;\n 'public-key-pins': string | undefined;\n 'retry-after': string | undefined;\n 'sec-websocket-accept': string | undefined;\n 'sec-websocket-extensions': string | undefined;\n 'sec-websocket-key': string | undefined;\n 'sec-websocket-protocol': string | undefined;\n 'sec-websocket-version': string | undefined;\n 'set-cookie': string[] | undefined;\n 'strict-transport-security': string | undefined;\n 'transfer-encoding': string | undefined;\n 'user-agent': string | undefined;\n 'www-authenticate': string | undefined;\n accept: string | undefined;\n age: string | undefined;\n allow: string | undefined;\n authorization: string | undefined;\n connection: string | undefined;\n cookie: string | undefined;\n date: string | undefined;\n etag: string | undefined;\n expect: string | undefined;\n expires: string | undefined;\n forwarded: string | undefined;\n from: string | undefined;\n host: string | undefined;\n location: string | undefined;\n origin: string | undefined;\n pragma: string | undefined;\n range: string | undefined;\n referer: string | undefined;\n tk: string | undefined;\n trailer: string | undefined;\n upgrade: string | undefined;\n vary: string | undefined;\n via: string | undefined;\n warning: string | undefined;\n}", "import { Vector } from './Vector';\n\nexport class Point2D {\n public x: number;\n public y: number;\n\n constructor(data: {x?: number, y?: number});\n constructor(x?: number, y?: number);\n constructor(x?: number | {x?: number, y?: number} | Vector , y?: number) {\n if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n }\n }\n\n copy() {\n return new Point2D(this.x, this.y);\n }\n}\n", "// https://p5js.org/ko/\nimport { Point3D } from './Point3D';\nimport { Point2D } from './Point2D';\n\nexport class Vector {\n public x: number;\n public y: number;\n public z: number;\n\n constructor(data: Point3D);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n } else if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n this.z = x.z ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n this.z = z ?? 0;\n }\n }\n\n\n public set(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.set(v.x || 0, v.y || 0, v.z || 0);\n } else {\n this.x = v;\n this.y = y;\n this.z = z;\n }\n return this;\n }\n\n public get() {\n return new Vector(this.x, this.y, this.z);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4\uC758 \uC815\uB9AC\uB294 a\uC758 \uC81C\uACF1 \uB354\uD558\uAE30 b \uC758 \uC81C\uACF1\uC740 c \uC758 \uC81C\uACF1\uACFC \uAC19\uB2E4\uB294 \uAC83\uC744 \uC815\uC758\uD569\uB2C8\uB2E4.\n public mag(): number {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n return Math.sqrt(x * x + y * y + z * z); // \uC758 \uC81C\uACF1\uADFC\uC744 \uB9AC\uD134\uD558\uBA74 \uAE38\uC774\uAC00 \uBC18\uD658\uB41C\uB2E4.\n }\n\n public add(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n } else {\n this.x += v;\n this.y += y;\n this.z += z;\n }\n }\n\n public toAdd(v1: Vector|Point3D, v2: Vector|Point3D): Vector {\n return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n }\n\n // public static add(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n // }\n\n public sub(v: number | Vector |Point3D, y = 0, z = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n } else {\n this.x -= v;\n this.y -= y;\n this.z -= z;\n }\n }\n\n public toSub(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n }\n\n //\n // public static sub(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n // }\n\n public mult(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n } else {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n }\n return this;\n }\n\n public toMult(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n }\n\n // public static mult(v1: Vector, v2: Vector) {\n // return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n // }\n\n public div(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n } else {\n this.x /= v;\n this.y /= v;\n this.z /= v;\n }\n return this;\n }\n\n public toDiv( d: number): Vector {\n const v = this;\n const rv = v.get();\n rv.x /= d;\n rv.y /= d;\n rv.z /= d;\n return rv;\n }\n\n // public static div(v: Vector, d: number): Vector {\n // const rv = v.get();\n // rv.x /= d;\n // rv.y /= d;\n // rv.z /= d;\n // return rv;\n // }\n\n public dist(v: Vector | Point3D): number {\n const dx = this.x - v.x,\n dy = this.y - v.y,\n dz = this.z - v.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n public toDist(v2: Vector | Point3D): number {\n const v1 = this;\n const dx = v1.x - v2.x,\n dy = v1.y - v2.y,\n dz = v1.z - v2.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n // public static dist(v1: Vector, v2: Vector): number {\n // const dx = v1.x - v2.x,\n // dy = v1.y - v2.y,\n // dz = v1.z - v2.z;\n // return Math.sqrt(dx * dx + dy * dy + dz * dz);\n // }\n\n public dot(v: number | Vector | Point3D, y: number, z: number): number {\n if (v instanceof Vector || v instanceof Point3D) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n ;\n return this.x * v + this.y * y + this.z * z;\n }\n\n public cross(v: Vector | Point3D): Vector {\n const x = this.x,\n y = this.y,\n z = this.z;\n return new Vector(y * v.z - v.y * z, z * v.x - v.z * x, x * v.y - v.x * y);\n }\n\n public normalize() {\n const m = this.mag();\n if (m > 0) this.div(m);\n }\n\n public limit(high: number) {\n if (this.mag() > high) {\n this.normalize();\n this.mult(high);\n }\n }\n\n public heading2D() {\n return -Math.atan2(-this.y, this.x);\n }\n\n public random2D() {\n return this.fromAngle(Math.random() * (2 * Math.PI));\n }\n\n public fromAngle(angle: number, length = 1) {\n return new Vector(length * Math.cos(angle), length * Math.sin(angle), 0);\n };\n\n public fromAngles(theta: number, phi: number, length = 1) {\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n return new Vector(\n length * sinTheta * sinPhi,\n -length * cosTheta,\n length * sinTheta * cosPhi\n );\n };\n\n public array(): number[] {\n return [this.x, this.y, this.z];\n }\n\n public toPoint3D(): Point3D {\n return new Point3D(this.x, this.y, this.z);\n }\n\n public toPoint2D(): Point2D {\n return new Point2D(this.x, this.y);\n }\n\n public copy(): Vector {\n return new Vector(this.x, this.y, this.z);\n }\n\n public toString(): string {\n return '[' + this.x + ', ' + this.y + ', ' + this.z + ']';\n }\n\n}\n", "import { Vector } from './Vector';\nimport { Point2D } from './Point2D';\n\nexport class Point3D extends Point2D {\n public z: number;\n\n constructor(data: Vector);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Vector, y?: number, z?: number) {\n if (x instanceof Vector) {\n super(x.x, x.y);\n this.z = x.z;\n } else if (typeof x === 'object') {\n super({x: x.x ?? 0, y: x.y ?? 0})\n this.z = x.z ?? 0;\n } else {\n super(x,y)\n this.z = z ?? 0;\n }\n }\n\n copy() {\n return new Point3D(this.x, this.y, this.z);\n }\n}\n", "import { Vector } from '../../Vector';\nimport { Rect } from '../../Rect';\n\ntype Transaform = [number, number, number, number, number, number];\n\ntype Color = {\n r?: number,\n g?: number,\n b?: number,\n a?: number\n};\n\nexport class Obj<T = any> extends Vector {\n\n public volume = 0; // \uBD80\uD53C\n public mass = 0; // \uC9C8\uB7C9\n public e = 0; // \uD0C4\uC131\n public rotate = 0; // \uD68C\uC804\n public width = 0; // \uB108\uBE44\n public height = 0; // \uB192\uC774\n public data?: T;\n // public age = 0; // \uC0DD\uC131\uB41C \uC2DC\uAC04 \uAC00\uC911\uCE58\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform\n /*\n a, d: \uAC00\uB85C/\uC138\uB85C \uC2A4\uCF00\uC77C\n b, c: \uAE30\uC6B8\uC774\uAE30(skew)\n e, f: \uC774\uB3D9(translate)\n --------------\n a, b, c, d, e, f\n */\n public transform: Transaform = [1, 0, 0, 1, 0, 0];\n public color: Color = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n public id?: string;\n\n // public data?: T;\n\n\n constructor(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n super();\n this.updateObjWithDefaults(data);\n }\n\n\n copyObj() {\n return new Obj({\n x: this.x,\n y: this.y,\n z: this.z,\n volume: this.volume,\n mass: this.mass,\n e: this.e,\n rotate: this.rotate,\n width: this.width,\n height: this.height,\n transform: [...this.transform],\n color: {...this.color},\n data: {...this.data}\n });\n }\n\n updateObjWithDefaults(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x ?? this.x;\n this.y = data.y ?? this.y;\n this.z = data.z ?? this.z;\n this.volume = data.volume ?? this.volume;\n this.mass = data.mass ?? this.mass;\n this.e = data.e ?? this.e;\n this.rotate = data.rotate ?? this.rotate;\n this.width = data.width ?? this.width;\n this.height = data.height ?? this.height;\n this.transform = [...(data.transform ?? this.transform)];\n this.color = {...(data.color ?? this.color)};\n const t = data.data ?? this.data;\n this.data = t?{...t}:undefined;\n }\n }\n\n setObj(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x??0;\n this.y = data.y??0;\n this.z = data.z??0;\n this.volume = data.volume??0;\n this.mass = data.mass??0;\n this.e = data.e??0;\n this.rotate = data.rotate??0;\n this.width = data.width??0;\n this.height = data.height??0;\n this.transform = [...(data.transform??[1, 0, 0, 1, 0, 0])];\n this.color = { ...(data.color??{r:0,g:0,b:0,a:255})};\n const data1 = data.data;\n this.data = data1 ? { ...data1} : undefined;\n }\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Point3D } from '../entity/Point3D';\nimport { Vector } from '../entity/Vector';\nimport { Obj } from '../entity/object/obj/Obj';\nimport { Point2D } from '../entity/Point2D';\n\nexport namespace MathUtil {\n export type BezierConfig = { p1x: number | 'random', p1y: number | 'random', p2x: number | 'random', p2y: number | 'random' } | [number | 'random', number | 'random', number | 'random', number | 'random'];\n export const getMinByObjectArray = (objectArray: Array<any>, varName: string) => {\n let min;\n if (varName && objectArray && objectArray.length > 0) {\n min = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n min = Math.min(min, objectArray[i][varName]);\n }\n }\n return min;\n };\n\n export const hypot = (...data: number[]) => {\n // 2\uCC28\uC6D0 \uC608\uC2DC\n // Math.hypot(3, 4); // \uACB0\uACFC: 5 (3\u00B2 + 4\u00B2 = 9 + 16 = 25, \u221A25 = 5)\n\n// 3\uCC28\uC6D0 \uC608\uC2DC\n// Math.hypot(3, 4, 5); // \uACB0\uACFC: 7.0710678118654755\n\n return Math.hypot(...data);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC \uD568\uC218\n export const pythagorean = (a: number, b: number): number => {\n /*\n \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC\n a^2 + b^2 = c^2\n c = \u221A(a^2 + b^2)\n */\n // return Math.sqrt(start * start + end * end);\n return Math.sqrt(a * a + b * b);\n };\n\n export const getMaxByObjectArray = (objectArray: Array<any>, varName: string) => {\n let max;\n if (varName && objectArray && objectArray.length > 0) {\n max = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n max = Math.max(max, objectArray[i][varName]);\n }\n }\n return max;\n };\n\n export const sum = (array: number[]) => {\n return array.reduce((acc, curr) => acc + curr, 0);\n }\n\n export const avg = (array: number[]) => {\n return array.length > 0 ? MathUtil.sum(array) / array.length : 0;\n }\n\n export const minMax = (data: number, minMax: { min: number, max: number }) => {\n return Math.min(Math.max(data, minMax.min), minMax.max);\n }\n export const max = (array: number[]) => {\n return array.length > 0 ? Math.max(...array) : undefined;\n };\n\n export const min = (array: number[]) => {\n return array.length > 0 ? Math.min(...array) : undefined;\n };\n\n export const getSumByObjectArray = (objectArray: Array<any>, varName: string) => {\n let sum = 0;\n if (varName && objectArray && objectArray.length > 0) {\n for (let i = 0; i < objectArray.length; i++) {\n sum += objectArray[i][varName];\n }\n }\n return sum;\n };\n\n\n export type AngleUnitType = 'degreeAngle' | 'ratio' | 'percent';\n /**\n * Converts value to radians based on given type.\n * @param data - The value to convert to radians\n * @param option - Conversion type configuration\n * @param option.type - Type of conversion:\n * 'degreeAngle' - Converts from degrees to radians\n * 'ratio' - Multiplies value by 2\u03C0 (input range 0-1)\n * 'percent' - Converts percentage to 2\u03C0 ratio (input range 0-100)\n * @returns The converted value in radians\n * @example\n * // Convert 180 degrees to radians (3.14...)\n * radians(180, {type: 'degreeAngle'})\n *\n * // Convert 0.5 ratio to radians (3.14...)\n * radians(0.5, {type: 'ratio'})\n *\n * // Convert 50% to radians (3.14...)\n * radians(50, {type: 'percent'})\n */\n export const radians = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n /*\n radian\n * 1.57..: 90\uB3C4, PI/2\n * 3.14..: 180\uB3C4, PI\n * 4.71..: 270\uB3C4, PI + PI/2\n * 6.28..: 360\uB3C4, PI * 2\n */\n if (type === 'ratio') {\n return (data * 2) * Math.PI;\n } else if (type === 'percent') {\n return ((data / 100) * 2) * Math.PI;\n } else {\n // return data * Math.PI / 180;\n return data / 180 * Math.PI;\n }\n };\n\n export const degrees = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n if (type === 'ratio') {\n return data * 360;\n } else if (type === 'percent') {\n return (data / 100) * 360;\n } else {\n return data * 180 / Math.PI;\n }\n };\n // static createCanvas(w, h) {\n // let canvas = document.createElement('canvas');\n // canvas.width = w;\n // canvas.height = h;\n // return canvas;\n // }\n //\n // static copyCanvas(canvas) {\n // let newCanvas = document.createElement('canvas');\n // newCanvas.width = canvas.width;\n // newCanvas.height = canvas.height;\n // context = newCanvas.getContext('2d');\n // context.drawImage(canvas, 0, 0);\n // return newCanvas;\n // }\n\n /**\n 1. \uBE44\uC728\uC758 \uAC1C\uB150\n \uBE44\uC728(Ratio): \uB450 \uC591\uC758 \uC0C1\uB300\uC801\uC778 \uD06C\uAE30\uB97C \uBE44\uAD50\uD55C \uAC12\uC73C\uB85C, \uC77C\uBC18\uC801\uC73C\uB85C \uBD84\uC218\uB098 \uC18C\uC218\uB85C \uD45C\uD604\uB429\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, \"2:3\" \uBE44\uC728\uC740 \uB450 \uC218\uC758 \uBE44\uAC00 2 \uB300 3\uC774\uB77C\uB294 \uB73B\uC774\uBA70, \uC774\uB294 2/3\uB85C\uB3C4 \uB098\uD0C0\uB0BC \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n \uB2E8\uC704 \uBE44\uC728(Normalized Ratio): \uD55C \uAC12\uC744 \uAE30\uC900\uC73C\uB85C \uB2E4\uB978 \uAC12\uC744 \uC870\uC815\uD55C \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C\uB294 \uB108\uBE44(w)\uB97C 1\uB85C \uC815\uADDC\uD654(normalize)\uD558\uC5EC \uB192\uC774(h)\uC758 \uC0C1\uB300\uC801 \uAC12\uC744 \uAD6C\uD558\uB294 \uAC83\uC774 \uBAA9\uD45C\uC785\uB2C8\uB2E4.\n \uC774\uBBF8\uC9C0 \uBE44\uC728: \uC774\uBBF8\uC9C0\uC758 \uB108\uBE44\uC640 \uB192\uC774 \uBE44\uC728\uC740 \uBCF4\uD1B5 \"w:h\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uB418\uBA70, \uC774 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uBA74\uC11C \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n 2. \uACC4\uC0B0 \uBC29\uBC95\n \uC8FC\uC5B4\uC9C4 \uB370\uC774\uD130:\n\n \uB108\uBE44(w) = 1652 \uD53D\uC140\n \uB192\uC774(h) = 421 \uD53D\uC140\n \uBAA9\uD45C: \uB108\uBE44\uB97C 1\uB85C \uBCF4\uC558\uC744 \uB54C \uB192\uC774\uC758 \uAC12 \uAD6C\uD558\uAE30\n \uB2E8\uACC4\uBCC4 \uACC4\uC0B0\n \uC6D0\uB798 \uBE44\uC728 \uAD6C\uD558\uAE30:\n \uC774\uBBF8\uC9C0\uC758 \uBE44\uC728\uC740 w:h = 1652:421\uC785\uB2C8\uB2E4.\n \uC774\uB97C \uBD84\uC218\uB85C \uD45C\uD604\uD558\uBA74 1652 / 421\uC785\uB2C8\uB2E4.\n \uB108\uBE44\uB97C 1\uB85C \uC815\uADDC\uD654:\n \uB108\uBE44\uB97C 1\uB85C \uB9CC\uB4E4\uAE30 \uC704\uD574, \uC6D0\uB798 \uB108\uBE44(1652)\uB97C 1\uB85C \uB098\uB204\uACE0, \uC774\uB97C \uB192\uC774\uC5D0\uB3C4 \uB3D9\uC77C\uD558\uAC8C \uC801\uC6A9\uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = \uC6D0\uB798 \uB192\uC774(h) \u00F7 \uC6D0\uB798 \uB108\uBE44(w)\n \uC218\uC2DD: h' = h / w (\uC5EC\uAE30\uC11C h'\uB294 \uC815\uADDC\uD654\uB41C \uB192\uC774)\n \uACC4\uC0B0 \uC801\uC6A9:\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = 421 / 1652\n \uACC4\uC0B0: 421 \u00F7 1652 \u2248 0.25485 (\uC18C\uC218\uC810 \uC57D 5\uC790\uB9AC\uAE4C\uC9C0)\n \uACB0\uACFC \uD574\uC11D:\n \uB108\uBE44\uAC00 1\uC77C \uB54C \uB192\uC774\uB294 \uC57D 0.25485\uC785\uB2C8\uB2E4. \uC774\uB294 \uB192\uC774\uAC00 \uB108\uBE44\uC758 \uC57D 25.485%\uC5D0 \uD574\uB2F9\uD568\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n \uAC80\uC99D\n \uC6D0\uB798 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC5ED\uC73C\uB85C \uC801\uC6A9\uD574 \uC6D0\uB798 \uAC12\uC744 \uBCF5\uC6D0\uD560 \uC218 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uBE44\uC728(0.25485)\uC744 1652\uC5D0 \uACF1\uD558\uBA74: 1652 * 0.25485 \u2248 421, \uC774\uB294 \uC6D0\uB798 \uB192\uC774\uC640 \uC77C\uCE58\uD558\uBBC0\uB85C \uACC4\uC0B0\uC774 \uC62C\uBC14\uB984.\n 3. \uC218\uC2DD \uC815\uB9AC\n \uC77C\uBC18\uC801\uC778 \uC815\uADDC\uD654 \uC218\uC2DD:\n \uC815\uADDC\uD654\uB41C \uB192\uC774(h') = h / w\n \uC815\uADDC\uD654\uB41C \uB108\uBE44(w') = w / w = 1 (\uAE30\uC900\uAC12)\n \uC774 \uBB38\uC81C \uC801\uC6A9:\n h' = 421 / 1652 \u2248 0.25485\n 4. \uB300\uC548: \uBE44\uC728\uB85C \uD45C\uD604\n \uBE44\uC728\uC744 \"1:\uBE44\uC728\uAC12\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uD558\uB824\uBA74, \uB192\uC774\uB97C \uB108\uBE44\uB85C \uB098\uB208 \uAC12\uC744 \uADF8\uB300\uB85C \uC0AC\uC6A9.\n \uACB0\uACFC: 1 : 0.25485 \uB610\uB294 \uC57D 1 : 0.255 (\uC18C\uC218\uC810 \uBC18\uC62C\uB9BC).\n 5. \uCD94\uAC00 \uAC1C\uB150\n \uBE44\uB840\uC2DD: \uC774\uBBF8\uC9C0 \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, w1 / h1 = w2 / h2\uB97C \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C w2 = 1\uB85C \uC124\uC815\uD55C \uACBD\uC6B0, h2 = h1 / w1\uC774 \uB429\uB2C8\uB2E4.\n \uC2E4\uC81C \uC801\uC6A9: \uC6F9 \uB514\uC790\uC778\uC774\uB098 \uADF8\uB798\uD53D\uC5D0\uC11C \uC774\uBBF8\uC9C0\uB97C \uB9AC\uC0AC\uC774\uC9D5\uD560 \uB54C, \uC6D0\uBCF8 \uBE44\uC728(1652:421)\uC744 \uC720\uC9C0\uD558\uB824\uBA74 \uC774 \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC0AC\uC6A9\uD574 \uB192\uC774\uB97C \uACC4\uC0B0.\n <script>\n const w = 1652;\n const h = 421;\n const normalizedHeight = h / w;\n console.log(`\uC815\uADDC\uD654\uB41C \uB192\uC774: ${normalizedHeight.toFixed(5)}`); // 0.25485\n console.log(`\uC6D0\uB798 \uBE44\uC728 \uD655\uC778: ${w * normalizedHeight} \u2248 ${h}`); // \uC57D 421\n </script>\n */\n export const ratio = (numerator: number, denominator: number, multiplier: number = 1): number => {\n // numerator(\uBD84\uC790) : denominator(\uBD84\uBAA8) = multiplier : x\n // x = multiplier * denominator / numerator\n return multiplier * (denominator / numerator)\n // a:b = c:x \uBE44\uB840\uC2DD\uC744 \uC774\uC6A9\uD574 x \uAC12\uC744 \uAD6C\uD568\n // ax = bc\n // x = bc/a\n }\n //end - start \uB05D\uACFC \uC2DC\uC791\uC758 \uC0AC\uC774\uAE38\uC774\uB97C \uCDE8\uB4DD\uD55C\uB2E4.\n export const getBetweenLength = (start: number, end: number) => {\n return end - start;\n };\n\n //\uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C data\uB294 \uBA87%\uC778\uAC00.\n export const getPercentByTotal = (tot: number, data: number) => {\n /*\n \uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD\n \uC77C\uBD80\uAC12 \u00F7 \uC804\uCCB4\uAC12 X 100\n \uC608\uC81C) 300\uC5D0\uC11C 105\uB294 \uBA87\uD37C\uC13C\uD2B8?\n \uB2F5: 35%\n */\n return (data / tot) * 100;\n };\n export const getRatioByTotal = (tot: number, data: number) => {\n return (data / tot)\n };\n\n //\uC804\uCCB4\uAC12\uC758 \uBA87 \uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uB294 \uBA87\uC778\uAC00?\n export const getValueByTotalInPercent = (tot: number, wantPercent: number) => {\n /*\n \uC804\uCCB4\uAC12 X \uD37C\uC13C\uD2B8 \u00F7 100\n \uC608\uC81C) 300\uC758 35\uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8?\n \uB2F5) 105\n */\n return (tot * wantPercent) / 100;\n };\n export const getValueByTotalInRatio = (tot: number, ratio: number) => {\n return (tot * ratio);\n };\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC00 \uC2DC\uD0A8\uB2E4\n export const getValuePercentUp = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 + \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uC99D\uAC00\uD558\uBA74?\n \uB2F5) 2569.68\n */\n return tot * (1 + wantPercent / 100);\n };\n\n export const getValueRatioUp = (tot: number, ratio: number) => {\n return tot * (1 + ratio);\n }\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC10 \uC2DC\uD0A8\uB2E4\n export const getValuePercentDown = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 - \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uBA74?\n \uB2F5) 526.32\n */\n return tot * (1 - wantPercent / 100);\n };\n\n export const getValueRatioDown = (tot: number, ratio: number) => {\n return tot * (1 - ratio);\n }\n\n\n //\uBC14\uB840\uC2DD\n // A:B = C:X => 30:50 = 33 : x\n // 30X = 50*33\n // X = BC / 30\n\n\n // Bezier\n // https://cubic-bezier.com/#.17,.67,.83,.67\n // https://matthewlein.com/tools/ceaser\n // https://easings.net/ko#\n // (0.250, 0.250, 0.750, 0.750); /* linear */\n export const beziers = (points: (Point3D | { x: number; y: number, z: number })[], frame: number) => {\n const datas = new Array(frame).fill(undefined);\n for (let i = 0; i < datas.length; i++) {\n datas[i] = MathUtil.bezier(points, frame, i);\n }\n return datas;\n };\n\n // \uCC98\uC74C\uC810\uC740 \uD3EC\uD568\uB418\uC9C0 \uC54A\uB294\uB2E4, \uB05D\uC810\uC740 \uD3EC\uD568\uB41C\uB2E4.\n export const bezier = (points: (Point3D | { x: number; y: number, z: number })[], frame: number, idx: number): Vector => {\n if (points && points.length > 0) {\n const pv = points.map(it => new Vector(it.x, it.y, it.z));\n const steps: Vector[] = [];\n pv.reduce((a, b) => {\n const step = a.toSub(b).div(frame).mult(idx + 1);\n steps.push(a.toSub(step));\n return b;\n });\n\n if (steps.length <= 1) {\n return steps[0];\n }\n return MathUtil.bezier(steps.map(it => new Point3D(it)), frame, idx);\n } else {\n return new Vector();\n }\n };\n\n // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC740 \uD3EC\uD568\uD558\uC9C0 \uC54A\uB294\uB2E4.\n export function cubicBezier(position: { start: number; end: number; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): number[];\n export function cubicBezier(position: { start: Obj; end: Obj; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Obj[];\n export function cubicBezier(position: { start: Point3D; end: Point3D; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Point3D[];\n export function cubicBezier(\n position: {\n start: number; // \uC2DC\uC791 \uAC12\n end: number; // \uB05D \uAC12\n } | {\n start: Point3D; // \uC2DC\uC791 \uAC12\n end: Point3D; // \uB05D \uAC12\n } | {\n start: Obj; // \uC2DC\uC791 \uAC12\n end: Obj; // \uB05D \uAC12\n },\n frameConfig: {\n // includeStartEnd?: boolean,\n frame: number; // \uD504\uB808\uC784 \uC218 (\uBC30\uC5F4 \uD06C\uAE30)\n },\n bezierConfig: BezierConfig\n ): number[] | Point3D[] | Obj[] {\n\n\n if (position.start instanceof Obj && position.end instanceof Obj) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n const v = MathUtil.cubicBezier({start: position.start.volume, end: position.end.volume}, frameConfig, bezierConfig);\n const m = MathUtil.cubicBezier({start: position.start.mass, end: position.end.mass}, frameConfig, bezierConfig);\n const e = MathUtil.cubicBezier({start: position.start.e, end: position.end.e}, frameConfig, bezierConfig);\n const r = MathUtil.cubicBezier({start: position.start.rotate, end: position.end.rotate}, frameConfig, bezierConfig);\n const w = MathUtil.cubicBezier({start: position.start.width, end: position.end.width}, frameConfig, bezierConfig);\n const h = MathUtil.cubicBezier({start: position.start.height, end: position.end.height}, frameConfig, bezierConfig);\n const t0 = MathUtil.cubicBezier({start: position.start.transform[0], end: position.end.transform[0]}, frameConfig, bezierConfig);\n const t1 = MathUtil.cubicBezier({start: position.start.transform[1], end: position.end.transform[1]}, frameConfig, bezierConfig);\n const t2 = MathUtil.cubicBezier({start: position.start.transform[2], end: position.end.transform[2]}, frameConfig, bezierConfig);\n const t3 = MathUtil.cubicBezier({start: position.start.transform[3], end: position.end.transform[3]}, frameConfig, bezierConfig);\n const t4 = MathUtil.cubicBezier({start: position.start.transform[4], end: position.end.transform[4]}, frameConfig, bezierConfig);\n const t5 = MathUtil.cubicBezier({start: position.start.transform[5], end: position.end.transform[5]}, frameConfig, bezierConfig);\n const colorR = MathUtil.cubicBezier({start: position.start.color.r ?? 0, end: position.end.color.r ?? 0}, frameConfig, bezierConfig);\n const colorG = MathUtil.cubicBezier({start: position.start.color.g ?? 0, end: position.end.color.g ?? 0}, frameConfig, bezierConfig);\n const colorB = MathUtil.cubicBezier({start: position.start.color.b ?? 0, end: position.end.color.b ?? 0}, frameConfig, bezierConfig);\n const colorA = MathUtil.cubicBezier({start: position.start.color.a ?? 255, end: position.end.color.a ?? 255}, frameConfig, bezierConfig);\n const objs = x.map((x, idx) => {\n const obj = new Obj({x, y: y[idx], z: z[idx]});\n obj.volume = v[idx];\n obj.mass = m[idx];\n obj.e = e[idx];\n obj.rotate = r[idx];\n obj.width = w[idx];\n obj.height = h[idx];\n obj.transform = [t0[idx], t1[idx], t2[idx], t3[idx], t4[idx], t5[idx]];\n obj.color = {r: colorR[idx], g: colorG[idx], b: colorB[idx], a: colorA[idx]};\n return obj;\n });\n return objs;\n } else if (position.start instanceof Point3D && position.end instanceof Point3D) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n return x.map((x, idx) => new Point3D(x, y[idx], z[idx]));\n }\n\n\n const {start, end} = position as { start: number, end: number };\n\n // ----\n\n const {frame} = frameConfig;\n let {p1x, p1y, p2x, p2y} = Array.isArray(bezierConfig) ? {p1x: bezierConfig[0], p1y: bezierConfig[1], p2x: bezierConfig[2], p2y: bezierConfig[3]} : bezierConfig;\n p1x = p1x === 'random' ? Math.random() : p1x;\n p1y = p1y === 'random' ? Math.random() : p1y;\n p2x = p2x === 'random' ? Math.random() : p2x;\n p2y = p2y === 'random' ? Math.random() : p2y;\n\n const result: number[] = [];\n const totalChange = end - start;\n\n // console.log('----222->',totalChange);\n\n // 3\uCC28 \uBCA0\uC9C0\uC5B4 \uACE1\uC120 \uACF5\uC2DD\n const bezier = (t: number): number => {\n const t2 = Number(t * t);\n const t3 = Number(t2 * t);\n const mt = Number(1 - t);\n const mt2 = Number(mt * mt);\n const mt3 = Number(mt2 * mt);\n\n return mt3 * 0 + 3 * mt2 * t * Number(p1y) + 3 * mt * t2 * Number(p2y) + t3 * 1;\n };\n\n // frame \uC218\uB9CC\uD07C \uACC4\uC0B0, \uC2DC\uC791\uC810, \uB05D\uC810 \uC81C\uC678\n const targetFrame = frame + 1;\n for (let i = 1; i < targetFrame; i++) {\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n const t = i / targetFrame;\n const progress = bezier(t);\n // console.log('pppppppp', progress);\n const value = start + totalChange * progress;\n result.push(value);\n }\n\n return result;\n\n }\n\n export const diff = (a: number, b: number) => {\n return Math.abs(a - b);\n };\n\n /*\n > \uD22C\uC601\uBD80\uBD84? \uC800\uBD80\uBD84 \uD575\uC2EC\uBD80\uBD84 \uB354 \uC790\uC138\uD558\uAC8C \uC54C\uB824\uC904\uB798\n\n\u2726 \uB124, \uADF8\uB7FC\uC694. \uC774 \uBD80\uBD84\uC774 \uAE30\uD558\uD559\uC801\uC73C\uB85C \uC5B4\uB5A4 \uC758\uBBF8\uB97C \uAC00\uC9C0\uB294\uC9C0 \uADF8\uB9BC\uACFC \uD568\uAED8 \uBA38\uB9BF\uC18D\uC73C\uB85C \uC0C1\uC0C1\uD558\uBA70 \uC774\uD574\uD558\uBA74\n \uC27D\uC2B5\uB2C8\uB2E4.\n\n \uD575\uC2EC \uC544\uC774\uB514\uC5B4: \uADF8\uB9BC\uC790 \uB0B4\uB9AC\uAE30 (Projection)\n\n \uAC00\uC7A5 \uAC04\uB2E8\uD55C \uBE44\uC720\uB294 \uADF8\uB9BC\uC790\uC785\uB2C8\uB2E4.\n\n\n * `\uC120\uBD84 vw`: \uB545\uC5D0 \uB193\uC5EC\uC788\uB294 \uB9C9\uB300\uAE30\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694. (v\uB294 \uC2DC\uC791\uC810, w\uB294 \uB05D\uC810)\n * `\uC810 p`: \uACF5\uC911\uC5D0 \uB5A0 \uC788\uB294 \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694.\n * \uBAA9\uD45C: \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C(p)\uC5D0\uC11C \uB9C9\uB300\uAE30(vw)\uAE4C\uC9C0 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC744 \uCC3E\uB294 \uAC83.\n\n\n \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC740 p\uC5D0\uC11C \uB9C9\uB300\uAE30\uB85C \uC218\uC9C1\uC73C\uB85C \uC120\uC744 \uB0B4\uB838\uC744 \uB54C \uB9CC\uB098\uB294 \uC810\uC785\uB2C8\uB2E4. \uB9C8\uCE58 p \uBC14\uB85C \uC704\uC5D0 \uC190\uC804\uB4F1\uC744\n \uCF1C\uC11C \uB9C9\uB300\uAE30\uC5D0 \uADF8\uB9BC\uC790\uB97C \uB9CC\uB4DC\uB294 \uAC83\uACFC \uAC19\uC2B5\uB2C8\uB2E4. \uC774 \uADF8\uB9BC\uC790\uAC00 \uB5A8\uC5B4\uC9C0\uB294 \uC9C0\uC810\uC774 \uBC14\uB85C \uD22C\uC601(projection)\uC785\uB2C8\uB2E4.\n\n ---\n\n \uCF54\uB4DC \uC0C1\uC138 \uBD84\uC11D\n\n\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n\n \uC774 \uD55C \uC904\uC758 \uCF54\uB4DC\uB294 \uBC14\uB85C \uADF8 '\uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30\uC758 \uC5B4\uB514\uC5D0 \uB5A8\uC5B4\uC9C0\uB294\uAC00'\uB97C \uACC4\uC0B0\uD558\uB294 \uACFC\uC815\uC785\uB2C8\uB2E4. \uC5EC\uAE30\uC11C t\uB294\n \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n\n 1. \uBCA1\uD130(Vector)\uB85C \uC0DD\uAC01\uD558\uAE30\n\n\n \uCF54\uB4DC\uB97C \uC774\uD574\uD558\uAE30 \uC704\uD574 \uB450 \uAC1C\uC758 \uBCA1\uD130\uB97C \uC0DD\uAC01\uD574\uC57C \uD569\uB2C8\uB2E4.\n\n\n * \uBCA1\uD130 1 (`vw`): \uB9C9\uB300\uAE30 \uC790\uCCB4\uC758 \uBC29\uD5A5\uACFC \uAE38\uC774\uB97C \uB098\uD0C0\uB0B4\uB294 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * w.x - v.x (x\uBC29\uD5A5)\n * w.y - v.y (y\uBC29\uD5A5)\n * \uBCA1\uD130 2 (`vp`): \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810\uC5D0\uC11C \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uAE4C\uC9C0\uC758 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * p.x - v.x (x\uBC29\uD5A5)\n * p.y - v.y (y\uBC29\uD5A5)\n\n\n 2. \uBD84\uC790: \uBCA1\uD130 \uB0B4\uC801 (Dot Product)\n\n ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y))\n\n\n \uC774 \uBD80\uBD84\uC740 \uB450 \uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801(dot product)\uC744 \uACC4\uC0B0\uD558\uB294 \uACF5\uC2DD\uC785\uB2C8\uB2E4. \uBCA1\uD130 \uB0B4\uC801\uC740 \uB450 \uBCA1\uD130\uAC00 \uC5BC\uB9C8\uB098\n \"\uAC19\uC740 \uBC29\uD5A5\uC744 \uBC14\uB77C\uBCF4\uACE0 \uC788\uB294\uC9C0\"\uB97C \uB098\uD0C0\uB0B4\uB294 \uC218\uCE58\uC785\uB2C8\uB2E4.\n\n\n * \uB450 \uBCA1\uD130\uAC00 \uC11C\uB85C \uC218\uC9C1\uC774\uBA74 \uB0B4\uC801\uC740 0\uC785\uB2C8\uB2E4.\n * \uB450 \uBCA1\uD130\uAC00 \uAC19\uC740 \uBC29\uD5A5\uC744 \uBCFC\uC218\uB85D \uB0B4\uC801 \uAC12\uC740 \uCEE4\uC9D1\uB2C8\uB2E4.\n\n \uAE30\uD558\uD559\uC801\uC73C\uB85C, `vp` \uBCA1\uD130\uB97C `vw` \uBCA1\uD130 \uC704\uB85C \uD22C\uC601(\uADF8\uB9BC\uC790)\uC2DC\uCF30\uC744 \uB54C\uC758 \uAE38\uC774\uC640 \uAD00\uB828\uC774 \uC788\uC2B5\uB2C8\uB2E4.\n\n 3. \uBD84\uBAA8: l2\n\n\n l2\uB294 \uC55E\uC5D0\uC11C \uACC4\uC0B0\uD588\uB4EF\uC774 \uB9C9\uB300\uAE30 \uBCA1\uD130 vw\uC758 \uAE38\uC774\uC758 \uC81C\uACF1\uC785\uB2C8\uB2E4.\n\n 4. t\uC758 \uC758\uBBF8: \uBE44\uC728\n\n \uACB0\uAD6D t\uB294 \uB2E4\uC74C\uACFC \uAC19\uC774 \uACC4\uC0B0\uB429\uB2C8\uB2E4.\n\n t = (\uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801) / (\uBCA1\uD130 vw\uC758 \uAE38\uC774 \uC81C\uACF1)\n\n\n \uC774 t \uAC12\uC774 \uBC14\uB85C \uD22C\uC601\uB41C \uADF8\uB9BC\uC790 \uC9C0\uC810\uC774 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 `v`\uB85C\uBD80\uD130 \uC5BC\uB9C8\uB098 \uB5A8\uC5B4\uC838 \uC788\uB294\uC9C0\uB97C \uB098\uD0C0\uB0B4\uB294 \uBE44\uC728\uC774\n \uB429\uB2C8\uB2E4.\n\n\n * `t = 0`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 v\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 1`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uB05D\uC810 w\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 0.5`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uD55C\uAC00\uC6B4\uB370\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t < 0` (\uC608: `t = -0.2`): p\uAC00 v\uC758 \"\uB4A4\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 \uC774\uC804\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n * `t > 1` (\uC608: `t = 1.5`): p\uAC00 w\uC758 \"\uC55E\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uB05D\uC810\uC744 \uC9C0\uB098\uC11C \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n\n \uACB0\uB860\n\n\n \uC774 t \uAC12\uC744 \uACC4\uC0B0\uD558\uB294 \uAC83\uC774 \uD575\uC2EC\uC778 \uC774\uC720\uB294, \uB9C8\uC6B0\uC2A4 \uD3EC\uC778\uD130(p)\uC640 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uB9C9\uB300\uAE30 \uB0B4\uBD80\uC5D0 \uC788\uB294\uC9C0,\n \uC544\uB2C8\uBA74 \uC591\uCABD \uB05D\uC810 \uC911 \uD558\uB098\uC778\uC9C0 \uD310\uB2E8\uD560 \uC218 \uC788\uB294 \uAE30\uC900\uC744 \uC81C\uACF5\uD558\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.\n\n\n * t\uAC00 0\uACFC 1 \uC0AC\uC774\uC5D0 \uC788\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30 \uC704\uC758 '\uADF8\uB9BC\uC790' \uC9C0\uC810\uC785\uB2C8\uB2E4.\n * t\uAC00 0\uBCF4\uB2E4 \uC791\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uC2DC\uC791\uC810 v\uC785\uB2C8\uB2E4.\n * t\uAC00 1\uBCF4\uB2E4 \uD06C\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uB05D\uC810 w\uC785\uB2C8\uB2E4.\n\n\n \uC774\uAC83\uC774 \uBC14\uB85C \uB2E4\uC74C \uCF54\uB4DC \uB77C\uC778 t = Math.max(0, Math.min(1, t));\uAC00 t\uB97C 0\uACFC 1 \uC0AC\uC774\uB85C \uC81C\uD55C\uD558\uB294 \uC774\uC720\uC785\uB2C8\uB2E4.\n \uC774\uB85C\uC368 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uD56D\uC0C1 \uC120\uBD84 \uC704(\uC591 \uB05D\uC810 \uD3EC\uD568)\uC5D0 \uC788\uB3C4\uB85D \uBCF4\uC7A5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\nexport const distSqToLineSegment = (p: Point2D, v: Point2D, w: Point2D): number => {\n const l2 = (v.x - w.x) ** 2 + (v.y - w.y) ** 2;\n if (l2 === 0) return (p.x - v.x) ** 2 + (p.y - v.y) ** 2;\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n t = Math.max(0, Math.min(1, t));\n const projection = { x: v.x + t * (w.x - v.x), y: v.y + t * (w.y - v.y) };\n return (p.x - projection.x) ** 2 + (p.y - projection.y) ** 2;\n };\n // static bezirePointToPointVector(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}) {\n // if (!point.point2) {\n // point.point2 = point.point1;\n // }\n // if (!point.point3) {\n // point.point3 = point.point2;\n // }\n // if (!point.point4) {\n // point.point4 = point.point3;\n // }\n // return {\n // point1: new PointVector(point.point1.x, point.point1.y, point.point1.z),\n // point2: new PointVector(point.point2.x, point.point2.y, point.point2.z),\n // point3: new PointVector(point.point3.x, point.point3.y, point.point3.z),\n // point4: new PointVector(point.point4.x, point.point4.y, point.point4.z),\n // }\n // }\n // static bezier(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number, idx: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n //\n // const point12Step = PointVector.sub(pointVector.point1, pointVector.point2).div(frame).mult(idx + 1);\n // const point23Step = PointVector.sub(pointVector.point2, pointVector.point3).div(frame).mult(idx + 1);\n // const point34Step = PointVector.sub(pointVector.point3, pointVector.point4).div(frame).mult(idx + 1);\n //\n // pointVector.point1.sub(point12Step);\n // pointVector.point2.sub(point23Step);\n // pointVector.point3.sub(point34Step);\n //\n // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n //\n // const cnt = idx + 1;\n // const point12MovePoint = point12MoveStep.mult(cnt)\n // const point23MovePoint = point23MoveStep.mult(cnt);\n // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n //\n // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // return final;\n // }\n //\n // static beziers(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n // const frames = new Array(frame).fill(undefined) as PointVector[];\n // for (let i = 0; i < frame; i++) {\n // frames[i] = MathUtil.bezier(point, frame, i);\n // // pointVector.point1.sub(point12Step);\n // // pointVector.point2.sub(point23Step);\n // // pointVector.point3.sub(point34Step);\n // //\n // // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n // //\n // // const cnt = i + 1;\n // // const point12MovePoint = point12MoveStep.mult(cnt)\n // // const point23MovePoint = point23MoveStep.mult(cnt);\n // // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n // //\n // // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // }\n // return frames;\n // }\n\n\n// interface Point {\n// x: number;\n// y: number;\n// }\n//\n// interface BezierPathOptions {\n// /**\n// * \uC81C\uC5B4\uC810\uC744 \uC5BC\uB9C8\uB098 \uBA40\uB9AC \uB458\uC9C0 \uACB0\uC815\uD558\uB294 \uAC12\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 0.25)\n// * 0 \uC774\uBA74 \uAC70\uC758 \uC9C1\uC120\uC5D0 \uAC00\uAE5D\uACE0, \uAC12\uC774 \uCEE4\uC9C8\uC218\uB85D \uACE1\uC120\uC758 \uD718\uC5B4\uC9D0\uC774 \uCEE4\uC9D1\uB2C8\uB2E4.\n// * \uC74C\uC218 \uAC12\uC744 \uC8FC\uBA74 \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD729\uB2C8\uB2E4.\n// */\n// controlPointOffsetFactor?: number;\n//\n// /**\n// * \uC810\uB4E4\uC758 \uBD84\uD3EC\uB97C \uC870\uC808\uD558\uB294 \uAC00\uC18D\uB3C4 \uACC4\uC218\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 1)\n// * 1: \uB4F1\uAC04\uACA9 (\uC120\uD615)\n// * > 1: \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uB05D\uC73C\uB85C \uAC08\uC218\uB85D \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC00\uC18D, ease-in)\n// * < 1: \uB05D \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uC2DC\uC791 \uBD80\uBD84\uC758 \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC10\uC18D, ease-out)\n// * \uC608: 2\uB294 \uC81C\uACF1 \uAC00\uC18D, 0.5\uB294 \uC81C\uACF1\uADFC \uAC10\uC18D.\n// */\n// accelerationFactor?: number;\n// }\n//\n// /**\n// * 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uD2B9\uC815 t \uAC12\uC5D0\uC11C\uC758 \uC810 \uC88C\uD45C\uB97C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * B(t) = (1-t)^2 * P0 + 2 * (1-t) * t * P1 + t^2 * P2\n// * @param t \uB9E4\uAC1C\uBCC0\uC218 (0\uC5D0\uC11C 1 \uC0AC\uC774)\n// * @param p0 \uC2DC\uC791\uC810\n// * @param p1 \uC81C\uC5B4\uC810\n// * @param p2 \uB05D\uC810\n// * @returns \uACC4\uC0B0\uB41C \uC810\uC758 \uC88C\uD45C\n// */\n// function quadraticBezier(t: number, p0: Point, p1: Point, p2: Point): Point {\n// const mt = 1 - t; // (1-t)\n// const mt2 = mt * mt; // (1-t)^2\n// const t2 = t * t; // t^2\n//\n// const x = mt2 * p0.x + 2 * mt * t * p1.x + t2 * p2.x;\n// const y = mt2 * p0.y + 2 * mt * t * p1.y + t2 * p2.y;\n//\n// return { x, y };\n// }\n//\n// /**\n// * \uCD9C\uBC1C\uC810\uACFC \uB3C4\uCC29\uC810 \uC0AC\uC774\uB97C \uC787\uB294 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120\uC744 \uB530\uB77C \uC774\uB3D9\uD560 \uC88C\uD45C\uB4E4\uC744 \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * @param startPoint \uCD9C\uBC1C\uC810 \uC88C\uD45C { x, y }\n// * @param endPoint \uB3C4\uCC29\uC810 \uC88C\uD45C { x, y }\n// * @param options \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uBC0F \uC810 \uBD84\uD3EC \uC635\uC158\n// * @param numberOfSteps \uC0DD\uC131\uD560 \uC911\uAC04 \uC774\uB3D9 \uC88C\uD45C\uC758 \uAC1C\uC218 (\uC774\uB3D9 \uACBD\uB85C\uC0C1\uC758 \uC810 \uAC1C\uC218)\n// * @returns \uACC4\uC0B0\uB41C \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 (startPoint\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uACE0, endPoint\uB294 \uD3EC\uD568)\n// */\n// function getPointsOnBezierPath(\n// startPoint: Point,\n// endPoint: Point,\n// options: BezierPathOptions = {}, // \uAE30\uBCF8\uAC12 \uBE48 \uAC1D\uCCB4\n// numberOfSteps: number\n// ): Point[] {\n// // --- \uC635\uC158 \uAE30\uBCF8\uAC12 \uC124\uC815 ---\n// const controlPointOffsetFactor = options.controlPointOffsetFactor ?? 0.25; // \uAE30\uBCF8\uAC12 0.25\n// const accelerationFactor = options.accelerationFactor ?? 1; // \uAE30\uBCF8\uAC12 1 (\uC120\uD615)\n//\n// // --- \uC785\uB825\uAC12 \uC720\uD6A8\uC131 \uAC80\uC0AC ---\n// if (numberOfSteps <= 0) {\n// console.warn(\"numberOfSteps\uB294 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4.\");\n// return []; // \uBE48 \uBC30\uC5F4 \uBC18\uD658 \uB610\uB294 \uC5D0\uB7EC \uCC98\uB9AC\n// }\n//\n// const points: Point[] = [];\n// const p0 = startPoint;\n// const p2 = endPoint;\n//\n// // --- \uC81C\uC5B4\uC810(P1) \uC790\uB3D9 \uACC4\uC0B0 ---\n// const midX = (p0.x + p2.x) / 2;\n// const midY = (p0.y + p2.y) / 2;\n//\n// const deltaX = p2.x - p0.x;\n// const deltaY = p2.y - p0.y;\n//\n// const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n//\n// let p1: Point;\n//\n// if (distance === 0) {\n// // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC774 \uAC19\uC73C\uBA74 \uC81C\uC5B4\uC810\uB3C4 \uAC19\uC740 \uC704\uCE58\uB85C \uC124\uC815 (\uC9C1\uC120 \uC774\uB3D9 \uC5C6\uC74C)\n// p1 = { ...p0 };\n// // \uC774 \uACBD\uC6B0, \uBAA8\uB4E0 \uACC4\uC0B0\uB41C \uC810\uC740 \uC2DC\uC791/\uB05D \uC810\uACFC \uB3D9\uC77C\uD558\uAC8C \uB429\uB2C8\uB2E4.\n// // \uC694\uCCAD\uC5D0 \uB530\uB77C \uBE48 \uBC30\uC5F4\uC744 \uBC18\uD658\uD558\uAC70\uB098, \uB05D\uC810\uC744 numberOfSteps\uB9CC\uD07C \uBC18\uD658\uD560 \uC218\uB3C4 \uC788\uC2B5\uB2C8\uB2E4.\n// // \uC5EC\uAE30\uC11C\uB294 \uACC4\uC0B0 \uB85C\uC9C1\uC744 \uADF8\uB300\uB85C \uB450\uC5B4 \uB3D9\uC77C\uD55C \uC810\uC774 \uBC18\uBCF5 \uC0DD\uC131\uB418\uB3C4\uB85D \uD569\uB2C8\uB2E4.\n// } else {\n// // \uC2DC\uC791\uC810\uC5D0\uC11C \uB05D\uC810\uC73C\uB85C\uC758 \uBCA1\uD130\uC5D0 \uC218\uC9C1\uC778 \uBC29\uD5A5 \uBCA1\uD130 \uACC4\uC0B0 (\uC2DC\uACC4 \uBC18\uB300 \uBC29\uD5A5 90\uB3C4 \uD68C\uC804)\n// const perpX = -deltaY / distance;\n// const perpY = deltaX / distance;\n//\n// // \uC911\uAC04 \uC9C0\uC810\uC5D0\uC11C \uC218\uC9C1 \uBC29\uD5A5\uC73C\uB85C \uC635\uC158\uC5D0 \uB530\uB77C \uC81C\uC5B4\uC810 \uC704\uCE58 \uACC4\uC0B0\n// const offset = distance * controlPointOffsetFactor;\n// p1 = {\n// x: midX + perpX * offset,\n// y: midY + perpY * offset,\n// };\n// }\n//\n// // --- \uACE1\uC120 \uC0C1\uC758 \uC810 \uACC4\uC0B0 ---\n// for (let i = 1; i <= numberOfSteps; i++) {\n// // 1. \uAE30\uBCF8 \uD30C\uB77C\uBBF8\uD130 u \uACC4\uC0B0 (0 < u <= 1)\n// const u = i / numberOfSteps;\n// // 2. \uAC00\uC18D\uB3C4 \uC801\uC6A9\uB41C \uD30C\uB77C\uBBF8\uD130 t \uACC4\uC0B0\n// const t = Math.pow(u, accelerationFactor);\n// // 3. \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uC810 \uACC4\uC0B0\n// const pointOnCurve = quadraticBezier(t, p0, p1, p2);\n// points.push(pointOnCurve);\n// }\n//\n// return points; // \uACC4\uC0B0\uB41C \uC911\uAC04 \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 \uBC18\uD658\n// }\n//\n// // --- \uC0AC\uC6A9 \uC608\uC2DC ---\n// const start: Point = { x: 4, y: 10 };\n// const end: Point = { x: 50, y: 20 };\n// const steps = 10; // 10\uAC1C\uC758 \uC911\uAC04 \uC9C0\uC810 \uACC4\uC0B0\n//\n// // \uC608\uC2DC 1: \uAE30\uBCF8 \uC635\uC158 (\uC57D\uAC04\uC758 \uACE1\uC120, \uB4F1\uAC04\uACA9)\n// const path1 = getPointsOnBezierPath(start, end, {}, steps);\n// console.log(\"\uAE30\uBCF8 \uC635\uC158 \uACBD\uB85C:\", path1.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 2: \uB354 \uB9CE\uC774 \uD718\uC5B4\uC9C0\uAC8C (offset \uC99D\uAC00), \uAC00\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration > 1)\n// const path2 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: 0.6, accelerationFactor: 2 }, steps);\n// console.log(\"\uAC15\uD55C \uACE1\uC120 + \uAC00\uC18D \uACBD\uB85C:\", path2.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 3: \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD718\uAC8C (offset \uC74C\uC218), \uAC10\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration < 1)\n// const path3 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: -0.3, accelerationFactor: 0.5 }, steps);\n// console.log(\"\uBC18\uB300 \uACE1\uC120 + \uAC10\uC18D \uACBD\uB85C:\", path3.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n\n export const rotatePoint = (point: Point2D, center: Point2D, angleInRadians: number): Point2D => {\n // Translate point to origin so that center is the origin\n const translatedX = point.x - center.x;\n const translatedY = point.y - center.y;\n\n // Rotate point\n const rotatedX = translatedX * Math.cos(angleInRadians) - translatedY * Math.sin(angleInRadians);\n const rotatedY = translatedX * Math.sin(angleInRadians) + translatedY * Math.cos(angleInRadians);\n\n // Translate point back\n return new Point2D(rotatedX + center.x, rotatedY + center.y);\n }\n}\n", "export type SizeType = {\n width: number;\n height: number;\n};\n\nexport const isSizeType = (obj: any): obj is SizeType =>\n !!obj &&\n typeof obj.width === 'number' &&\n typeof obj.height === 'number';", "import { Point2D } from './Point2D';\nimport { MathUtil } from '../math/MathUtil';\nimport AngleUnitType = MathUtil.AngleUnitType;\nimport { isSizeType, SizeType } from './SizeType';\nimport { Point2DType } from './Point2DType';\n\ntype ValueLinkControl<T> = { value: T, noLink: boolean | Rect };\nconst isValueLinkControl = <T = any>(data: any): data is ValueLinkControl<T> => {\n return typeof data === 'object' && 'value' in data && 'noLink' in data;\n // return data.value !== undefined && data.noLink !== undefined && typeof data.value === 'object' && typeof data.noLink === 'boolean';\n}\n\nexport class Rect {\n private _start: Point2D;\n private _width: number\n private _height: number\n private linkRects?: Set<Rect>;\n\n constructor(size: SizeType);\n constructor(point: Point2DType, endPoint: Point2DType);\n constructor(point: Point2D, endPoint: Point2D);\n constructor(point: Point2D, width?: number, height?: number);\n constructor(x: number, y: number, width?: number, height?: number);\n constructor(xOrPoint: number | Point2D | { x: number, y: number } | SizeType, yOrPointOrWidth?: number | Point2D | { x: number, y: number }, widthOrHeight = 0, heightOrUndefined = 0) {\n if (isSizeType(xOrPoint)) {\n this._start = new Point2D(0, 0);\n this._width = xOrPoint.width;\n this._height = xOrPoint.height;\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'object') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this.end = yOrPointOrWidth instanceof Point2D ? yOrPointOrWidth : new Point2D(yOrPointOrWidth.x, yOrPointOrWidth.y);\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'number') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this._width = yOrPointOrWidth;\n this._height = widthOrHeight\n } else if (typeof xOrPoint === 'number' && typeof yOrPointOrWidth === 'number') {\n this._start = new Point2D(xOrPoint, yOrPointOrWidth);\n this._width = widthOrHeight;\n this._height = heightOrUndefined;\n }\n }\n\n\n private valueLinkControl<T>(value: T | ValueLinkControl<T>) {\n let v: T;\n let noLink: boolean | Rect = false;\n if (isValueLinkControl(value)) {\n v = value.value;\n noLink = value.noLink;\n } else {\n v = value;\n }\n return {value: v, noLink};\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n get start(): Point2D {\n return this._start.copy();\n }\n\n ////////////////////\n\n set width(width: number) {\n this.setWidth(width);\n }\n\n public setWidth(width: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(width);\n const percentDiff = MathUtil.getPercentByTotal(this._width, value);\n this._width = value;\n this.applyWidthPercentLinks({value: percentDiff, noLink});\n }\n\n\n set height(height: number) {\n this.setHeight(height);\n }\n\n public setHeight(height: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(height);\n const percentDiff = MathUtil.getPercentByTotal(this._height, value);\n this._height = value;\n this.applyHeightPercentLinks({value: percentDiff, noLink});\n }\n\n set start(inputValue: Point2D) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = new Point2D({x: MathUtil.getPercentByTotal(this._start.x, value.x), y: MathUtil.getPercentByTotal(this._start.y, value.y)});\n this._start = value;\n this.applyStartPercentLinks({value: percentDiff, noLink});\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setWidthFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, value);\n this._start.x = this.end.x - value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set widthFromEnd(inputValue: number) {\n this.setWidthFromEnd(inputValue);\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setHeightFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.end.y - value;\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n set heightFromEnd(inputValue: number) {\n this.setHeightFromEnd(inputValue);\n }\n\n setWidthFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.x - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, diff);\n this._start.x = diff;\n this.applyStartXPercentLinks(percentDiff);\n }\n\n set widthFromCenter(inputValue: number) {\n this.setWidthFromCenter(inputValue);\n }\n\n setHeightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set heightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set x(inputValue: number) {\n this.setX(inputValue);\n }\n\n public setX(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.x;\n const percentDiff = MathUtil.getPercentByTotal(this.width, diff);\n this._start.x = value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set y(inputValue: number) {\n this.setY(inputValue);\n }\n\n public setY(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.y;\n const percentDiff = MathUtil.getPercentByTotal(this.height, diff);\n this._start.y = value;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n ////////////////////////////\n\n applyWidthPercentLinks(widthPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(widthPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setWidthByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyHeightPercentLinks(heightPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(heightPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setHeightByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartPercentLinks(startPercent: Point2D | ValueLinkControl<Point2D>) {\n let {value, noLink} = this.valueLinkControl(startPercent);\n this.applyStartXPercentLinks({value: value.x, noLink});\n this.applyStartYPercentLinks({value: value.y, noLink});\n }\n\n applyStartXPercentLinks(xPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(xPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addXByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartYPercentLinks(yPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(yPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addYByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n hasLink(rect: Rect) {\n return this.linkRects?.has(rect)\n }\n\n isLinked() {\n return !!this.linkRects?.size;\n }\n\n addLink(...rect: Rect[]) {\n this.linkRects ??= new Set<Rect>();\n rect.filter(it => !this.linkRects?.has(it)).forEach(it => {\n this.linkRects?.add(it);\n it.addLink(this);\n })\n }\n\n setLinks(rects: Rect[]) {\n this.unLinkAll();\n this.addLink(...rects);\n }\n\n unLinkAll() {\n if (this.linkRects) {\n Array.from(this.linkRects.values()).forEach(it => {\n this.unLink(it);\n })\n this.linkRects.clear();\n }\n }\n\n unLink(rect: Rect | ValueLinkControl<Rect>) {\n let {value, noLink} = this.valueLinkControl(rect);\n if (this.linkRects) {\n this.linkRects.delete(value);\n }\n if (!noLink)\n value.unLink({value: this, noLink: this});\n }\n\n addWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: this.width + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: this.height + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addWidthRatio(wRatio: number) {\n this.width = this.width + MathUtil.getValueByTotalInRatio(this.width, wRatio);\n }\n\n addHeightRatio(hRatio: number) {\n this.height = this.height + MathUtil.getValueByTotalInRatio(this.height, hRatio);\n }\n\n addXPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addYPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addXRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n ////////////\n\n set endX(value: number) {\n const diff = value - this.x;\n this.width = diff;\n }\n\n set endXPercent(endXPercent: number) {\n this.endX = MathUtil.getValueByTotalInPercent(this.width, endXPercent);\n }\n\n set endYPercent(endYPercent: number) {\n this.endY = MathUtil.getValueByTotalInPercent(this.height, endYPercent);\n }\n\n set endY(value: number) {\n this.height = value - this.y;\n }\n\n set end(value: Point2D) {\n this.width = value.x - this.x;\n this.height = value.y - this.y;\n }\n\n get x(): number {\n return this.start.x;\n }\n\n get y(): number {\n return this.start.y;\n }\n\n get endX(): number {\n return this.end.x;\n }\n\n get endY(): number {\n return this.end.y;\n }\n\n to(startPoint: Point2D) {\n const r = this.copy();\n r.start = startPoint;\n return r;\n }\n\n toRotate(r: number, {rotatePoint = this.center, type = 'degreeAngle'}: { rotatePoint?: { x: number, y: number }, type?: AngleUnitType }): Point2D[] {\n const angle = MathUtil.radians(r, {type});\n const centerPoint = rotatePoint instanceof Point2D ? rotatePoint : new Point2D(rotatePoint.x, rotatePoint.y);\n\n const points = [\n this.leftTop,\n this.rightTop,\n this.rightBottom,\n this.leftBottom\n ];\n\n return points.map(p => MathUtil.rotatePoint(p, centerPoint, angle));\n }\n\n get center(): Point2D {\n return new Point2D(this.start.x + (this.width / 2), this.start.y + (this.height / 2));\n }\n\n get end(): Point2D {\n return new Point2D(this.start.x + this.width, this.start.y + this.height);\n }\n\n get leftTop(): Point2D {\n return this.start.copy();\n }\n\n get leftBottom(): Point2D {\n return new Point2D(this.start.x, this.end.y);\n }\n\n get rightTop(): Point2D {\n return new Point2D(this.end.x, this.start.y);\n }\n\n get rightBottom(): Point2D {\n return this.end;\n }\n\n public copy(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /////////////////\n\n getWidthPercent(width: number) {\n return MathUtil.getPercentByTotal(this.width, width);\n }\n\n getWidthRatio(width: number) {\n return MathUtil.getRatioByTotal(this.width, width);\n }\n\n getWidthByPercent(percent: number) {\n return MathUtil.getValueByTotalInPercent(this.width, percent);\n }\n\n getWidthByRatio(percent: number) {\n return MathUtil.getValueByTotalInRatio(this.width, percent);\n }\n\n getHeightPercent(height: number) {\n return MathUtil.getPercentByTotal(this.height, height);\n }\n\n getHeightRatio(height: number) {\n return MathUtil.getRatioByTotal(this.height, height);\n }\n\n getHeightByPercent(percentY: number) {\n return MathUtil.getValueByTotalInPercent(this.height, percentY);\n }\n\n getHeightByRatio(ratio: number) {\n return MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getXPercent(x: number) {\n return MathUtil.getPercentByTotal(this.width, x - this.x)\n }\n\n getXRatio(x: number) {\n return MathUtil.getRatioByTotal(this.width, x - this.x)\n }\n\n getXByPercent(xPercent: number) {\n return this.x + MathUtil.getValueByTotalInPercent(this.width, xPercent);\n }\n\n getXByRatio(ratio: number) {\n return this.x + MathUtil.getValueByTotalInRatio(this.width, ratio);\n }\n\n getYPercent(y: number) {\n return MathUtil.getPercentByTotal(this.height, y - this.y);\n }\n\n getYRatio(y: number) {\n return MathUtil.getRatioByTotal(this.height, y - this.y);\n }\n\n getYByPercent(yPercent: number) {\n return this.y + MathUtil.getValueByTotalInPercent(this.height, yPercent);\n }\n\n getYByRatio(ratio: number) {\n return this.y + MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getPercent(point: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXPercent(point.x),\n this.getYPercent(point.y),\n );\n }\n\n /**\n * \uC8FC\uC5B4\uC9C4 width\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C height\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param width \uC0C8\uB85C\uC6B4 width \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C height\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByWidth(width: number): Rect {\n const ratio = this.height / this.width;\n return new Rect(this.x, this.y, width, width * ratio);\n }\n /**\n * \uC8FC\uC5B4\uC9C4 height\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C width\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param height \uC0C8\uB85C\uC6B4 height \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C width\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByHeight(height: number): Rect {\n const ratio = this.width / this.height;\n return new Rect(this.x, this.y, height * ratio, height);\n }\n\n toRatio(point: Rect | { x: number, y: number, w: number, h: number }): Rect {\n return new Rect(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n this.getWidthRatio(point instanceof Rect ? point.width : point.w),\n this.getHeightRatio(point instanceof Rect ? point.height : point.h),\n );\n }\n\n getRatio(point: { x: number, y: number }) {\n return new Point2D(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n );\n }\n\n getByPercent(percent: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXByPercent(percent.x),\n this.getYByPercent(percent.y),\n );\n }\n\n getByRatio(ratio: { x: number, y: number }) {\n return new Point2D(\n this.getXByRatio(ratio.x),\n this.getYByRatio(ratio.y),\n );\n }\n\n getDiffX(x: number) {\n return x - this.x;\n }\n\n getDiffY(y: number) {\n return y - this.y;\n }\n\n getDiffLeft(x: number) {\n this.getDiffX(x);\n }\n\n getDiffTop(y: number) {\n this.getDiffY(y);\n }\n\n getDiffRight(x: number) {\n return x - this.end.x;\n }\n\n getDiffBottom(y: number) {\n return y - this.end.y;\n }\n\n getDiffWidth(width: number) {\n return width - this.width;\n }\n\n getDiffHeight(height: number) {\n return height - this.height;\n }\n\n toDiff(rect: Rect) {\n return new Rect(\n rect.x - this.x,\n rect.y - this.y,\n rect.width - this.width,\n rect.height - this.height,\n );\n }\n\n setXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set xByWidthPercent(wPercent: number) {\n this.setXByWidthPercent(wPercent);\n }\n\n setXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set xByWidthRatio(wRatio: number) {\n this.setXByWidthRatio(wRatio);\n }\n\n setYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set yByHeightPercent(hPercent: number) {\n this.setYByHeightPercent(hPercent);\n }\n\n setYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set yByHeightRatio(ratio: number) {\n this.setYByHeightRatio(ratio);\n }\n\n addXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n setWidthByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set widthByWidthPercent(wPercent: number) {\n this.setWidthByWidthPercent(wPercent);\n }\n\n setWidthByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setWidth({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set widthByWidthRatio(wRatio: number) {\n this.setWidthByWidthRatio(wRatio);\n }\n\n setHeightByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set heightByHeightPercent(hPercent: number) {\n this.setHeightByHeightPercent(hPercent);\n }\n\n setHeightByHeightRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setHeight({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set heightByHeightRatio(hRatio: number) {\n this.setHeightByHeightRatio(hRatio);\n }\n\n // getWidthHeightPercentByPoint(point: Point2D): Point2D {\n // return new Point2D(this.getWidthPercent(point.x),this.getHeightPercent(point.y));\n // }\n //\n // getByPercent(point: Point2D): Point2D {\n // return new Point2D(this.getWidthByPercent(point.x),this.getHeightByPercent(point.y));\n // }\n\n ///////\n\n public copyByPercent(percent: number): Rect;\n public copyByPercent(percentX: number, percentY?: number): Rect ;\n public copyByPercent(percentOrX: number, percentY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInPercent(this.width, percentOrX),\n MathUtil.getValueByTotalInPercent(this.height, percentY ?? percentOrX)\n );\n }\n\n public copyByRatio(ratio: number): Rect;\n public copyByRatio(ratioX: number, ratioY?: number): Rect ;\n public copyByRatio(ratioOrX: number, ratioY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInRatio(this.width, ratioOrX),\n MathUtil.getValueByTotalInRatio(this.height, ratioY ?? ratioOrX)\n );\n }\n\n public isIn(data: { x: number, y: number }): boolean;\n public isIn(data: Point2D): boolean;\n public isIn(data: Rect): boolean\n public isIn(data: Point2D | Rect | { x: number, y: number }): boolean {\n if (data instanceof Rect) {\n return this.isIn(data.start) && this.isIn(data.end);\n } else {\n return data.x >= this.start.x && data.x <= this.end.x && data.y >= this.start.y && data.y <= this.end.y;\n }\n }\n\n public isOut(data: Point2D): boolean;\n public isOut(data: Rect): boolean;\n public isOut(data: Point2D | Rect) {\n if (data instanceof Rect) {\n return !this.isOverlap(data);\n } else {\n return !this.isIn(data);\n }\n }\n\n public isOverlap(data: Point2D): boolean;\n public isOverlap(data: Rect): boolean;\n public isOverlap(data: Point2D | Rect) {\n if (data instanceof Rect) {\n /*\n \uC0C8\uB85C\uC6B4 \uB85C\uC9C1\uC740 \uBC18\uB300\uB85C \"\uACB9\uCE58\uC9C0 \uC54A\uB294 \uC870\uAC74\"\uC744 \uCC3E\uACE0, \uADF8 \uC870\uAC74\uC5D0 \uD574\uB2F9\uD558\uC9C0 \uC54A\uC73C\uBA74 \"\uACB9\uCE5C\uB2E4\"\uACE0 \uD310\uB2E8\uD558\uB294\n \uBC29\uC2DD\uC785\uB2C8\uB2E4. \uC774 \uBC29\uBC95\uC774 \uD6E8\uC52C \uAC04\uB2E8\uD558\uACE0 \uBAA8\uB4E0 \uACBD\uC6B0\uB97C \uCC98\uB9AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\n \uB450 \uC0AC\uAC01\uD615(A\uC640 B)\uC774 \uACB9\uCE58\uC9C0 \uC54A\uC73C\uB824\uBA74, \uB2E4\uC74C \uB124 \uAC00\uC9C0 \uC870\uAC74 \uC911 \uD558\uB098\uB77C\uB3C4 \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4.\n 1. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC67C\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC624\uB978\uCABD \uB05D(this.endX)\uC774 B\uC758 \uC67C\uCABD \uC2DC\uC791(data.x)\uBCF4\uB2E4 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endX < data.x\n\n\n 2. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC624\uB978\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC67C\uCABD \uC2DC\uC791(this.x)\uC774 B\uC758 \uC624\uB978\uCABD \uB05D(data.endX)\uBCF4\uB2E4 \uC624\uB978\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.x > data.endX\n\n\n 3. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC704\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC544\uB798\uCABD \uB05D(this.endY)\uC774 B\uC758 \uC704\uCABD \uC2DC\uC791(data.y)\uBCF4\uB2E4 \uC704\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endY < data.y\n\n\n 4. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC544\uB798\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC704\uCABD \uC2DC\uC791(this.y)\uC774 B\uC758 \uC544\uB798\uCABD \uB05D(data.endY)\uBCF4\uB2E4 \uC544\uB798\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.y > data.endY\n */\n const noOverlap = this.endX < data.x ||\n this.x > data.endX ||\n this.endY < data.y ||\n this.y > data.endY;\n return !noOverlap;\n // return (\n // this.isOverlap(data.leftTop) ||\n // this.isOverlap(data.rightTop) ||\n // this.isOverlap(data.rightBottom) ||\n // this.isOverlap(data.leftBottom)) ||\n // (\n // data.start.x < this.x && data.start.y < this.y &&\n // data.end.x > this.end.x && data.end.y > this.end.y\n // );\n } else {\n return this.isIn(data);\n }\n }\n\n public toString(): string {\n return `x:${this.x}, y:${this.y}, width: ${this.width}, height: ${this.height}`;\n }\n\n}\n", "export type WithRequiredProperty<Type, Key extends keyof Type> = Type & {\n [Property in Key]-?: Type[Property];\n};\nexport type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\nexport type KeysWithValsOfType<T, V> = keyof { [P in keyof T as T[P] extends V ? P : never]: P };\nexport type PropType<T> = {\n [P in keyof T]: T[P];\n};\nexport type ArrayElementType<T> = T extends (infer U)[] ? U : never;\nexport type PickMix<T, M, K extends keyof T> = {\n [P in K]: T[P] & M;\n};\nexport type PickArrayElementMix<T, M, K extends keyof T> = {\n [P in K]: (ArrayElementType<T[P]> & M)[];\n};\nexport type ChangeArrayElement<T, M> = T extends (infer U)[] ? M[] : never;\nexport type ChangeArrayElementMix<T, M> = T extends (infer U)[] ? (U & M)[] : never;\nexport type ChangePickArrayElementMix<T, M, K extends keyof T> = Omit<T, K> & PickArrayElementMix<T, M, K>;\n\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\nexport type Method = (...args: any[]) => any;\nexport type GenericClassDecorator<T> = (target: T) => void;\n// declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\n// export type ReflectField = PropertyDecorator\n// export type ReflectMethod = MethodDecorator\nexport type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n\ntype Reverse<TupleType extends any[], ReversedTupleType extends any[] = []> = {\n 0: ReversedTupleType;\n 1: TupleType extends [infer Head, ...infer Tail] ? Reverse<Tail, [Head, ...ReversedTupleType]> : never;\n}[TupleType extends [] ? 0 : 1];\n\n//\ntype UnionToIntersection<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;\n\n/**\n * LastInUnion<1 | 2> = 2.\n */\ntype LastInUnion<U> =\n UnionToIntersection<U extends unknown ? (x: U) => 0 : never> extends (x: infer L) => 0 ? L : never;\n\n/**\n * UnionToTuple<1 | 2> = [1, 2].\n */\nexport type UnionToTuple<U, Last = LastInUnion<U>> = [U] extends [never]\n ? []\n : [...UnionToTuple<Exclude<U, Last>>, Last];\n\nexport type FilterUndefined<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends undefined\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type FilterNever<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends never\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\nexport type ExtractNotNullish<T> = T extends null | undefined ? never : T;\nexport type FilterNullish<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotNullish<E>, ...FilterNullish<Rest>]\n : T extends (infer E)[]\n ? ExtractNotNullish<E>[]\n : ExtractNotNullish<T>;\n\nexport type ExtractNotFalsy<T> = T extends false ? never : T;\nexport type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n : T extends (infer E)[]\n ? ExtractNotFalsy<E>[]\n : ExtractNotFalsy<T>;\nexport type FieldType<T, F> = Record<keyof T, F>;\nexport type FieldUnionType<T, F> = {\n [P in keyof T]: T[P] | F;\n};\n\n\n\nexport type Dictionary<T = any> = Record<string | number, T>;\ntype GetKeys<T> = T extends unknown[]\n ? T extends [] // special case empty tuple => no keys\n ? never\n : '0' extends keyof T // any tuple with at least one element\n ? Exclude<keyof T, keyof []>\n : number // other array\n : keyof T; // not an array\nexport type Stringify<T> = T extends string | number ? `${T}` : never;\nexport type FlattenObjectKeys<T extends Dictionary | any[]> =\n Stringify<GetKeys<T>> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : StringKey extends keyof T\n ? T[StringKey] extends Dictionary | any[]\n ?\n | StringKey\n | `${StringKey}.${FlattenObjectKeys<T[StringKey]>}`\n | `${StringKey}[${keyof T[StringKey] & number}]`\n | `${StringKey}[${keyof T[StringKey] & number}].${FlattenObjectKeys<T[StringKey][number]>}`\n : StringKey\n : never\n : never;\n\ntype GetType<T, K> = K extends keyof T ? T[K] : K extends `${number}` ? (T extends any[] ? T[number] : never) : never;\nexport type FlattenObjectType<T, Path = Stringify<keyof T>> =\n Stringify<keyof T> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : Path extends `${infer FirstKey}[${infer Index}].${infer Rest}`\n ? FlattenObjectType<GetType<GetType<T, FirstKey>, Index>, Rest>\n : Path extends `${infer FirstKey}.${infer Rest}`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : Path extends `${infer FirstKey}[${infer Rest}]`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : GetType<T, Path>\n : never;\n\nexport type FlattenObject<T extends Dictionary> = {\n [FlattenKey in FlattenObjectKeys<T>]: FlattenObjectType<T, FlattenKey>;\n};\n\nexport type FilterTuple<T extends any[]> = '0' extends keyof T ? never : T;\n\nexport type MaybeArray<T> = T | T[];\nexport type With<T extends MaybeArray<Dictionary>, V extends Dictionary> = T extends (infer U)[] ? Array<U & V> : T & V;\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = Nullable<T> | undefined;\nexport type NullableObject<T> = {\n [P in keyof T]: Nullable<T[P]>;\n};\nexport type NullableProperty<T, K extends keyof T> = {\n [P in K]: Nullable<T[P]>;\n};\nexport type NullOrUndefined<T> = null | undefined;\nexport type NotNullOrUndefined<T> = T extends null | undefined ? never : T;\nexport type NonNullable<T> = T extends null | undefined ? never : T;\nexport type NonNullableObject<T> = {\n [P in keyof T]-?: NonNullable<T[P]>;\n};\nexport type NonNullableProperty<T, K extends keyof T> = {\n [P in K]-?: NonNullable<T[P]>;\n};\n\nexport type GroupBy<T extends Dictionary, K extends keyof T> = {\n [P in T[K]]: T[];\n};\n\nexport type InferPromise<T> = T extends Promise<infer U> ? U : never;\n\nexport type JoinKeys<T> = {\n [K in keyof T]: K extends string ? `${K}` | `${K}-${JoinKeys<T[K]>}` : never;\n}[keyof T];\n\nexport type FilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? K : never]: T[K];\n};\nexport type ExcludeFilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? never : K]: T[K];\n};\n\nexport type GetDotPath<T, P extends string> = P extends `${infer K}.${infer R}`\n ? K extends keyof T\n ? GetDotPath<T[K], R>\n : never\n : P extends keyof T\n ? T[P]\n : P extends string\n ? T\n : never;\n\nexport type FlatJoinKey<T, J = '.'> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}${J}${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}.${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKeyType<T> = keyof FlatJoinDotKey<T>;\nexport type FlatJoinKeyType<T, J> = keyof FlatJoinKey<T, J>;\nexport type FlatJoinDotKeyFieldType<T, D> = FieldType<FlatJoinDotKey<T>,D>;\nexport type FlatJoinDotKeyTypePartial<T, D> = Partial<FieldType<FlatJoinDotKey<T>,D>>;\nexport type FlatJoinDotKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}.${keyof FlatJoinDotKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}/${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}/${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\n\n\n// https://amit08255.medium.com/the-most-mind-blowing-thing-ive-learned-in-typescript-930926ce848a\nexport type ParseRoute<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? Segment extends `:${infer Param}`\n ? { [K in Param]: string } & ParseRoute<`/${Rest}`>\n : ParseRoute<`/${Rest}`>\n : T extends `/:${infer Param}`\n ? { [K in Param]: string }\n : {}\n// type UserRoute = ParseRoute<'/users/:id/posts/:postId'>\n// type UserRoute = { id: string; postId: string }\n// const user:UserRoute = { id: '1', postId: '2' };\n\n\nexport type ParsePath<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? [Segment, ...ParsePath<`/${Rest}`>]\n : T extends `/${infer Segment}`\n ? [Segment]\n : []\n// type ApiRoute = ParsePath<\"/api/users/123\"> // [\"api\", \"users\", \"123\"]\n// type InvalidRoute = ParsePath<\"missing-slash\"> // []\n\n\n\nexport type StringValue<T> = {\n [K in keyof T]: T[K] extends object ? StringValue<T[K]> : string;\n};\n\n\n// index\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\n\n// infer\uC640 \uC870\uAC74\uBD80 \uD0C0\uC785\uC73C\uB85C \uD749\uB0B4\uB0B4\uAE30\n// \uAC00\uB054 \"\uC0C1\uC704 \uD0C0\uC785\"\uC73C\uB85C \uC81C\uC57D\uC744 \uB450\uACE0 \uC2F6\uC744 \uB54C\uB294 \uC870\uAC74\uBD80 \uD0C0\uC785\uC744 \uC501\uB2C8\uB2E4:\n// let fn: Super<HttpResponseError<any>>;\n// fn \uC740 HttpResponseError<any> \uC758 \uC0C1\uC704 \uD0C0\uC785 \uD30C\uB77C\uBBF8\uD130\uB3C4 \uBC1B\uC744 \uC218 \uC788\uC74C\n// type Super<T> = T extends HttpResponseError<infer U> ? HttpResponseError<any> : never;\nexport type Super<T> = (arg: T) => void;\n\n// export type GenericClassDecorator<T> = (target: T) => void;\n// export type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n// export type ExtractNotFalsy<T> = T extends false ? never : T;\n// export type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n// ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n// : T extends (infer E)[]\n// ? ExtractNotFalsy<E>[]\n// : ExtractNotFalsy<T>;\n//\n// export type Mutable<T> = {\n// -readonly [P in keyof T]: T[P];\n// };\n// NonNullable\nexport type MethodOnlyFieldPostFix<T, S extends string> = {\n [key in keyof T as `${string & key}${S}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\nexport type MethodOnlyFieldPerFix<T, S extends string> = {\n [key in keyof T as `${S}${string & key}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\n// export const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n// export const isDefined = <T>(value: T | undefined | null): value is NonNullable<T> => value !== undefined && value !== null;\nexport const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n/*\ndeclare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\ndeclare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;\ndeclare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;\ndeclare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n */\n\ndeclare global {\n namespace Reflect {\n function metadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function defineMetadata(metadataKey: any, value: any, target: Object, propertyKey?: string | symbol): void;\n function getOwnMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadataKeys(target: Object): any[];\n }\n}\nexport {};\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport type { ConstructorType } from '../types';\nimport { isDefined } from '../types';\n\nexport namespace ObjectUtils {\n\n export const constructorName = (target: any): string | undefined => {\n if (target && target.constructor && target.constructor.name) {\n return target.constructor.name;\n } else if (target && target.name) {\n return target.name;\n }\n\n }\n export const deepCopy = <T = any>(obj: T): T => {\n if (obj instanceof Map) {\n return new Map<any, any>(JSON.parse(JSON.stringify(Array.from(obj.entries())))) as T;\n } else if (obj instanceof Set) {\n return new Set<any>(JSON.parse(JSON.stringify(Array.from(obj.values())))) as T;\n } else if (ValidUtils.isNullOrUndefined(obj)) {\n return obj;\n }\n\n return JSON.parse(JSON.stringify(obj));\n };\n export const allProtoTypeName = (target?: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n if (proto && (data = Object.keys(proto) || []).length > 0) {\n data = data.concat(ObjectUtils.allProtoTypeName(proto, filter));\n }\n }\n let result = data.filter(it => it !== 'constructor');\n\n if (filter && target) {\n const proto = Object.getPrototypeOf(target);\n result = result.filter(key => filter(key, proto?.[key]));\n }\n\n return result;\n };\n\n export const uniqueKeys = (obj: (object[]) | object) => {\n const allKeys = Array.from(new Set((Array.isArray(obj) ? obj : [obj]).flatMap(item => Object.keys(item))));\n return allKeys;\n };\n\n export const ownPropertyNames = (target?: any): string[] => {\n const data: string[] = [];\n if (target) {\n if (!target.prototype) {\n const a = Object.getPrototypeOf(target);\n data.push(...Object.getOwnPropertyNames(a));\n } else {\n data.push(...Object.getOwnPropertyNames(Object.getPrototypeOf(target)));\n }\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypeName = (target?: any): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n data = Object.keys(proto) || [];\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypes = (target?: any): Function[] => {\n const data: Function[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || []).filter(it => it !== 'constructor').forEach(it => {\n data.push(proto[it]);\n });\n }\n return data;\n };\n\n export const seal = <T>(target: T): T => {\n return Object.seal(target);\n };\n\n /*\n Object.prototype.isPrototypeOf()\n isPrototypeOf() 메소드는 해당 객체가 다른 객체의 프로토타입 체인에 속한 객체인지 확인하기 위해 사용됩니다.\n */\n export const isPrototypeOfTarget = (start: ConstructorType<any> | Function | null | undefined, target: any | null | undefined): boolean => {\n if (start && target) {\n return Object.prototype.isPrototypeOf.call(start.prototype, target);\n } else {\n return false;\n }\n };\n\n export const prototypeOfDepth = (target: any, dest: ConstructorType<any> | Function | null | undefined): object[] => {\n let object: any = target;\n const r: any[] = [];\n if (dest) {\n do {\n object = Object.getPrototypeOf(object);\n if (object?.constructor === dest) {\n break;\n }\n r.push(object);\n } while (object);\n }\n return r;\n };\n\n export const allProtoType = (start: ConstructorType<any> | Function): (ConstructorType<any> | Function)[] => {\n const depth = (target: ConstructorType<any> | Function, bowl: (ConstructorType<any> | Function)[] = []) => {\n if (target.prototype) {\n bowl.push(target);\n depth(Object.getPrototypeOf(target), bowl);\n }\n return bowl;\n };\n const d = depth(start);\n return d;\n // const protos: (ConstructorType<any> | Function)[] = []\n // while (start) {\n // protos.push(start);\n // start = Object.getPrototypeOf(start)\n // }\n // return protos;\n };\n\n export const prototypeOf = (start: any) => {\n return Object.getPrototypeOf(start);\n };\n\n export const prototypeKeyMap = (target: any): Map<Function, string> => {\n const data = new Map<Function, string>();\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || []).filter(it => it !== 'constructor').forEach(it => {\n data.set(proto[it], it);\n });\n }\n return data;\n };\n\n export const prototypeName = (target: any, fnc: Function): string | undefined => {\n return ObjectUtils.prototypeKeyMap(target).get(fnc);\n };\n\n\n export const pickRandomKey = <T>(target: T): keyof T => {\n\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys[Math.floor(Math.random() * keys.length)];\n };\n\n export const pickRandomValue = <T>(target: T): T[keyof T] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return target[keys[Math.floor(Math.random() * keys.length)]];\n };\n\n export const pickRandomKeyValue = <T>(target: T): { key: keyof T, value: T[keyof T] } => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n const key = keys[Math.floor(Math.random() * keys.length)];\n return { key, value: target[key] };\n };\n\n export const keyValues = <T>(target: T): { key: keyof T, value: T[keyof T] }[] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys.map(key => ({ key, value: target[key] }));\n };\n\n export const entries = <T>(target: T): [keyof T, T[keyof T]][] => {\n return Object.entries(target as any) as [keyof T, T[keyof T]][];\n }\n\n export const values = <T>(target: T): (T[keyof T])[] => {\n return Object.values(target as any);\n }\n\n export const keys = <T>(target: T): (keyof T)[] => {\n return Object.keys(target as any) as (keyof T)[];\n }\n\n export const keyLength = <T>(target: T): number => {\n return ObjectUtils.keys(target).length;\n };\n\n\n export const toDeleteUndefinedAndNull = <T>(target: T, config?: { deep?: boolean }): T => {\n const cleanValue = (value: any): any => {\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined && item !== null).map(cleanValue);\n } else if (value && typeof value === 'object') {\n if (config?.deep) {\n return Object.fromEntries(Object.entries(value).filter(([_, v]) => v !== undefined && v !== null).map(([k, v]) => [k, cleanValue(v)])\n );\n } else {\n return Object.fromEntries(\n Object.entries(value).filter(([_, v]) => v !== undefined && v !== null)\n );\n }\n }\n return value;\n };\n\n return cleanValue(target) as T;\n };\n\n\n export namespace Path {\n export const isFunctionScript = (script: string): boolean => {\n return script.trim().startsWith('function');\n }\n\n export const isArrowFunctionScript = (script: string): boolean => {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(script);\n }\n\n export const toOptionalChainPath = (path: string): string => {\n if (!path) {\n return '';\n }\n // Add this check for object literals\n if (path.trim().startsWith('{') && path.trim().endsWith('}')) {\n return path;\n }\n if (isFunctionScript(path) || isArrowFunctionScript(path)) {\n return path;\n }\n \n // Check for ternary operator pattern (? :)\n if (path.includes(' ? ') && path.includes(' : ')) {\n // Handle ternary operator - only convert property access parts, not the ternary operator itself\n const parts = path.split(/(\\s+\\?\\s+|\\s+:\\s+)/);\n const result = parts.map((part, index) => {\n // Only process the first part (before ?) for optional chaining\n if (index === 0) {\n const tokens = part.match(/[^?.[\\]]+|\\[[^\\]]*\\]/g);\n if (tokens && tokens.length > 1) {\n return tokens.join('?.');\n }\n }\n return part;\n });\n return result.join('');\n }\n \n // Handle function calls by processing the entire path with regex replacement\n if (path.includes('(')) {\n // Replace function calls with a placeholder, process the path, then restore function calls\n const functionCallMatches: Array<{original: string, processed: string, placeholder: string}> = [];\n let tempPath = path;\n let counter = 0;\n \n // Find and process function calls with their arguments\n const functionCallRegex = /(\\w+)\\(([^()]*(?:\\([^()]*\\)[^()]*)*)\\)/g;\n let match;\n \n while ((match = functionCallRegex.exec(path)) !== null) {\n const fullMatch = match[0];\n const funcName = match[1];\n const funcArgs = match[2];\n const placeholder = `__FUNC_CALL_${counter}__`;\n \n // Process function arguments recursively\n const processedArgs = funcArgs ? toOptionalChainPath(funcArgs) : '';\n const processedFuncCall = `${funcName}?.(${processedArgs})`;\n \n functionCallMatches.push({\n original: fullMatch,\n processed: processedFuncCall,\n placeholder: placeholder\n });\n \n tempPath = tempPath.replace(fullMatch, placeholder);\n counter++;\n }\n \n // Process the path without function calls\n const tokens = tempPath.match(/[^?.[\\]]+|\\[[^\\]]*\\]/g);\n let processedPath = '';\n if (tokens && tokens.length > 1) {\n processedPath = tokens.join('?.');\n } else {\n processedPath = tempPath;\n }\n \n // Restore function calls\n for (const funcMatch of functionCallMatches) {\n processedPath = processedPath.replace(funcMatch.placeholder, funcMatch.processed);\n }\n \n return processedPath;\n }\n \n // Tokenize the path by '.', '[', ']', and '?' to handle property access and existing optional chaining.\n const tokens = path.match(/[^?.[\\]]+|\\[[^\\]]*\\]/g);\n if (!tokens) {\n return path; // Return original path if no tokens are found (e.g., path is just '.')\n }\n // Join tokens with '?.', effectively creating the optional chain path.\n return tokens.join('?.');\n };\n\n export const removeOptionalChainOperator = (path: string): string => {\n if (!path) {\n return '';\n }\n // Replace all optional chaining operators with standard ones.\n return path.replace(/\\?\\./g, '.').replace(/\\.\\[/g, '[');\n };\n\n const parsePath = (path: string): (string | number)[] => {\n const result: (string | number)[] = [];\n const regex = /\\.([^.\\[]+)|\\[(\\d+)\\]|\\[(['\"])(.*?)\\3\\]/g;\n let match;\n let lastIndex = 0;\n\n const firstMatch = path.match(regex);\n if (firstMatch && (firstMatch?.index??0) > 0) {\n result.push(path.substring(0, firstMatch.index));\n lastIndex = firstMatch.index as number;\n } else if (!firstMatch && path.length > 0) {\n result.push(path);\n return result;\n }\n\n while ((match = regex.exec(path)) !== null) {\n if (match.index > lastIndex) {\n const segment = path.substring(lastIndex, match.index);\n if (segment.startsWith('.')) {\n result.push(segment.substring(1));\n } else {\n result.push(segment);\n }\n }\n\n if (match[1]) {\n result.push(match[1]);\n } else if (match[2]) {\n result.push(parseInt(match[2], 10));\n } else if (match[4]) {\n result.push(match[4]);\n }\n lastIndex = regex.lastIndex;\n }\n\n if (lastIndex < path.length) {\n const remaining = path.substring(lastIndex);\n if (remaining.startsWith('.')) {\n result.push(remaining.substring(1));\n } else {\n result.push(remaining);\n }\n }\n\n return result;\n };\n\n export const to = <T = any>(obj: any) => {\n const destination: T = {} as any;\n Object.entries(obj).forEach(([path, value]) => {\n Path.set(destination, path, value);\n });\n return destination;\n };\n\n export const set = (obj: any, path: string, value: any) => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n const isLastPart = i === pathParts.length - 1;\n\n if (isLastPart) {\n current[part] = value;\n } else {\n // Ensure current[part] is of the correct type for the next part\n const nextPart = pathParts[i + 1];\n\n if (typeof nextPart === 'number') { // Next part is an array index\n if (!Array.isArray(current[part])) {\n current[part] = [];\n }\n // Fill holes if current[part] is an array and nextPart is a skipped index\n if (Array.isArray(current[part])) {\n while (current[part].length <= nextPart) {\n current[part].push({}); // Fill with empty objects\n }\n }\n } else { // Next part is a string (object property)\n if (typeof current[part] !== 'object' || current[part] === null) {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n };\n\n export const get = (obj: any, path: string, defaultValue?: any): any => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return defaultValue;\n }\n\n // Check if the current object has the property/index\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n // Property/index not found\n return defaultValue;\n }\n }\n\n return current;\n };\n\n export const deletePath = (obj: any, path: string): boolean => {\n const pathParts = parsePath(path);\n if (pathParts.length === 0) {\n return false;\n }\n\n let current = obj;\n\n // Navigate to the parent of the target property\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return false;\n }\n\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n return false;\n }\n }\n\n // Delete the final property\n const finalPart = pathParts[pathParts.length - 1];\n if (current !== null && typeof current === 'object' && finalPart in current) {\n if (Array.isArray(current) && typeof finalPart === 'number') {\n current.splice(finalPart, 1);\n } else {\n delete current[finalPart];\n }\n return true;\n }\n\n return false;\n };\n\n export const availablePath = (obj: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n const paths: string[] = [];\n\n const formatKey = (key: string | number): string => {\n if (typeof key === 'number') {\n return '[' + key + ']'; // Array index\n }\n // Check if the key is a valid JavaScript identifier.\n // If not, it needs to be quoted.\n // A valid identifier starts with a letter, _, or $, followed by letters, digits, _, or $.\n // This regex checks for characters that are NOT valid in an identifier.\n if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n // If it's not a valid identifier, quote it.\n // Use single quotes without escaping for test compatibility\n return \"['\" + key + \"']\";\n }\n return key;\n };\n\n const traverse = (current: any, currentPath: string, visited: Set<any>) => {\n if (current === null || typeof current !== 'object') {\n return;\n }\n\n // Detect circular references\n if (visited.has(current)) {\n return;\n }\n visited.add(current);\n\n if (Array.isArray(current)) {\n current.forEach((item: any, index: number) => {\n const formattedIndex = formatKey(index); // This will be [index]\n const newPath = currentPath ? `${currentPath}${formattedIndex}` : formattedIndex;\n \n // Apply filter if provided\n if (!filter || filter(newPath, item)) {\n paths.push(newPath);\n }\n \n traverse(item, newPath, visited);\n });\n } else {\n Object.keys(current).forEach(key => {\n const formattedKey = formatKey(key);\n let newPath: string;\n\n // If the key needs brackets (special characters), don't add a dot before brackets\n if (formattedKey.startsWith('[')) {\n newPath = currentPath ? `${currentPath}${formattedKey}` : formattedKey;\n } else {\n newPath = currentPath ? `${currentPath}.${formattedKey}` : formattedKey;\n }\n\n // Apply filter if provided\n if (!filter || filter(newPath, current[key])) {\n paths.push(newPath);\n }\n \n traverse(current[key], newPath, visited);\n });\n }\n };\n\n traverse(obj, '', new Set());\n return paths;\n };\n\n /**\n * 스크립트에서 사용되는 변수 경로들을 감지합니다.\n * 프록시를 사용하여 스크립트 실행 중 접근되는 모든 속성 경로를 추적합니다.\n * \n * @param script 분석할 JavaScript 스크립트 문자열\n * @param options 감지 옵션\n * @param options.excludeThis true일 경우 'this' 키워드를 결과에서 제외\n * @returns 스크립트에서 사용된 변수 경로들의 Set\n */\n export const detectPathFromScript = (script: string, options?: { excludeThis?: boolean }): Set<string> => {\n const usingVars = new Set<string>();\n\n class GetDetectProxy implements ProxyHandler<any> {\n public usingVars = usingVars;\n\n constructor(public prefix?: string) {}\n\n set(target: any, p: string | symbol, value: any, receiver: any): boolean {\n return true;\n }\n\n get(target: any, p: string | symbol, receiver: any): any {\n // Symbol 속성들은 무시 (toString, valueOf 등)\n if (typeof p === 'symbol') {\n return this.createSafeProxy(this.prefix);\n }\n\n let items: string | undefined;\n const propStr = String(p);\n \n // 숫자 인덱스 처리\n if (!isNaN(Number(propStr))) {\n items = this.prefix ? `${this.prefix}[${propStr}]` : propStr;\n } \n // 일반 속성 처리\n else {\n items = this.prefix ? `${this.prefix}.${propStr}` : propStr;\n }\n \n // 유효한 변수 경로만 추가\n if (items) {\n this.usingVars.add(items);\n }\n \n return this.createSafeProxy(items);\n }\n\n apply(target: any, thisArg: any, argArray?: any): any {\n // 함수 호출 시에도 안전한 프록시 반환 (체이닝 가능)\n return this.createSafeProxy(this.prefix);\n }\n\n\n\n private createSafeProxy(prefix?: string): any {\n const dummyFunction = () => {};\n const handler = new GetDetectProxy(prefix);\n \n return new Proxy(dummyFunction, {\n get: (target, prop, receiver) => {\n if (prop === Symbol.toPrimitive) {\n return () => '';\n }\n if (prop === 'valueOf') {\n return () => handler.createSafeProxy(prefix);\n }\n if (prop === 'toString') {\n return () => '';\n }\n return handler.get(target, prop, receiver);\n },\n set: handler.set.bind(handler),\n apply: handler.apply.bind(handler)\n });\n }\n }\n\n // 전역 변수들을 안전하게 처리하기 위한 컨텍스트 생성\n const globalContext = {\n window: new Proxy(() => {}, new GetDetectProxy('window')),\n document: new Proxy(() => {}, new GetDetectProxy('document')),\n console: new Proxy(() => {}, new GetDetectProxy('console')),\n // this는 destUser 자체가 됨\n };\n\n const destUser = new Proxy(() => {}, new GetDetectProxy('this'));\n\n try {\n // 전역 컨텍스트와 함께 실행\n const func = new Function('window', 'document', 'console', `\"use strict\"; ${script}; `);\n func.call(destUser, globalContext.window, globalContext.document, globalContext.console);\n } catch (e) {\n console.error('detectPathFromScript error:', e);\n }\n\n // excludeThis 옵션이 true면 'this'로 시작하는 경로에서 'this' 제거\n if (options?.excludeThis) {\n const filteredVars = new Set<string>();\n usingVars.forEach(path => {\n if (path === 'this') {\n // 'this' 자체는 제외\n return;\n } else if (path.startsWith('this.')) {\n // 'this.'로 시작하는 경우 'this.' 부분 제거\n filteredVars.add(path.substring(5));\n } else {\n // 그 외는 그대로 추가\n filteredVars.add(path);\n }\n });\n return filteredVars;\n }\n \n return usingVars;\n };\n }\n\n export const toDeleteKey = (obj: any, keys: (null | string)[]) => {\n const target = { ...obj };\n ObjectUtils.deleteKey(target, keys);\n return target;\n }\n export const deleteKey = (obj: any, keys: (null | string)[]) => {\n keys.filter(it => isDefined(it)).forEach(it => {\n delete obj[it];\n })\n }\n\n export namespace Script {\n /**\n * JavaScript 스크립트를 실행하고 결과를 반환합니다.\n * \n * @param script 실행할 스크립트 문자열 또는 {bodyScript, returnScript} 객체\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과\n */\n export const evaluateReturn = <T = any>(script: string | { bodyScript: string, returnScript: string }, thisTarget: any = {}): T => {\n let bodyScript = '';\n let returnScript = '';\n if (typeof script === 'object') {\n bodyScript = script.bodyScript;\n returnScript = script.returnScript;\n } else {\n returnScript = script;\n }\n return evaluate(`${bodyScript}; return ${returnScript} `, thisTarget) as T;\n };\n\n /**\n * JavaScript 스크립트를 안전하게 실행합니다.\n * \n * @param script 실행할 스크립트 문자열\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과 또는 undefined (에러 시)\n */\n // @ts-ignore\n export const evaluate = <T = any>(script: string, thisTarget: any = {}): T | undefined => {\n try {\n return Function(`\"use strict\"; ${script} `).bind(thisTarget)() as T;\n } catch (e) {\n console.error('eval error', e);\n console.error(script);\n return undefined;\n }\n };\n }\n\n}", "import { ValidUtils } from '../valid/ValidUtils';\nimport { FieldType, FilterTuple } from '../types';\nimport { Point2D } from '../entity/Point2D';\nimport { Point3D } from '../entity/Point3D';\nimport { Rect } from '../entity/Rect';\nimport { ObjectUtils } from '../object/ObjectUtils';\nimport { IOS3166_1_Code } from '../code/IOS3166_1';\n\nexport namespace ConvertUtils {\n export type RGBA = { r?: number, g?: number, b?: number, a?: number };\n export type MinMaxCenterAvgDiff<T> = { min: T, max: T, center: T, avg: T };\n export type ToURLSearchParamsParams = { [key: string]: any } | URLSearchParams | [string, unknown][] | string;\n export const objToGetURL = (obj: any): string => {\n return Object.keys(obj).reduce((prev, key, i) => (\n `${prev}${i !== 0 ? '&' : ''}${key}=${obj[key]}`\n ), '');\n };\n\n export const mapToJson = (map: Map<string, any>): string => {\n return JSON.stringify(\n Array.from(\n map.entries()\n ).reduce((o: any, [key, value]) => {\n o[key] = value;\n return o;\n }, {}));\n };\n\n export const jsonToMap = (jsonStr: any): Map<string, string> => {\n return new Map(JSON.parse(jsonStr));\n };\n\n\n export const decodeURIString = (data: string) => {\n return decodeURIComponent(data);\n }\n\n export const objToStrMap = (obj: any): Map<string, string> => {\n const strMap = new Map();\n for (const k of Object.keys(obj)) {\n strMap.set(k, obj[k]);\n }\n return strMap;\n };\n\n export const jsonToStrMap = (jsonStr: string) => {\n return ConvertUtils.objToStrMap(JSON.parse(jsonStr));\n };\n\n export const strToObject = (message: string): any => {\n return JSON.parse(message);\n };\n\n export const objToJson = (obj: any): string => {\n return JSON.stringify(obj);\n };\n\n export const objToMap = (obj: any): Map<string, any> => {\n const mp = new Map<string, any>();\n Object.keys(obj).forEach((k) => {\n mp.set(k, obj[k]);\n });\n return mp;\n };\n\n export const mapToObj = (map: Map<string, any>): any => {\n const obj = {} as any;\n map.forEach((v, k) => {\n obj[k] = v;\n });\n return obj;\n };\n\n export const snakeToCamelCase = (str: string): string => {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n }\n export const camelToSnakeCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();\n };\n\n export function toFormData (obj: any) {\n const formData = new FormData();\n for (const key in obj)\n formData.append(key, obj[key]);\n return formData;\n }\n\n export function toObject<T>(obj: URLSearchParams, config: { firstValue: true }): FieldType<T, string>;\n export function toObject(obj: URLSearchParams): { [key: string]: string | string[] };\n export function toObject<T>(obj: FormData): T;\n export function toObject<T>(obj: [string, unknown][]): T;\n export function toObject<T>(obj: Iterable<any>): T;\n export function toObject(obj: any): any;\n export function toObject(obj: URLSearchParams | FormData |any, config?: { firstValue: boolean }): any {\n if (obj instanceof URLSearchParams) {\n const robj = {} as any;\n obj.forEach((v, k) => {\n if (config?.firstValue && robj[k] === undefined) {\n robj[k] = v;\n } else if (!config?.firstValue) {\n if (robj[k]) {\n if (Array.isArray(robj[k])) {\n robj[k].push(v);\n } else {\n robj[k] = [robj[k], v];\n }\n } else {\n robj[k] = v;\n }\n }\n })\n return robj;\n } else if(obj instanceof FormData) {\n // new Map().entries()\n // Object.entries({})\n // obj = Object.fromEntries(obj.entries());\n const formDataToObject = (formData: any) => {\n const obj: any = {};\n // FormData\uC758 \uBAA8\uB4E0 \uD0A4\uB97C \uC21C\uD68C\n for (const key of formData.keys()) {\n const values = formData.getAll(key); // \uB3D9\uC77C \uD0A4\uC758 \uBAA8\uB4E0 \uAC12 \uAC00\uC838\uC624\uAE30\n // \uAC12\uC774 \uD558\uB098\uBA74 \uB2E8\uC77C \uAC12\uC73C\uB85C, \uC5EC\uB7EC \uAC1C\uBA74 \uBC30\uC5F4\uB85C \uC800\uC7A5\n obj[key] = values.length > 1 ? values : values[0];\n }\n return obj;\n }\n return formDataToObject(obj);\n } else if (obj && typeof obj[Symbol.iterator] === 'function') {\n return Object.fromEntries(obj);\n } else if (Array.isArray(obj)) {\n return Object.fromEntries(obj);\n }else {\n // console.log(Object.prototype.toString.call(obj));\n if (ValidUtils.isMap(obj)) {\n const map = obj as Map<string, any>;\n obj = ConvertUtils.mapToObj(map);\n }\n if (ValidUtils.isArray(obj)) {\n const arr = obj as any[];\n for (let i = 0; i < arr.length; i++) {\n arr[i] = ConvertUtils.toObject(arr[i]);\n }\n }\n\n if (ValidUtils.isObject(obj)) {\n for (const property in obj) {\n obj[property] = ConvertUtils.toObject(obj[property]);\n }\n }\n\n return obj;\n }\n };\n\n export const toArray = <T>(data?: T | T[] | Set<T>): T[] => {\n if (data instanceof Set) {\n return Array.from(data.values());\n }\n\n const datas = (Array.isArray(data) ? data : (data ? [data] : []));\n return datas;\n }\n export const flatArray = <T>(...data: (T | Iterable<T>)[]): T[] => {\n const datas = data.flatMap<T>((item) => (item instanceof Object && Symbol.iterator in item ? Array.from(item) : [item]));\n return datas;\n };\n\n export const iteratorToArray = <T>(it: any): T[] => {\n return Array.from(it) as T[];\n };\n\n export const toJson = (obj: any): string => {\n const at = ConvertUtils.toObject(obj);\n return JSON.stringify(at);\n };\n\n export const concatenateToAttribute = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', ' ', '\\'');\n };\n\n export const concatenateToParameter = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', '&', '');\n };\n\n export const concatenateToString = (object_o: any, unionString_s = '=', spilString_s = ' ', pairString_s = '') => {\n const results: any[] = [];\n for (const property in object_o) {\n const value = object_o[property];\n if (value) {\n results.push(property.toString() + unionString_s + pairString_s + value + pairString_s);\n }\n }\n\n return results.join(spilString_s);\n };\n\n export const specialCharsToEscape = (data: string): string => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n };\n\n export const decodeHTMLEscape = (data: string): string => {\n // HTML \uC5D4\uD2F0\uD2F0 \uC774\uC2A4\uCF00\uC774\uD504\uB97C \uB514\uCF54\uB4DC\uD569\uB2C8\uB2E4.\n return data.replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&#x2F;/g, '/');\n }\n\n export const copyObject = <T extends Record<string, any>>(obj: T, update: Partial<T> = {}): T => {\n return {...obj, ...update};\n };\n\n export const copyArrayWithAddition = <T extends unknown[]>(arr: FilterTuple<T>, update?: T): T => {\n return [...arr, ...(update || [])] as T;\n };\n\n export const hexToInt = (hex: string): number => {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n if (hex.length === 3) {\n hex = hex.split('').map((c) => c + c).join('');\n }\n return parseInt(hex, 16);\n };\n\n\n // export const toHex = (val: number): string => {\n // const hex = Math.floor(val).toString(16).toUpperCase();\n // return (hex.length === 1 ? '0' + hex : hex);\n // };\n\n export const toHex = (num: number): string => {\n if (num < 0) {\n num = 0xFFFFFFFF + num + 1;\n }\n num = Number(num.toFixed(0));\n return num.toString(16).padStart(2, '0').toUpperCase();\n };\n\n export const toHexColor = (rgba: RGBA): string => {\n const r = ConvertUtils.toHex(rgba.r ?? 0);\n const g = ConvertUtils.toHex(rgba.g ?? 0);\n const b = ConvertUtils.toHex(rgba.b ?? 0);\n const a = ConvertUtils.toHex(rgba.a ?? 255);\n return `#${r}${g}${b}${a}`;\n };\n\n export const avgColor = (color: RGBA[]): RGBA => {\n const sum = color.reduce((acc: Required<RGBA>, c) => {\n acc.r += c.r ?? 0;\n acc.g += c.g ?? 0;\n acc.b += c.b ?? 0;\n acc.a += c.a ?? 0;\n return acc;\n }, {r: 0, g: 0, b: 0, a: 0}) as Required<RGBA>;\n const avg = {r: Math.floor(sum.r / color.length), g: Math.floor(sum.g / color.length), b: Math.floor(sum.b / color.length), a: Math.floor(sum.a / color.length)};\n return avg;\n };\n\n export const toRGBA = (hex?: string | null): RGBA => {\n hex ??= '#000000FF';\n const hexColor = hex.replace('#', '');\n const r = parseInt(hexColor.slice(0, 2) || '0', 16);\n const g = parseInt(hexColor.slice(2, 4) || '0', 16);\n const b = parseInt(hexColor.slice(4, 6) || '0', 16);\n const a = hexColor.length > 6 ? parseInt(hexColor.slice(6, 8) || '0', 16) : 255;\n return {r, g, b, a};\n };\n\n export const minMaxCenterAvg = <T extends { [key: string]: number }>(obj: T[]): { [key in keyof T]?: MinMaxCenterAvgDiff<number> & {diff: number} } => {\n const result: { [key in keyof T]: { min: number, max: number, center: number, diff: number, avg: number } } = {} as any;\n\n const allKeys = ObjectUtils.uniqueKeys(obj);\n for (const key of allKeys) {\n const values = obj.map(item => item[key]);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const center = (min + max) / 2;\n const avg = values.reduce((sum, val) => sum + val, 0) / values.length;\n\n result[key as keyof T] = {min, max, center, avg, diff: max - min};\n }\n\n return result;\n }\n\n export const minMaxCenterRectAvg2D = (point2Ds: (Point2D | { x: number, y: number })[]): MinMaxCenterAvgDiff<Point2D> & { minMaxRect: Rect } => {\n const min = new Point2D(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n const max = new Point2D(Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n let sum = new Point2D(0, 0);\n point2Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n sum.x += p.x;\n sum.y += p.y;\n });\n const center = new Point2D((min.x + max.x) / 2, (min.y + max.y) / 2);\n const avg = new Point2D(sum.x / point2Ds.length, sum.y / point2Ds.length);\n const minMaxRect = new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n return {min, max, center, avg, minMaxRect};\n };\n\n\n export const minMaxCenterAvg3D = (point3Ds: (Point3D | { x: number, y: number, z: number })[]): MinMaxCenterAvgDiff<Point3D> => {\n const min = new Point3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n const max = new Point3D(Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE);\n let sum = new Point3D(0, 0, 0);\n point3Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.max(min.z, p.z);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n max.z = Math.max(max.z, p.y);\n sum.x += p.x;\n sum.y += p.y;\n sum.z += p.z;\n });\n const center = new Point3D((min.x + max.x) / 2, (min.y + max.y) / 2, (min.z + max.z) / 2);\n const avg = new Point3D(sum.x / point3Ds.length, sum.y / point3Ds.length, sum.z / point3Ds.length);\n return {min, max, center, avg};\n };\n\n export const roundRectRadiiToFullRadii = (radii?: [number] | [number, number] | [number, number, number] | [number, number, number, number]) => {\n if (!radii) {\n return [0, 0, 0, 0];\n }\n if (radii.length === 1) {\n return [radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0];\n } else if (radii.length === 2) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[0] ?? 0, radii[1] ?? 0];\n } else if (radii.length === 3) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[2] ?? 0, radii[1] ?? 0];\n } else {\n return radii;\n }\n };\n\n\n export const toArrayDirectionChange = <T>(array: T[][]) => {\n // \uC785\uB825 \uBC30\uC5F4\uC774 \uBE44\uC5B4\uC788\uAC70\uB098 \uCCAB \uBC88\uC9F8 \uD589\uC774 \uBE44\uC5B4\uC788\uC73C\uBA74 \uBE48 \uBC30\uC5F4 \uBC18\uD658\n if (!array || array.length === 0 || !array[0] || array[0].length === 0) {\n return [];\n }\n const result: T[][] = [];\n const numCols = array[0].length; // \uAE30\uC900 \uC5F4 \uAC1C\uC218 (\uCCAB \uD589 \uAE30\uC900)\n const numRows = array.length; // \uD589 \uAC1C\uC218\n\n for (let i = 0; i < numCols; i++) {\n const newRow: T[] = [];\n for (let j = 0; j < numRows; j++) {\n // \uB9CC\uC57D jagged array \uAC00\uB2A5\uC131\uC744 \uC5C4\uACA9\uD788 \uB2E4\uB8E8\uB824\uBA74 \uC5EC\uAE30\uC11C array[j].length > i \uC778\uC9C0 \uD655\uC778 \uD544\uC694\n // \uD558\uC9C0\uB9CC T[][] \uD0C0\uC785 \uC2DC\uADF8\uB2C8\uCC98\uB294 \uBCF4\uD1B5 rectangular array\uB97C \uAE30\uB300\uD568\n newRow.push(array[j][i]);\n }\n result.push(newRow);\n }\n return result;\n }\n\n // groupBy \uD568\uC218 \uAD6C\uD604\n export const groupByMap = <T, K>(array: T[], keySelector: (item: T) => K): Map<K, T[]> => {\n return array.reduce((map, item) => {\n const key = keySelector(item);\n const group = map.get(key) || [];\n group.push(item);\n map.set(key, group);\n return map;\n }, new Map<K, T[]>());\n }\n export const groupByObject = <T, K extends string | number | symbol>(\n array: T[],\n keySelector: (item: T) => K\n ): Record<K, T[]> => {\n// groupByMap \uD638\uCD9C\n const map = groupByMap(array, keySelector);\n // Map\uC744 Record\uB85C \uBCC0\uD658\n return Object.fromEntries(map) as Record<K, T[]>;\n }\n\n\n\n export const toURLSearchParams = (data: ToURLSearchParamsParams): URLSearchParams =>{\n const searchParams = new URLSearchParams();\n if (typeof data === 'string') {\n new URLSearchParams(data).forEach((value, key) => {\n searchParams.append(key, value);\n });\n } else if (typeof data === 'object') {\n const forTarget = data instanceof URLSearchParams ? data.entries() : (Array.isArray(data) ? data : Object.entries(data));\n for (const [k, v] of Array.from(forTarget)) {\n if (Array.isArray(v)) {\n v.forEach(it => searchParams.append(k, it));\n } else {\n searchParams.append(k, v as any);\n }\n }\n }\n return searchParams;\n }\n // export const RelativeHumanReadableTimeLabels = {\n // [IOS3166_1_Code.KOR]: {\n // justNow: '\uBC29\uAE08 \uC804',\n // minutesAgo: '\uBD84 \uC804',\n // hoursAgo: '\uC2DC\uAC04 \uC804',\n // daysAgo: '\uC77C \uC804',\n // }\n //\n // }\n // export type RelativeHumanReadableTimeLabel = {\n // justNow: string,\n // minutesAgo: string,\n // hoursAgo: string,\n // daysAgo: string,\n // };\n // export type RelativeHumanReadableTimeConfig = {\n // label: RelativeHumanReadableTimeLabel;\n // }\n // export const formatRelativeHumanReadableTime = (date: Date | string | number, config: RelativeHumanReadableTimeConfig): string => {\n // if (!(date instanceof Date)) {\n // date = new Date(date);\n // }\n // const now = new Date();\n // const diffMs = now.getTime() - date.getTime();\n // const diffMinutes = Math.floor(diffMs / (1000 * 60));\n // const diffHours = Math.floor(diffMinutes / 60);\n //\n // if (diffMinutes < 1) return config.label.justNow;\n // if (diffMinutes < 60) return `${diffMinutes}${config.label.minutesAgo}`;\n // if (diffHours < 24) return `${diffHours}${}`;\n // return `${Math.floor(diffHours / 24)}\uC77C \uC804`;\n // }\n\n /**\n * \uBB38\uC790\uC5F4 JSON\uC744 \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.\n *\n * @param {string} stringJson - JSON \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4 (\uC608: \"{value: this.child.obj.name}\")\n * @return {Array<{ key: string, value: string }>} \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\n */\n export const stringJsonToKeyPairs = (stringJson: string) => {\n return Array.from(stringJson.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({key: match[1], value: match[2]}))\n }\n\n // const formDataToFormDataEntryValueObj = <T = { [key: string]: FormDataEntryValue | FormDataEntryValue[] }>(\n // data: FormData | HTMLFormElement\n // ): T => {\n // if (typeof HTMLFormElement !== 'undefined' && data instanceof HTMLFormElement) {\n // data = new FormData(data);\n // }\n // const obj: any = {};\n // data.forEach((value, key) => {\n // if (Array.isArray(obj[key])) {\n // obj[key].push(value);\n // } else if (obj[key] !== undefined || !isNaN(obj[key])) {\n // obj[key] = [obj[key], value];\n // } else {\n // obj[key] = value;\n // }\n // });\n // return obj;\n // }\n\n}\n", "export class HeaderData<T> {\n constructor(public header: { [p: string]: [string] }, public data: T) {\n }\n}", "import fs from 'fs';\nimport path from 'path';\nimport mime from 'mime-types';\nimport { RequestResponse } from '../RequestResponse';\nimport { HttpStatus } from '../../codes/HttpStatus';\nimport { HttpHeaders } from '../../codes/HttpHeaders';\n\nexport class Resource {\n constructor(public path: string | RequestResponse | URL, public rootPath = process.cwd()) {\n }\n\n get absolutePath(): string {\n if (this.path instanceof RequestResponse) {\n return path.join(this.rootPath, this.path.reqUrlObj().pathname);\n } else if (this.path instanceof URL) {\n return path.join(this.rootPath, this.path.pathname);\n } else {\n return path.join(this.rootPath, this.path);\n }\n }\n\n get conTentType(): string {\n return mime.lookup(this.absolutePath).toString();\n }\n\n get data(): Promise<string> {\n const promise = new Promise<string>((resolve, reject) => {\n fs.readFile('', (error, fileBuffer) => {\n if (error) {\n reject(error);\n }\n const fileContent = fileBuffer.toString();\n resolve(fileContent);\n });\n });\n return promise;\n }\n\n async write(rr: RequestResponse) {\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, this.conTentType);\n await rr.resEnd(fs.readFileSync(this.absolutePath));\n }\n}", "import {MultipartData} from '../MultipartData';\n\nexport class ReqMultipartFormBody {\n constructor(public field: MultipartData[] = []) {\n }\n}", "import jsonpatch, { Operation as JsonOperation } from 'fast-json-patch';\n// export enum OP {\n// test = 'test',\n// remove = 'remove',\n// add = 'add',\n// replace = 'replace',\n// move = 'move',\n// copy = 'copy',\n//\n// }\n// export type RequestPatchBody = {\n// op: OP;\n// path?: string;\n// from?: string;\n// value?: string | any[] | any;\n// }\nexport type Operation = JsonOperation;\nexport class PatchJson {\n constructor(private patch: Operation[]) {\n }\n\n apply(obj: any) {\n obj = jsonpatch.applyPatch(obj, this.patch).newDocument;\n return obj;\n // switch (this.body.op) {\n // case OP.test:\n // return obj[this.body.path!] === this.body.value;\n // case OP.remove:\n // delete obj[this.body.path!];\n // return true;\n // case OP.add:\n // obj[this.body.path!] = this.body.value;\n // return true;\n // case OP.replace:\n // obj[this.body.path!] = this.body.value;\n // return true;\n // case OP.move:\n // obj[this.body.path!] = obj[this.body.from!];\n // delete obj[this.body.from!];\n // return true;\n // case OP.copy:\n // obj[this.body.path!] = obj[this.body.from!];\n // return true;\n // }\n }\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport { SimConfigUsing } from './decorators/SimDecorator';\nimport { Storage } from '@dooboostore/core/storage/Storage';\nimport { CacheStorage } from './decorators/cache/CacheDecorator';\n\nexport type ProxyHandlerType = { onAfterProxy: <T>(it: T) => T };\nexport type InitOptionType = {\n rootRouter?: ConstructorType<any>,\n container?: string,\n excludeSim?: (ConstructorType<any> | Function)[],\n advice?: ConstructorType<any>[],\n proxy?: ProxyHandlerType,\n using?: SimConfigUsing,\n cache?: CacheConfig,\n};\ntype CacheConfig = {\n ms?: number;\n storage?: CacheStorage;\n enable?: boolean;\n};\n\nexport class SimOption {\n public rootRouter?: ConstructorType<any>\n public container?: string;\n public advice: ConstructorType<any>[];\n public proxy?: ProxyHandlerType;\n // public excludeSim: ((ConstructorType<any> | Function)[]) | ((type: (ConstructorType<any> | Function)) => boolean);\n public using?: SimConfigUsing;\n public cache?: CacheConfig\n\n constructor({rootRouter, container, cache, advice = [], proxy, using}: InitOptionType = {}) {\n this.rootRouter = rootRouter;\n this.container = container;\n this.advice = advice;\n // this.excludeSim = excludeSim;\n this.proxy = proxy;\n this.using = using;\n this.cache = cache;\n }\n\n addAdvicce(advice: ConstructorType<any>) {\n this.advice??= [];\n this.advice.push(advice);\n }\n\n setAdvice(...advice: ConstructorType<any>[]): SimOption {\n this.advice = advice;\n return this;\n }\n}\n", "import { InitOptionType, SimOption } from '@dooboostore/simple-boot/SimOption';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { Server as HttpServer, ServerOptions } from 'http';\nimport { Server as HttpsServer, ServerOptions as HttpsServerOption } from 'https';\nimport { Filter } from '../filters/Filter';\nimport { EndPoint } from '../endpoints/EndPoint';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { TransactionManager } from '@dooboostore/core/transaction/TransactionManager';\n\nexport type Listen = { port?: number, hostname?: string, backlog?: number, listeningListener?: (server: SimpleBootHttpServer, httpServer: HttpServer | HttpsServer) => void };\n\nexport interface ListenData extends Listen {\n port: number;\n hostname: string;\n}\n\nexport class HttpServerOption extends SimOption {\n public static readonly DEFAULT_PORT = 8081;\n public static readonly DEFAULT_HOSTNAME = '127.0.0.1';\n public serverOption?: ServerOptions | HttpsServerOption;\n public listen: ListenData;\n public filters?: (Filter | ConstructorType<Filter>)[];\n public fileUploadTempPath?: string;\n public requestEndPoints?: (EndPoint | ConstructorType<EndPoint>)[];\n public closeEndPoints?: (EndPoint | ConstructorType<EndPoint>)[];\n public errorEndPoints?: (EndPoint | ConstructorType<EndPoint>)[];\n public sessionOption: { key: string, expiredTime: number, provider?: { uuids: () => Promise<string[]>, delete: (uuid: string) => Promise<void>, get: (uuid: string) => Promise<{ access: number, data?: any }>, set: (uuid: string, data: { access: number, data?: any }) => Promise<void> } };\n public globalAdvice?: any | ConstructorType<any>;\n public noSuchRouteEndPointMappingThrow?: (rr: RequestResponse) => any;\n public transactionManagerFactory?: () => TransactionManager;\n\n constructor({serverOption, listen, filters, requestEndPoints, closeEndPoints, errorEndPoints, sessionOption, globalAdvice, fileUploadTempPath,noSuchRouteEndPointMappingThrow, transactionManagerFactory}: {\n serverOption?: ServerOptions | HttpsServerOption,\n listen?: Listen,\n filters?: (Filter | ConstructorType<Filter>)[],\n requestEndPoints?: (EndPoint | ConstructorType<EndPoint>)[],\n closeEndPoints?: (EndPoint | ConstructorType<EndPoint>)[],\n errorEndPoints?: (EndPoint | ConstructorType<EndPoint>)[],\n sessionOption?: { key?: string, expiredTime?: number, provider?: { uuids: () => Promise<string[]>, delete: (uuid: string) => Promise<void>, get: (uuid: string) => Promise<{ access: number, data?: any }>, set: (uuid: string, data: { access: number, data?: any }) => Promise<void> } },\n globalAdvice?: any | ConstructorType<any>,\n fileUploadTempPath?: string,\n noSuchRouteEndPointMappingThrow?: (rr: RequestResponse) => any,\n transactionManagerFactory?: () => TransactionManager\n } = {}, initSimOption?: InitOptionType) {\n super(initSimOption);\n this.serverOption = serverOption;\n this.listen = Object.assign({port: HttpServerOption.DEFAULT_PORT, hostname: HttpServerOption.DEFAULT_HOSTNAME}, listen);\n this.filters = filters;\n this.requestEndPoints = requestEndPoints;\n this.closeEndPoints = closeEndPoints;\n this.errorEndPoints = errorEndPoints;\n this.sessionOption = Object.assign({key: 'SBSESSIONID', expiredTime: 1000 * 60 * 30}, sessionOption);\n this.globalAdvice = globalAdvice;\n this.fileUploadTempPath=fileUploadTempPath;\n this.noSuchRouteEndPointMappingThrow = noSuchRouteEndPointMappingThrow;\n this.transactionManagerFactory = transactionManagerFactory;\n }\n\n get hostname() {\n return this.listen.hostname;\n }\n\n get port() {\n return this.listen.port;\n }\n\n get protocol() {\n return this.isSecure ? 'https' : 'http';\n }\n\n get address() {\n return `${this.protocol}://${this.hostname}:${this.port}`;\n }\n\n get isSecure() {\n return this.serverOption && 'key' in this.serverOption && 'cert' in this.serverOption;\n }\n \n \n}\n", "import { ConstructorType, GenericClassDecorator } from '@dooboostore/core/types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { SimpleApplication } from '../SimpleApplication';\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\n\nexport enum Lifecycle {\n /**\n * The default registration scope, Each resolve will return the same instance (including resolves from child containers)\n */\n Singleton = 'Singleton',\n /**\n * a new instance will be created with each resolve\n */\n Transient = 'Transient'\n}\n\nexport const sims = new Map<ConstructorType<any> | Function, Set<ConstructorType<any> | Function | any>>();\nexport const containers = new Set<SimpleApplication>();\n\n\nexport type SimConfigProxy = ((ProxyHandler<any> | ConstructorType<any> | Function)) | (ProxyHandler<any> | ConstructorType<any> | Function)[];\nexport type SimConfigUsing = (ConstructorType<any> | Function | object) | ((ConstructorType<any> | Function | object)[]);\n\nexport interface SimConfig {\n symbol?: Symbol | (Symbol[]);\n scheme?: string | (string[]);\n scope?: Lifecycle;\n container?: string | (string[]);\n autoCreate?: boolean;\n proxy?: SimConfigProxy;\n type?: (ConstructorType<any> | Function) | (ConstructorType<any> | Function)[];\n using?: SimConfigUsing;\n}\n\nexport const SimMetadataKey = Symbol('Sim');\n\nconst isNotNullObjetInstance = (target: any) => target != null && target !== undefined && typeof target === 'object';\n\nexport const simProcess = (config: SimConfig, inputTarget: ConstructorType<any> | Function | any) => {\n // default setting\n /*\n // Sim({symbol: TTSymbol, scope: Lifecycle.Transient})(function (){\n // console.log('new TT')\n // return {a: 'name'}\n // })\n // Sim({symbol: TTSymbol, scope: Lifecycle.Transient})(() =>{\n // console.log('new TT')\n // return {a: 'name'}\n // })\n Sim({symbol: TTSymbol, scope: Lifecycle.Transient})({a: 'name'})\n */\n const target = (() => {\n if (typeof inputTarget === 'object') {\n return config.scope === Lifecycle.Singleton ? inputTarget : (ValidUtils.isPlainObject(inputTarget) ? { ...inputTarget }: inputTarget);\n }\n if (ValidUtils.isArrowFunction(inputTarget)) {\n return () => (inputTarget as Function)();\n }\n return inputTarget;\n })();\n\n\n\n\n let targetType: ConstructorType<any> | Function;\n if (isNotNullObjetInstance(target)) {\n targetType = target.constructor;\n } else {\n targetType = target;\n }\n config.scope = config?.scope ?? Lifecycle.Singleton;\n ReflectUtils.defineMetadata(SimMetadataKey, config, targetType);\n const adding = (targetKey: ConstructorType<any> | Function, target: ConstructorType<any> | Function | any = targetKey) => {\n const items = sims.get(targetKey) ?? new Set<ConstructorType<any> | Function | any>();\n items.add(target);\n sims.set(targetKey, items);\n }\n\n\n if (Array.isArray(config?.type)) {\n config?.type.forEach(it => {\n adding(it, target);\n })\n } else if (config.type) {\n adding(config?.type, target);\n } else {\n adding(target)\n }\n // adding(targetType)\n // console.log('----------->', sims)\n}\n// const a = Math.random()+Date.now();\nexport function Sim(target: ConstructorType<any> | Function): void;\nexport function Sim(config: SimConfig): GenericClassDecorator<ConstructorType<any> | Function | any>;\nexport function Sim(configOrTarget: SimConfig | ConstructorType<any> | Function): void | GenericClassDecorator<ConstructorType<any> | Function | any> {\n // console.log('ssssssssssssssssssssssss', configOrTarget, typeof configOrTarget === 'function');\n // console.group('sim')\n // sims.forEach((v,k) => {\n // console.log('sssss->', v, k)\n // })\n // console.groupEnd()\n if (typeof configOrTarget === 'function') {\n simProcess({}, configOrTarget);\n // console.log('---!', Reflect.getMetadata('design:paramtypes', configOrTarget))\n } else {\n return (target: ConstructorType<any> | Function | any) => {\n simProcess(configOrTarget, target);\n }\n }\n}\n\nexport const getSim = (target: ConstructorType<any> | Function | any): SimConfig | undefined => {\n if (target != null && target !== undefined && typeof target === 'object') {\n target = target.constructor;\n }\n try {\n return ReflectUtils.getMetadata(SimMetadataKey, target);\n } catch (e) {\n }\n}\n\nconst PostConstructMetadataKey = Symbol('PostConstruct');\nexport type PostConstructMetaType = {property: string};\nconst postConstructProcess = (target: any, config: PostConstructMetaType) => {\n const metas = getPostConstructs(target) ?? [];\n metas.push(config);\n ReflectUtils.defineMetadata(PostConstructMetadataKey, metas, target);\n}\nexport const PostConstruct = (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n postConstructProcess(target, {property: propertyKey});\n}\nexport const getPostConstructs = (target: any): PostConstructMetaType[] => {\n return ReflectUtils.getMetadata(PostConstructMetadataKey, target) ?? [];\n}\n", "import { Resolver } from './Resolver';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { Resource } from '../models/datas/Resource';\nimport { Sim } from '@dooboostore/simple-boot/decorators/SimDecorator';\n\n@Sim\nexport class ResourceResolver implements Resolver {\n resolve(data: string | undefined, rr: RequestResponse): Promise<void> {\n return new Resource(data ?? rr).write(rr);\n }\n}", "import {RandomUtils} from '@dooboostore/core/random/RandomUtils'\nimport {HttpServerOption} from '../option/HttpServerOption';\nimport {RequestResponse} from '../models/RequestResponse';\n\nexport class SessionManager {\n private sessions = new Map<string, { access: number, data?: any }>();\n public sessionOption: { key: string; expiredTime: number, provider?: {uuids: () => Promise<string[]>, delete: (uuid: string) => Promise<void>, get: (uuid: string) => Promise<{ access: number, data?: any }>, set: (uuid: string, data: { access: number, data?: any }) => Promise<void>} };\n\n constructor(private option: HttpServerOption) {\n this.sessionOption = option.sessionOption;\n setInterval(async () => {\n const uuids = (await this.getSessionUUIDs());\n for (const uuid of uuids) {\n const dataSet = await this.getSessionDataSet(uuid);\n if (dataSet && this.isExpired(dataSet.access)) {\n await this.deleteSession(uuid);\n }\n }\n }, this.sessionOption.expiredTime);\n }\n\n async getSessionUUIDs() {\n if (this.sessionOption.provider?.uuids) {\n return this.sessionOption.provider.uuids();\n } else {\n return Array.from(this.sessions.keys());\n }\n }\n\n async deleteSession(uuid: string) {\n if (this.sessionOption.provider?.delete) {\n this.sessionOption.provider.delete(uuid);\n } else {\n this.sessions.delete(uuid);\n }\n }\n\n async getSessionDataSet(uuid: string) {\n if (this.sessionOption.provider?.get) {\n return this.sessionOption.provider.get(uuid);\n } else {\n return this.sessions.get(uuid);\n }\n }\n\n async setSessionDataSet(uuid: string, dataSet: { access: number, data?: any }) {\n if (this.sessionOption.provider?.set) {\n this.sessionOption.provider.set(uuid, dataSet);\n } else {\n this.sessions.set(uuid, dataSet);\n }\n }\n\n isExpired(access: number, now: number = Date.now()) {\n return (now - access) >= this.option.sessionOption.expiredTime;\n }\n\n makeUUID() {\n return RandomUtils.uuid('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');\n }\n\n async session(): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(uuid: string): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(rr: RequestResponse): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(rrOrUUID?: string | RequestResponse): Promise<{ uuid: string, dataSet: { access: number, data?: any } } >{\n let uuid: string;\n if (rrOrUUID instanceof RequestResponse) {\n uuid = rrOrUUID.reqCookieGet(this.sessionOption.key) ?? this.makeUUID();\n } else if (typeof rrOrUUID === 'string') {\n uuid = rrOrUUID;\n } else {\n uuid = this.makeUUID()\n }\n let dataSet = await this.getSessionDataSet(uuid);\n const now = Date.now();\n if (dataSet) {\n if (this.isExpired(dataSet.access, now)) {\n delete dataSet.data;\n }\n dataSet.access = now;\n } else {\n dataSet = {\n access: now\n }\n }\n await this.setSessionDataSet(uuid, dataSet);\n return {uuid, dataSet};\n }\n}", "export class SimError {\n message?: string;\n name?: string;\n stack?: string;\n\n constructor(message?: string, name?: string, stack?: string) {\n this.message = message;\n this.name = name;\n this.stack = stack;\n }\n}\n", "import {SimError} from './SimError';\n\nexport class SimNoSuch extends SimError {\n constructor(message?: string, name?: string, stack?: string) {\n super(message, name, stack);\n }\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport { SimConfig, SimMetadataKey } from '../decorators/SimDecorator';\nimport { Carrier, SimstanceManager } from './SimstanceManager';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport class SimAtomic<T = object> {\n private value?: T | undefined;\n constructor(public type:{targetKeyType: ConstructorType<T> | Function, originalType: ConstructorType<T> | Function, value?: T}, private simstanceManager: SimstanceManager, private config?: {optional?: boolean}) {\n this.value = type.value;\n }\n\n getConfig(): SimConfig | undefined;\n getConfig<C = any>(key: symbol): C | undefined;\n getConfig<C = any>(key: symbol = SimMetadataKey): C | undefined {\n return ReflectUtils.getMetadata(key, this.type.originalType);\n }\n\n getConfigs() {\n return ReflectUtils.getMetadatas(this.type.originalType);\n }\n\n getValue(config?: {newInstanceCarrier?: Carrier, refresh?: boolean}): T | undefined {\n if (config?.refresh) {\n this.value = undefined;\n }\n // console.log('------value?', this.type, this.simstanceManager.storage)\n // return this.simstanceManager.getOrNewSim({target:this.type, newInstanceCarrier: config?.newInstanceCarrier});\n if (!this.value) {\n this.value = this.simstanceManager.getOrNewSim({target: this.type.targetKeyType, originTypeTarget: this.type.originalType, newInstanceCarrier: config?.newInstanceCarrier});\n // const findFirstSim = this.simstanceManager.findFirstSim({type: this.type});\n // if (findFirstSim) {\n // this.value = findFirstSim.getValue(config);\n // } else {\n // this.value = this.simstanceManager.getOrNewSim({target: this.type, newInstanceCarrier: config?.newInstanceCarrier});\n // }\n }\n return this.value;\n // const types = ConvertUtils.flatArray(this.getConfig()?.type);\n // types.push(this.type);\n // for (const typeElement of types) {\n // const instance = this.simstanceManager.getOrNewSim(typeElement, this.type);\n // if (instance) {\n // return instance;\n // }\n // }\n }\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport {MethodParameter} from '../../types/Types'\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {ExceptionHandlerSituationType} from '../exception/ExceptionDecorator';\n\nexport enum InjectSituationType {\n INDEX = 'SIMPLE_BOOT_CORE://Inject/INDEX',\n}\n\nexport type SituationType = string | Symbol | ConstructorType<any> | InjectSituationType | ExceptionHandlerSituationType;\n\nexport class SituationTypeContainer {\n public situationType: SituationType;\n public data: any;\n public index?: number;\n\n constructor({situationType, data, index}: { situationType: SituationType, data: any, index?: number }) {\n this.situationType = situationType;\n this.data = data;\n this.index = index;\n }\n}\n\nexport class SituationTypeContainers {\n public containers: SituationTypeContainer[] = [];\n\n constructor(containers?: SituationTypeContainer[]) {\n if (containers) {\n this.containers.push(...containers);\n }\n }\n\n public push(...item: SituationTypeContainer[]) {\n this.containers.push(...item)\n }\n\n get length() {\n return this.containers.length;\n }\n\n find(predicate: (value: SituationTypeContainer, index: number, obj: SituationTypeContainer[]) => unknown, thisArg?: any): SituationTypeContainer | undefined {\n return this.containers.find(predicate);\n }\n}\n\nexport type InjectConfig = {\n scheme?: string;\n symbol?: Symbol;\n type?: ConstructorType<any>;\n situationType?: SituationType;\n argument?: any;\n applyProxy?: { type: ConstructorType<ProxyHandler<any>>, param?: any[] };\n optional?: boolean;\n disabled?: boolean;\n}\n\nexport type SaveInjectConfig = {\n index: number;\n type?: ConstructorType<any>;\n propertyKey?: string | symbol;\n config: InjectConfig;\n}\n\nconst InjectMetadataKey = Symbol('Inject');\nconst injectProcess = (config: InjectConfig, target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n if (propertyKey && typeof target === 'object') { // <-- object: method\n const otarget = target;\n target = target.constructor;\n const saves = (Reflect.getOwnMetadata(InjectMetadataKey, target, propertyKey) || []) as SaveInjectConfig[];\n const type = ReflectUtils.getParameterTypes(otarget, propertyKey)[parameterIndex];\n saves.push({index: parameterIndex, config: config, propertyKey, type});\n ReflectUtils.defineMetadata(InjectMetadataKey, saves, target, propertyKey);\n } else if (!propertyKey || typeof target === 'function') { // <-- function: constructor\n const existingInjectdParameters = (ReflectUtils.getMetadata(InjectMetadataKey, target) || []) as SaveInjectConfig[]\n const type = ReflectUtils.getParameterTypes(target)[parameterIndex];\n existingInjectdParameters.push({index: parameterIndex, config: config, type});\n ReflectUtils.defineMetadata(InjectMetadataKey, existingInjectdParameters, target);\n }\n}\nexport function Inject(target: Object, propertyKey: string | symbol | undefined, parameterIndex: number): void;\nexport function Inject(config: InjectConfig): ParameterDecorator;\nexport function Inject(configOrTarget: Object | InjectConfig, propertyKey?: string | symbol | undefined, parameterIndex?: number): void | ParameterDecorator {\n if (propertyKey && parameterIndex !== undefined) {\n injectProcess({}, configOrTarget, propertyKey, parameterIndex);\n } else {\n return (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n injectProcess(configOrTarget, target, propertyKey, parameterIndex);\n }\n }\n}\n\nexport const getInject = (target: ConstructorType<any> | Function | any, propertyKey?: string | symbol): SaveInjectConfig[] => {\n if (target != null && target !== undefined && typeof target === 'object') {\n target = target.constructor;\n }\n if (propertyKey) {\n const parameters: SaveInjectConfig[] = Reflect.getOwnMetadata(InjectMetadataKey, target, propertyKey);\n return parameters;\n } else {\n return ReflectUtils.getMetadata(InjectMetadataKey, target)??[];\n }\n}\n", "export class MetaDataAtomic<T = any, M = any> {\n constructor(public target: T, public metaData: M) {\n }\n}\n\nexport class MetaDataPropertyAtomic<T = any, M = any> extends MetaDataAtomic<T, M> {\n constructor(target: T, metaData: M, public property: string, public parameter?: any) {\n super(target, metaData)\n }\n\n public call(...parameter: any) {\n return (this.target as any)[this.property](...parameter);\n }\n}\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { MetaDataPropertyAtomic } from '../MetaDataAtomic';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { ReflectMethod } from '../../types/Types';\n\nconst AfterMetadataKey = Symbol('After');\nconst BeforeMetadataKey = Symbol('Before');\nconst AroundMetadataKey = Symbol('Around');\ntype AOPOption = { type?: ConstructorType<any>; property: string };\ntype AroundOption = {\n before?: (obj: any, propertyKey: string, args: any[]) => any[];\n after?: (obj: any, propertyKey: string, args: any[], beforeReturn: any) => any[];\n};\n\n// after\nexport const After = (data: AOPOption) => {\n return ReflectUtils.metadata(AfterMetadataKey, data);\n};\nexport const getAfter = (target: any, propertyKey: string): AOPOption | undefined => {\n return ReflectUtils.getMetadata(AfterMetadataKey, target, propertyKey);\n};\n\nexport const getAfters = (target: any): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n ObjectUtils.allProtoTypeName(target)\n .map(it => new MetaDataPropertyAtomic<any, AOPOption | undefined>(target, getAfter(target, it), it))\n .filter(it => it.metaData !== undefined) || []\n );\n};\n\nexport const getProtoAfters = (\n target: any,\n propertyKey: string,\n type?: ConstructorType<any>\n): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n getAfters(target).filter(it => propertyKey === it.metaData?.property && type === it.metaData.type?.prototype) || []\n );\n};\n\n// before\nexport const Before = (data: AOPOption) => {\n return ReflectUtils.metadata(BeforeMetadataKey, data);\n};\n\nexport const getBefore = (target: any, propertyKey: string): AOPOption | undefined => {\n return ReflectUtils.getMetadata(BeforeMetadataKey, target, propertyKey);\n};\n\nexport const getBefores = (target: any): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n ObjectUtils.allProtoTypeName(target)\n .map(it => new MetaDataPropertyAtomic<any, AOPOption | undefined>(target, getBefore(target, it), it))\n .filter(it => it.metaData !== undefined) || []\n );\n};\n\nexport const getProtoBefores = (\n target: any,\n propertyKey: string,\n type?: ConstructorType<any>\n): MetaDataPropertyAtomic<any, AOPOption | undefined>[] => {\n return (\n getBefores(target).filter(it => propertyKey === it.metaData?.property && type === it.metaData.type?.prototype) || []\n );\n};\n\nexport class AroundForceReturn {\n constructor(public value: any) {}\n}\n// around\nexport const Around = (config: AroundOption): ReflectMethod => {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n ReflectUtils.defineMetadata(AroundMetadataKey, config, target, propertyKey);\n\n const method = descriptor.value;\n descriptor.value = function (...args: any[]) {\n // console.log('check method')\n\n let before: any = undefined;\n let r: any = undefined;\n if (config.before) {\n try {\n before = config.before?.(this, propertyKey, args);\n } catch (e) {\n if (e instanceof AroundForceReturn) {\n return e.value;\n }\n }\n r = method.apply(this, before);\n } else {\n r = method.apply(this, args);\n }\n\n if (config.after) {\n try {\n r = config.after?.(this, propertyKey, args, r);\n } catch (e) {\n if (e instanceof AroundForceReturn) {\n return e.value;\n }\n }\n }\n return r;\n };\n };\n};\n\nexport const getAround = (target: any, propertyKey: string): AroundOption | undefined => {\n return ReflectUtils.getMetadata(AroundMetadataKey, target, propertyKey);\n};\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport {ReflectMethod} from '../../types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {ObjectUtils} from '@dooboostore/core/object/ObjectUtils';\n\nexport enum ExceptionHandlerSituationType {\n ERROR_OBJECT = 'SIMPLE_BOOT_CORE://ExceptionHandler/ERROR_OBJECT',\n PARAMETER = 'SIMPLE_BOOT_CORE://ExceptionHandler/PARAMETER',\n}\nexport type ExceptionHandlerConfig = { type?: ConstructorType<any>; throw?: boolean }\nexport type SaveExceptionHandlerConfig = { propertyKey?: string | symbol; method: Function; config: ExceptionHandlerConfig; }\n\nconst ExceptionHandlerMetadataKey = Symbol('ExceptionHandler');\n\nexport const ExceptionHandler = (config: ExceptionHandlerConfig = {}): ReflectMethod => {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target.constructor) ?? []) as SaveExceptionHandlerConfig[];\n const method = target[propertyKey];\n saveMappingConfigs.push({propertyKey, method, config});\n ReflectUtils.defineMetadata(ExceptionHandlerMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(ExceptionHandlerMetadataKey, config, target, propertyKey);\n }\n}\n\nexport const getExceptionHandler = (target: any, propertyKey: string): ExceptionHandlerConfig | undefined => {\n return ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target, propertyKey);\n}\n\nexport const getExceptionHandlers = (target: any): SaveExceptionHandlerConfig[] | undefined => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(ExceptionHandlerMetadataKey, target);\n}\n\nexport const targetExceptionHandlers = (target: any, error: any): SaveExceptionHandlerConfig[] => {\n const exceptionHandlers = getExceptionHandlers(target);\n const emptyTargets = exceptionHandlers?.filter(it => it.config.type === undefined);\n const targets = exceptionHandlers?.filter(it => ObjectUtils.isPrototypeOfTarget(it.config.type, error));\n const targetSorts = targets?.sort((a, b) => {\n const aPrototypeOfDepth = ObjectUtils.prototypeOfDepth(error, a.config.type);\n const bPrototypeOfDepth = ObjectUtils.prototypeOfDepth(error, b.config.type);\n return aPrototypeOfDepth.length - bPrototypeOfDepth.length\n });\n return (targetSorts ?? []).concat(...emptyTargets ?? []);\n}\n\nexport const targetExceptionHandler = (target: any, error: any, excludeMethods: Function[] = []): SaveExceptionHandlerConfig | undefined => {\n let exceptionHandlers = targetExceptionHandlers(target, error);\n exceptionHandlers = exceptionHandlers?.filter(it => !excludeMethods.includes(it.method));\n if (exceptionHandlers && exceptionHandlers.length > 0) {\n return exceptionHandlers[0];\n } else {\n return undefined;\n }\n}\n", "import {SimstanceManager} from '../simstance/SimstanceManager'\nimport {getProtoAfters, getProtoBefores} from '../decorators/aop/AOPDecorator';\nimport {ObjectUtils} from '@dooboostore/core/object/ObjectUtils';\nimport {SimOption} from '../SimOption';\nimport {ExceptionHandlerSituationType, SaveExceptionHandlerConfig, targetExceptionHandler} from '../decorators/exception/ExceptionDecorator';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport {SituationTypeContainer, SituationTypeContainers} from '../decorators/inject/Inject';\nimport { SimpleApplication } from '../SimpleApplication';\n\nexport class SimProxyHandler implements ProxyHandler<any> {\n constructor(private simpleApplication: SimpleApplication, private simstanceManager: SimstanceManager, private simOption: SimOption) {\n // console.log('SimProxyHandler', simstanceManager, simOption)\n }\n\n // \uC798\uBC1B\uAC8C \uD574\uB1A8\uB124 \u314B\u314B simstanceManager\n public get(target: any, name: string): any {\n if (name === '_SimpleBoot_application') {\n return this.simpleApplication;\n } else if (name === '_SimpleBoot_simstanceManager') {\n return this.simstanceManager;\n }else if (name === '_SimpleBoot_simOption') {\n return this.simOption;\n } else {\n return target[name]\n }\n }\n\n\n\n public set(obj: any, prop: string, value: any, receiver: any): boolean {\n value = this.simstanceManager?.proxy(value)\n obj[prop] = value\n return true\n }\n\n apply(target: Function, thisArg: any, argumentsList?: any[]): any {\n let r;\n try {\n this.aopBefore(thisArg, target);\n try {\n // @ts-ignore\n r = Reflect.apply(target, thisArg, argumentsList);\n // r = target.apply(thisArg, argumentsList);\n // eslint-disable-next-line no-useless-catch\n } catch (e) {\n throw e;\n } finally {\n this.aopAfter(thisArg, target);\n }\n } catch (e: Error | any) {\n console.error(e);\n const inHandlers = this.getExceptionHandler(e, thisArg, target);\n if (inHandlers.length > 0 && inHandlers[0]) {\n const inHandler = inHandlers[0];\n this.executeExceptionHandler(e, inHandler, argumentsList);\n } else {\n throw e;\n }\n }\n return r\n }\n\n private executeExceptionHandler(e: any, inHandler: { thisArg: any; config: SaveExceptionHandlerConfig }, argumentsList?: any[]) {\n const otherStorage = new Map<ConstructorType<any>, any>();\n otherStorage.set(e.constructor, e);\n const situationErrorTypeContainer = new SituationTypeContainer({\n situationType: ExceptionHandlerSituationType.ERROR_OBJECT,\n data: e\n });\n const situationParameterTypeContainer = new SituationTypeContainer({\n situationType: ExceptionHandlerSituationType.PARAMETER,\n data: argumentsList\n });\n otherStorage.set(SituationTypeContainers, new SituationTypeContainers([situationErrorTypeContainer, situationParameterTypeContainer]));\n argumentsList?.forEach(it => {\n otherStorage.set(it.constructor, it);\n });\n try {\n this.simstanceManager.executeBindParameterSim({\n target: inHandler.thisArg,\n targetKey: inHandler.config.propertyKey\n }, otherStorage);\n } catch (es) {\n e = es;\n }\n if (inHandler.config.config.throw) {\n const exceptionHandler = this.getExceptionHandler(e, inHandler.thisArg, inHandler.config.method);\n if ((exceptionHandler?.length ?? 0) > 0) {\n this.executeExceptionHandler(e, exceptionHandler[0], argumentsList);\n }\n }\n }\n\n private getExceptionHandler(e: any, thisArg: any, target: Function) {\n const globalConfigSets = this.simOption.advice.map(it => this.simstanceManager?.getOrNewSim({target:it})).filter(it => it).map(it => {\n return {thisArg: it, config: targetExceptionHandler(it, e, [target])}\n }) ?? [];\n const thisConfigSet = {thisArg: thisArg, config: targetExceptionHandler(thisArg, e, [target])}\n const inHandlers = [thisConfigSet, ...globalConfigSets].filter(it => it && it.config) as { thisArg: any, config: SaveExceptionHandlerConfig }[];\n return inHandlers;\n }\n\n private aopBefore(obj: any, protoType: Function) {\n const propertyName = ObjectUtils.prototypeName(obj, protoType);\n if (propertyName && obj) {\n getProtoBefores(obj, propertyName).forEach(it => {\n it.call(obj, protoType, propertyName)\n })\n\n for (let i = 0; i < this.simOption.advice.length; i++) {\n const sim = this.simstanceManager?.getOrNewSim({target:this.simOption.advice[i]});\n const protoBefores = getProtoBefores(sim, propertyName, Object.getPrototypeOf(obj));\n protoBefores.forEach(it => {\n it.call(obj, protoType, propertyName)\n })\n }\n }\n }\n\n private aopAfter(obj: any, protoType: Function) {\n const propertyName = ObjectUtils.prototypeName(obj, protoType);\n if (propertyName) {\n getProtoAfters(obj, propertyName).forEach(it => {\n it.call(obj, protoType, propertyName)\n })\n\n for (let i = 0; i < this.simOption.advice.length; i++) {\n const sim = this.simstanceManager?.getOrNewSim({target:this.simOption.advice[i]});\n const protoBefores = getProtoAfters(sim, propertyName, Object.getPrototypeOf(obj));\n protoBefores.forEach(it => {\n it.call(obj, protoType, propertyName)\n })\n }\n }\n }\n\n has(target: any, key: PropertyKey): boolean {\n if (key === '_SimpleBoot_isProxy') {\n return true\n }\n return key in target\n }\n}\n", "export interface OnSimCreate {\n onSimCreate(): void;\n}\nexport const isOnSimCreate = (obj: any): obj is OnSimCreate => {\n return typeof obj?.onSimCreate === 'function';\n}", "export interface OnSimCreateCompleted<T = any> {\n onSimCreateProxyCompleted(proxyThis: T): void;\n}\nexport const isOnSimCreateProxyCompleted = (obj: any): obj is OnSimCreateCompleted => {\n return typeof obj?.onSimCreateProxyCompleted === 'function';\n}\n\n", "export const SimNoProxyKey = Symbol('Sim:NoProxy');\nexport const SimNoProxy = (target: any, propertyKey?: string | symbol) => {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n if (propertyKey === undefined) {\n // target\uC740 \uD074\uB798\uC2A4 \uC0DD\uC131\uC790\n Reflect.defineMetadata(SimNoProxyKey, true, target);\n return;\n }\n\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n // target\uC740 \uD504\uB85C\uD1A0\uD0C0\uC785, propertyKey\uB294 \uD504\uB85C\uD37C\uD2F0 \uC774\uB984\n Reflect.defineMetadata(SimNoProxyKey, true, target, propertyKey);\n};\n\nexport const getSimNoProxy = (target: any, propertyKey?: string | symbol) => {\n try {\n // if (ValidUtils.isNotNullUndefined(target)) {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\n if (propertyKey === undefined) {\n return Reflect.getMetadata(SimNoProxyKey, target);\n }\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\n return Reflect.getMetadata(SimNoProxyKey, target, propertyKey);\n } catch (e) {\n return undefined;\n }\n // } else {\n // return undefined;\n // }\n};\n\nexport const isSimNoProxy = (target: any, propertyKey?: string | symbol) => {\n if (target === null || target === undefined) {\n return false;\n }\n return getSimNoProxy(target, propertyKey) === true;\n};\n", "import { ConstructorType, isDefined } from '@dooboostore/core/types';\nimport { SimNoSuch } from '../throwable/SimNoSuch';\nimport { getPostConstructs, getSim, Lifecycle, SimConfig, simProcess, sims } from '../decorators/SimDecorator';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport { SimAtomic } from './SimAtomic';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {\n getInject,\n SaveInjectConfig,\n SituationTypeContainer,\n SituationTypeContainers\n} from '../decorators/inject/Inject';\nimport { SimOption } from '../SimOption';\nimport { SimProxyHandler } from '../proxy/SimProxyHandler';\nimport { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { Runnable } from '@dooboostore/core/runs/Runnable';\nimport { isOnSimCreate } from '../lifecycle/OnSimCreate';\nimport { isOnSimCreateProxyCompleted } from '../lifecycle/OnSimCreateCompleted';\nimport { SimpleApplication } from '../SimpleApplication';\nimport { isSimNoProxy } from '../decorators/SimNoProxy';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\n\nexport type FirstCheckMaker = (\n obj: { target: Object; targetKey?: string | symbol },\n token: ConstructorType<any>,\n idx: number,\n saveInjectConfig?: SaveInjectConfig\n) => any | undefined;\nexport type Carrier = { newInstances: any[]; depth: number };\nexport class SimstanceManager implements Runnable<void, Map<ConstructorType<any> | Function, any>> {\n private _storage = new Map<ConstructorType<any> | Function, Map<ConstructorType<any> | Function, undefined | any>>();\n private simProxyHandler: SimProxyHandler;\n private name='simstanceManager-'+RandomUtils.uuid4()\n // private otherInstanceSim?: Map<ConstructorType<any> | Function, any>;\n\n constructor(\n private simpleApplication: SimpleApplication,\n private option: SimOption\n ) {\n this.setStoreSet(SimpleApplication, this.simpleApplication);\n this.setStoreSet(SimstanceManager, this);\n this.setStoreSet((option as any).constructor, option);\n this.setStoreSet(SimOption, option);\n this.simProxyHandler = new SimProxyHandler(this.simpleApplication, this, option);\n console.log('simstanceManager constructor', this.name)\n }\n\n get storage() {\n return this._storage;\n }\n\n getSimAtomics(): SimAtomic[] {\n const r: SimAtomic[] = [];\n Array.from(this.storage.entries()).forEach(([targetKeyType, targetMap]) => {\n // Array.from(targetMap).forEach(it => {\n r.push(\n ...Array.from(Array.from(targetMap.keys())).map(\n sit => new SimAtomic({ targetKeyType, originalType: sit }, this)\n )\n );\n // });\n });\n return r;\n }\n\n getSimConfig(schemeOrSymbol: string | Symbol | undefined): SimAtomic<any>[] {\n const newVar =\n this.getSimAtomics().filter(it => {\n const config = it?.getConfig();\n const symbols = ConvertUtils.flatArray(config?.symbol);\n const schemes = ConvertUtils.flatArray(config?.scheme);\n if (typeof schemeOrSymbol === 'symbol') {\n return schemeOrSymbol && it && symbols.includes(schemeOrSymbol);\n } else if (typeof schemeOrSymbol === 'string') {\n return schemeOrSymbol && it && schemes.includes(schemeOrSymbol);\n } else {\n return false;\n }\n }) || [];\n return newVar;\n }\n\n findSims<T = any>(symbol: Symbol): SimAtomic<T>[];\n findSims<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function }): SimAtomic<T>[];\n findSims<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function } | Symbol): SimAtomic<T>[] {\n let r: SimAtomic<T>[] = [];\n if (data) {\n const simAtomics = this.getSimAtomics();\n r = simAtomics.filter(it => {\n let b = false;\n const config = it.getConfig();\n // console.log('-=--', config)\n const symbols = ConvertUtils.flatArray(config?.symbol).filter(isDefined);\n const schemes = ConvertUtils.flatArray(config?.scheme).filter(isDefined);\n if (typeof data === 'symbol') {\n b = symbols.includes(data);\n } else {\n const { scheme, type } = data as { scheme?: string; type?: ConstructorType<any> | Function };\n b = (scheme ? schemes.includes(scheme) : true) && (type ? it.type.targetKeyType === type : true);\n // if (type) {\n // const configTypes = ConvertUtils.flatArray(config?.type).filter(isDefined);\n // const match = configTypes.includes(type)\n // if (match) {\n // b = true;\n // }\n // }\n }\n return b;\n }) as unknown as SimAtomic<T>[];\n }\n return r;\n }\n\n findFirstSim<T = any>(symbol: Symbol): SimAtomic<T> | undefined;\n findFirstSim<T = any>(data: { scheme?: string; type?: ConstructorType<any> | Function }): SimAtomic<T> | undefined;\n findFirstSim<T = any>(\n data: { scheme?: string; type?: ConstructorType<any> | Function } | Symbol\n ): SimAtomic<T> | undefined {\n if (typeof data === 'symbol') {\n return this.findSims(data)[0];\n } else {\n return this.findSims(data as { scheme?: string; type?: ConstructorType<any> })[0];\n }\n }\n\n findLastSim<T = any>(symbol: Symbol): SimAtomic<T> | undefined;\n findLastSim<T = any>(data: { scheme?: string; type?: ConstructorType<any> }): SimAtomic<T> | undefined;\n findLastSim<T = any>(data: { scheme?: string; type?: ConstructorType<any> } | Symbol): SimAtomic<T> | undefined {\n if (typeof data === 'symbol') {\n return this.findSims(data).reverse()[0];\n } else {\n return this.findSims(data as { scheme?: string; type?: ConstructorType<any> }).reverse()[0];\n }\n }\n\n flatStoreSets() {\n return new Map(\n Array.from(this.storage.values())\n .map(it => Array.from(it.entries()))\n .flat()\n );\n }\n\n getStoreSets<T>(targetKey: ConstructorType<T> | Function): { type: ConstructorType<T> | Function; instance?: T }[] {\n const map = this.storage.get(targetKey);\n const datas = (Array.from(map?.entries?.() ?? []) ?? []).reverse();\n return datas.map(it => ({ type: it[0], instance: it[1] }));\n }\n\n getStoreSet<T>(\n targetKey: ConstructorType<T> | Function,\n target?: ConstructorType<any> | Function\n ): { type: ConstructorType<T> | Function; instance?: T } | undefined {\n const find = this.getStoreSets(targetKey).find(it => it.type === target);\n // console.log('getStoreSet', targetKey, target, find)\n if (!find?.instance) {\n const type = target ?? targetKey;\n const flatStoreSets = this.flatStoreSets();\n const data = flatStoreSets.get(type);\n // console.log('--->target?', target, targetKey, type, data);\n if (data) {\n this.setStoreSet(targetKey, data, type);\n }\n return { type: type, instance: data };\n } else {\n return find;\n }\n // return find ?? this.getStoreSets(targetKey)[0];\n }\n\n getStoreInstance<T>(targetKey: ConstructorType<T>, target?: ConstructorType<any>) {\n return this.getStoreSet(targetKey, target)?.instance;\n }\n\n getOrNewSim<T>({\n target,\n originTypeTarget = target,\n newInstanceCarrier\n }: {\n target?: ConstructorType<T> | Function;\n newInstanceCarrier?: Carrier;\n originTypeTarget?: ConstructorType<T> | Function;\n }): T | undefined {\n if (target) {\n const registed = this.getStoreSet(target, originTypeTarget);\n if (registed?.type && !registed?.instance) {\n return this.resolve({ targetKey: target, target: originTypeTarget, newInstanceCarrier: newInstanceCarrier });\n }\n return registed?.instance;\n }\n }\n\n setStoreSet(\n targetKey: ConstructorType<any> | Function,\n obj: any,\n target: ConstructorType<any> | Function = targetKey\n ): void {\n const itemMap = this.storage.get(targetKey) ?? new Map<ConstructorType<any> | Function, any>();\n itemMap.set(target, obj);\n this.storage.set(targetKey, itemMap);\n }\n\n registerStore(targetKey: ConstructorType<any> | Function, regTyps: Set<ConstructorType<any> | Function | any>): void {\n const itemMap = this.storage.get(targetKey) ?? new Map<ConstructorType<any> | Function, any>();\n regTyps.forEach(it => {\n const { type, value } = (\n typeof it === 'object' ? { type: it.constructor, value: it } : { type: it, value: undefined }\n ) as { type: ConstructorType<any> | Function; value: any };\n if (!itemMap.has(type)) {\n itemMap.set(type, value);\n }\n });\n this.storage.set(targetKey, itemMap);\n }\n\n // \uC9C4\uC785\uC810\n resolve<T>({\n target,\n targetKey,\n newInstanceCarrier = { newInstances: [], depth: 0 }\n }: {\n targetKey: ConstructorType<any> | Function;\n target?: ConstructorType<any> | Function;\n newInstanceCarrier?: Carrier;\n }): T {\n // console.group('resolve')\n const registed = this.getStoreSet(targetKey, target);\n if (registed?.instance) {\n return registed.instance;\n }\n\n // console.log('resolve--', targetKey, target, registed?.instance);\n if (this.storage.has(targetKey) && undefined === registed?.instance) {\n newInstanceCarrier.depth++;\n const newSim = this.newSim({\n target: registed?.type ?? targetKey,\n newInstanceCarrier: newInstanceCarrier,\n simCreateAfter: data => {\n // console.log('resolve--newSim', targetKey, target, data);\n if (getSim(registed?.type ?? target ?? targetKey)?.scope === Lifecycle.Singleton) {\n this.setStoreSet(targetKey, data, target);\n // console.log('-----------set', targetKey, data, target, this.storage.get(targetKey))\n }\n }\n });\n newInstanceCarrier.depth--;\n // \uD55C\uADF8\uB8F9\uC774 \uB05D\uB0AC\uC744\uB54C\n if (newInstanceCarrier.depth === 0) {\n newInstanceCarrier.newInstances.forEach(it => {\n this.callBindPostConstruct(it);\n });\n }\n // console.log('%c *************************','color: blue', registed?.type ?? targetKey ,newInstanceCarrier, newInstanceCarrier?.newInstances.length)\n // console.dir(newInstanceCarrier, {depth:10});\n // console.table(newInstanceCarrier);\n if (isOnSimCreate(newSim)) {\n newSim.onSimCreate();\n }\n // console.groupEnd();\n return newSim;\n }\n console.log('simstanceManager', this._storage, this.name)\n const simNoSuch = new SimNoSuch(\n 'SimNoSuch: no simple instance(resolve) ' + 'name:' + targetKey?.prototype?.constructor?.name + ',' + targetKey\n );\n console.error(simNoSuch);\n // console.groupEnd();\n throw simNoSuch;\n }\n\n public newSim<T = any>({\n target,\n simCreateAfter,\n otherStorage,\n newInstanceCarrier\n }: {\n target: ConstructorType<T> | Function;\n simCreateAfter?: (data: T) => void;\n newInstanceCarrier?: Carrier;\n otherStorage?: Map<ConstructorType<any>, any>;\n }): T {\n // @ts-ignore TODO: \uC5EC\uAE30\uC11C \uC0DD\uC131\n const r = new target(\n ...this.getParameterSim({ target: target, otherStorage: otherStorage, newInstanceCarrier: newInstanceCarrier })\n );\n let p = this.proxy(r);\n const config = getSim(target);\n if (config?.proxy) {\n const proxys = (Array.isArray(config.proxy) ? config.proxy : [config.proxy]).filter(isDefined);\n proxys.forEach(it => {\n // console.log('proxy-----------------', p)\n if (typeof it === 'object') {\n p = new Proxy(p, it);\n } else {\n const simConfig = getSim(it);\n p = new Proxy(p, simConfig ? this.getOrNewSim({ target: it }) : this.newSim({ target: it }));\n }\n // console.log('proxy-pp----------------', p)\n });\n }\n newInstanceCarrier?.newInstances.push(p);\n // \uC21C\uD658\uCC38\uC870 \uB9C9\uAE30\uC704\uD55C \uCF5C\uBC31 \uCC98\uB9AC\n simCreateAfter?.(p);\n if (isOnSimCreateProxyCompleted(p)) {\n p.onSimCreateProxyCompleted(p);\n }\n // this.callBindPostConstruct(p);\n return p;\n }\n\n public callBindPostConstruct(obj: any) {\n // const set = new Set(ObjectUtils.getAllProtoTypeName(obj));\n // console.log('callBindPostConstruct', obj, set, ObjectUtils.getAllProtoTypeName(obj));\n // set.forEach(it => {\n // const postConstruct = getPostConstruct(obj, it);\n // if (postConstruct) {\n // (obj as any)[it](...this.getParameterSim({target: obj, targetKey: it}))\n // }\n // })\n const postConstruct = getPostConstructs(obj);\n postConstruct.forEach(it => {\n (obj as any)[it.property](...this.getParameterSim({ target: obj, targetKey: it.property }));\n });\n }\n\n public async executeBindParameterSimPromise(\n {\n target,\n targetKey,\n firstCheckMaker\n }: { target: Object; targetKey?: string | symbol; firstCheckMaker?: FirstCheckMaker[] },\n otherStorage?: Map<ConstructorType<any>, any>\n ) {\n let value = this.executeBindParameterSim({ target, targetKey, firstCheckMaker }, otherStorage);\n if (value instanceof Promise) {\n value = await value;\n }\n return value;\n }\n\n public executeBindParameterSim(\n {\n target,\n targetKey,\n firstCheckMaker\n }: { target: Object; targetKey?: string | symbol; firstCheckMaker?: FirstCheckMaker[] },\n otherStorage?: Map<ConstructorType<any>, any>\n ) {\n const binds = this.getParameterSim({ target, targetKey, firstCheckMaker, otherStorage });\n if (typeof target === 'object' && targetKey) {\n const targetMethod = (target as any)[targetKey];\n return targetMethod?.bind(target)?.(...binds);\n } else if (typeof target === 'function' && !targetKey) {\n return new (target as ConstructorType<any>)(...binds);\n }\n }\n\n public getParameterSim({\n target,\n targetKey,\n firstCheckMaker,\n otherStorage,\n newInstanceCarrier\n }: {\n target: Object;\n targetKey?: string | symbol;\n firstCheckMaker?: FirstCheckMaker[];\n newInstanceCarrier?: Carrier;\n otherStorage?: Map<ConstructorType<any>, any>;\n }): any[] {\n const paramTypes = ReflectUtils.getParameterTypes(target, targetKey);\n // const paramNames = FunctionUtils.getParameterNames(target, targetKey);\n // const a = ReflectUtils.getType(target, 'user');\n let injections: any[] = [];\n const injects = getInject(target, targetKey);\n // const da = JSON.stringify(this.storage);\n // this.storage map to json String\n\n injections = paramTypes.map((token: ConstructorType<any>, idx: number) => {\n const saveInject = injects?.find(it => it.index === idx);\n if (saveInject?.config.disabled) {\n return undefined;\n }\n for (const f of firstCheckMaker ?? []) {\n const firstCheckObj = f({ target, targetKey }, token, idx, saveInject);\n if (undefined !== firstCheckObj) {\n return firstCheckObj;\n }\n }\n if (saveInject) {\n const inject = saveInject.config;\n let obj = otherStorage?.get(token);\n // console.log('vvvvv----->', obj, token, inject);\n if (token === Array && (inject.type || inject.scheme || inject.symbol)) {\n const p: any[] = [];\n if (inject.type) {\n p.push(\n ...this.getStoreSets(inject.type)\n .map(it =>\n this.resolve({ targetKey: inject.type!, target: it.type, newInstanceCarrier: newInstanceCarrier })\n )\n .reverse()\n );\n }\n if (inject.symbol) {\n p.push(\n ...this.getSimConfig(inject.symbol).map(it => it.getValue({ newInstanceCarrier: newInstanceCarrier }))\n );\n }\n if (inject.scheme) {\n p.push(\n ...this.getSimConfig(inject.scheme).map(it => it.getValue({ newInstanceCarrier: newInstanceCarrier }))\n );\n }\n return p;\n }\n\n // situational\n if (inject.situationType && otherStorage) {\n // TODO: \uC65C other\uC5D0\uC11C \uAC00\uC838\uC624\uB294\uAC78\uAE4C?\n const situations = otherStorage.get(SituationTypeContainers) as SituationTypeContainers;\n const situation = otherStorage.get(SituationTypeContainer) as SituationTypeContainer;\n if (inject.situationType === situation?.situationType) {\n obj = situation.data;\n } else if (situations && situations.length > 0) {\n const find = situations.find(a => {\n if (a.index !== undefined) {\n return a.situationType === inject.situationType && a.index === idx;\n } else {\n return a.situationType === inject.situationType;\n }\n });\n if (find) {\n obj = find.data;\n }\n }\n }\n\n if (!obj) {\n const findLastSim = inject.symbol\n ? this.findLastSim(inject.symbol)\n : this.findLastSim({ scheme: inject.scheme, type: inject.type });\n try {\n obj = findLastSim\n ? this.resolve<any>({\n targetKey: findLastSim?.type.targetKeyType ?? token,\n newInstanceCarrier: newInstanceCarrier\n })\n : this.resolve<any>({ targetKey: token, newInstanceCarrier: newInstanceCarrier });\n } catch (e) {\n // Inject optional \uCC98\uB9AC\n if (inject.optional) {\n return undefined;\n } else {\n throw e;\n }\n }\n }\n\n if (inject.applyProxy && obj) {\n if (inject.applyProxy.param) {\n obj = new Proxy(obj, new inject.applyProxy.type(...inject.applyProxy.param));\n } else {\n obj = new Proxy(obj, new inject.applyProxy.type());\n }\n }\n return obj;\n } else if (token) {\n // TODO: \uC65C other\uC5D0\uC11C \uAC00\uC838\uC624\uB294\uAC78\uAE4C? -> \uC640\uBD80\uC5D0\uC11C \uC804\uB2EC\uD574\uC8FC\uB294\uAC78 \uBA3C\uC800 \uCC98\uB9AC \uD574\uC8FC\uAE30\uC704\uD574 \uCD94\uCE21\n // console.log('oooooooooooooooo', token, otherStorage)\n return otherStorage?.get(token) ?? this.resolve<any>({ targetKey: token, newInstanceCarrier });\n }\n return undefined;\n });\n return injections;\n }\n\n public proxy<T = any>(target: T): T {\n try {\n const noProxy = isSimNoProxy(target);\n if (!noProxy && target !== null && getSim(target) && typeof target === 'object' && !('_SimpleBoot_isProxy' in target)) {\n for (const key in target) {\n if (!isSimNoProxy(target, key)) {\n target[key] = this.proxy(target[key]);\n }\n }\n\n // function apply proxy\n const protoTypeName = ObjectUtils.ownPropertyNames(target);\n protoTypeName\n .filter(it => typeof (target as any)[it] === 'function')\n .filter(it => !isSimNoProxy(target, it))\n .filter(it => !('_SimpleBoot_isProxy' in target[it]))\n .forEach(it => {\n (target as any)[it] = new Proxy((target as any)[it], this.simProxyHandler!);\n });\n\n if (this.simProxyHandler) {\n target = new Proxy(target, this.simProxyHandler);\n }\n }\n\n if (this.option.proxy) {\n target = this.option.proxy.onAfterProxy(target);\n }\n return target;\n } catch (e) {\n console.log('sim proxy error');\n throw e;\n }\n }\n\n run(otherInstanceSim: Map<ConstructorType<any> | Function | SimConfig, any> = new Map()) {\n // this.otherInstanceSim = new Map();\n for (const [k, v] of Array.from(otherInstanceSim.entries())) {\n if (typeof k === 'object') {\n // \uBA85\uD655\uD558\uAC8C instance\uB97C \uB118\uAE34\uAC70\uB2C8 \uD0C0\uC785\uC73C\uB85C \uCC98\uB9AC\uC548\uD558\uAE30 \uC704\uD574 \uC784\uC758 \uD0C0\uC785\uC73C\uB85C \uCC98\uB9AC\uD55C\uB2E4.\n simProcess(k, v);\n } else {\n simProcess({ type: k }, v);\n }\n // this.otherInstanceSim.set(type, v);\n // it => ({type: it[0], value: it[1], action: this.setStoreSet.bind(this)})\n }\n // this.otherInstanceSim = otherInstanceSim;\n // const types = Array.from(this.otherInstanceSim?.entries()).map(it => ({type: it[0], value: it[1], action: this.setStoreSet.bind(this)}));\n // types.push(...Array.from(sims.entries()).map(it => ({type: it[0], value: it[1], action: this.registerStore.bind(this)})));\n const myContainers = ConvertUtils.flatArray(this.option.container).filter(isDefined);\n // console.log('simstanceManager run!!', Array.from(sims.entries()));\n // Array.from(sims.entries()).map(it => ({type: it[0], value: it[1], action: this.registerStore.bind(this)}))\n Array.from(sims.entries()).forEach(([type, value]) => {\n const targetContainers = ConvertUtils.flatArray(getSim(type)?.container).filter(isDefined);\n let isInclude = false;\n if (myContainers.length <= 0 && targetContainers.length <= 0) {\n isInclude = true;\n } else if (targetContainers.length <= 0) {\n isInclude = true;\n } else {\n isInclude = myContainers.some(it => targetContainers.includes(it));\n }\n\n this.registerStore(type, value);\n // const isInclude = (myContainers.length <= 0 || targetContainers.length <= 0) ? true : myContainers.some(it => targetContainers.includes(it));\n // const isInclude = (targetContainers.length <= 0) ? true : (myContainers.length > 0 ? true : (myContainers.some(it => targetContainers.includes(it))));\n // const isInclude = (myContainers.length <= 0 || targetContainers.length <= 0) ? true : (myContainers.some(it => containers.includes(it)));\n // if (typeof this.option.excludeSim === 'function' && this.option.excludeSim(type)) {\n // if (isInclude) {\n // it.action(type, it.value);\n // }\n // } else if (Array.isArray(this.option.excludeSim) && !this.option.excludeSim.includes(type)) {\n // if (isInclude) {\n // it.action(type, it.value);\n // }\n // }\n });\n\n this.callBindPostConstruct(this);\n\n // auto start run\n this.getSimAtomics().forEach(it => {\n if (it.getConfig()?.autoCreate) {\n // console.log('autoStart---?', it.type);\n it.getValue();\n }\n });\n }\n}\n", "import { Subscription } from './Subscription';\nimport { Observer } from './Observer';\n\nexport class Subscriber<T, E = any> implements Subscription, Observer<T, E>{\n closed = false;\n constructor(private destination: Observer<T, E>) {\n }\n next(value: T): void {\n if (this.closed) {\n return;\n }\n this.destination.next(value);\n }\n error(err: E): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.error(err);\n this.unsubscribe();\n }\n complete(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.complete();\n this.unsubscribe();\n }\n unsubscribe(): void {\n this.closed = true;\n }\n\n}", "import { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\nimport { Observer } from './Observer';\nimport { Subscriber } from './Subscriber.';\n\nexport type OperatorFunction<T, R> = (source: Observable<T, any>) => Observable<R, any>;\n\nexport class Observable<T, E = any> implements Subscribable<T, E> {\n private _producerFunction: ((subscriber: Subscriber<T, E>) => (Subscription | (() => void) | void)) | undefined;\n\n constructor(producerFunction?: (subscriber: Subscriber<T, E>) => (Subscription | (() => void) | void)) {\n this._producerFunction = producerFunction;\n }\n\n subscribe(observer: Partial<Observer<T, E>>): Subscription;\n subscribe(d: ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription;\n subscribe(observer: Partial<Observer<T, E>> | ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription {\n\n const partialObserver: Partial<Observer<T, E>> = {\n next: typeof observer === 'object' ? observer.next : observer,\n error: typeof observer === 'object' ? observer.error : e,\n complete: typeof observer === 'object' ? observer.complete : c\n }\n\n // Create a new internal subscriber for this specific subscription\n const internalSubscriber = new Subscriber({\n next: (data: T) => {\n partialObserver.next?.(data);\n },\n error: (e: E) => {\n partialObserver.error?.(e);\n },\n complete: () => {\n partialObserver.complete?.();\n }\n }\n );\n\n let teardownLogic: Subscription | (() => void) | void;\n if (this._producerFunction) {\n teardownLogic = this._producerFunction(internalSubscriber);\n }\n\n let closed = false;\n return {\n get closed() {\n return closed;\n },\n unsubscribe: () => {\n // console.log('unsubscribe-->', teardownLogic)\n // Execute the teardown logic returned by the producer function\n if (typeof teardownLogic === 'function') {\n teardownLogic();\n } else if (teardownLogic && typeof teardownLogic.unsubscribe === 'function') {\n teardownLogic.unsubscribe();\n }\n closed = true;\n }\n }\n }\n\n toPromise(): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n let lastValue: T | undefined;\n let subscription: Subscription;\n\n subscription = this.subscribe({\n next: (value: T) => {\n lastValue = value;\n },\n error: (err: E) => {\n reject(err);\n subscription.unsubscribe();\n },\n complete: () => {\n resolve(lastValue);\n subscription.unsubscribe();\n }\n });\n });\n }\n\n pipe(): Observable<T, E>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A, any>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B, any>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C, any>;\n pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D, any>;\n pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E, any>;\n pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F, any>;\n pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G, any>;\n pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H, any>;\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I, any>;\n pipe<A, B, C, D, E, F, G, H, I, J>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>): Observable<J, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>): Observable<K, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>): Observable<L, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>): Observable<M, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>): Observable<N, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>): Observable<O, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>): Observable<P, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>): Observable<Q, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>): Observable<R, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>): Observable<S, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>): Observable<U, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>): Observable<V, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>): Observable<W, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>): Observable<X, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>): Observable<Y, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>): Observable<Z, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>): Observable<AA, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>): Observable<AB, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>): Observable<AC, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>): Observable<AD, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>): Observable<AE, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>): Observable<AF, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>): Observable<AG, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>): Observable<AH, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>): Observable<AI, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>): Observable<AJ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>): Observable<AK, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>): Observable<AL, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>): Observable<AM, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>): Observable<AN, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>): Observable<AO, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>): Observable<AP, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>): Observable<AQ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>): Observable<AR, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>): Observable<AS, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>): Observable<AT, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>): Observable<AU, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>): Observable<AV, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>, op48: OperatorFunction<AV, AW>): Observable<AW, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>, op48: OperatorFunction<AV, AW>, op49: OperatorFunction<AW, AX>): Observable<AX, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>, op48: OperatorFunction<AV, AW>, op49: OperatorFunction<AW, AX>, op50: OperatorFunction<AX, AY>): Observable<AY, any>;\n pipe(...operators: OperatorFunction<any, any>[]): Observable<any, any> {\n if (operators.length === 0) {\n return this as any;\n }\n return operators.reduce((prev, operator) => operator(prev), this as any);\n }\n}", "import { Observer } from './Observer';\nimport { Observable, OperatorFunction } from './Observable';\nimport { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\n\nexport class Subject<T, E = any> extends Observable<T, E> implements Observer<T, E> {\n private _observers = new Set<Partial<Observer<T, E>>>();\n private _isStopped = false;\n private _hasError = false;\n private _error: E | undefined;\n\n constructor() {\n // Call parent Observable constructor with our own subscribe logic\n super((subscriber) => {\n return this._subscribeToSubject(subscriber);\n });\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n const partialObserver: Partial<Observer<T, E>> = {\n next: subscriber.next.bind(subscriber),\n error: subscriber.error.bind(subscriber),\n complete: subscriber.complete.bind(subscriber)\n };\n\n if (this._isStopped) {\n if (this._hasError) {\n partialObserver.error?.(this._error!);\n } else {\n partialObserver.complete?.();\n }\n return { closed: true, unsubscribe: () => {} }; // Already stopped, return dummy subscription\n }\n\n this._observers.add(partialObserver);\n\n let closed = false;\n\n return {\n get closed() {\n return closed;\n },\n unsubscribe: () => {\n this._observers.delete(partialObserver);\n closed = true;\n }\n };\n }\n\n next(data: T): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more emissions\n }\n this._observers.forEach(observer => {\n observer.next?.(data)\n });\n }\n\n error(err: E): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more errors\n }\n this._hasError = true;\n this._error = err;\n this._isStopped = true; // Subject stops after error\n this._observers.forEach(observer => observer.error?.(err));\n this._observers.clear(); // Clear observers after error\n }\n\n complete(): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more completions\n }\n this._isStopped = true; // Subject stops after completion\n this._observers.forEach(observer => observer.complete?.());\n this._observers.clear(); // Clear observers after completion\n }\n\n\n\n asObservable(): Observable<T, E> {\n // Returns a new Observable that wraps this Subject's subscribe method.\n // This hides the next/error/complete methods from the consumer.\n return new Observable<T, E>(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n}", "\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {ReflectMethod} from '../../types/Types';\n\nexport type InjectionConfig = {}\n\nconst InjectionMetadataKey = Symbol('Injection');\nexport function Injection(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function Injection(config?: InjectionConfig): ReflectMethod;\nexport function Injection(configOrTarget?: InjectionConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): void | ReflectMethod {\n if (propertyKey && descriptor) {\n const target = configOrTarget;\n ReflectUtils.defineMetadata(InjectionMetadataKey, {}, target, propertyKey);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const config = configOrTarget;\n ReflectUtils.defineMetadata(InjectionMetadataKey, config ?? {}, target, propertyKey);\n }\n }\n}\n\nexport const getInjection = (target: any, propertyKey: string | symbol): InjectionConfig | undefined => {\n return ReflectUtils.getMetadata(InjectionMetadataKey, target, propertyKey);\n}\n", "import {SimError} from './SimError';\n\nexport class MethodNoSuch extends SimError {\n constructor(message?: string, name?: string, public propertyKeys?: symbol | string, stack?: string) {\n super(message, name, stack);\n }\n}\n", "import { ConstructorType, GenericClassDecorator } from '@dooboostore/core/types';\nimport { ReflectMethod} from '../../types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport {RouteFilter} from '../../route/RouteFilter';\n\nexport type Filterss = (RouteFilter | ConstructorType<RouteFilter>)[];\nexport type Filters = RouteFilter | ConstructorType<RouteFilter> | Filterss;\nexport type RoteAndFilter = {filters: Filters, target: ConstructorType<Object>};\nexport type RouteTargetMethod = {target: ConstructorType<Object>, propertyKeys: (string|symbol)[], filters?: Filterss}\nexport type RouteProperty = ConstructorType<Object> | RoteAndFilter | [ConstructorType<Object> | RoteAndFilter, any] | RouteTargetMethod | string | Symbol;\nexport type Route = {[name: string]: RouteProperty};\nexport interface RouterConfig {\n path?: string;\n route?: Route;\n routers?: ConstructorType<Object>[];\n filters?: Filters;\n}\n\nexport const RouterMetadataKey = Symbol('Router');\nexport const routerProcess = (config: RouterConfig, target: ConstructorType<any> | Function) => {\n getRoutes(target)?.forEach(it => {\n config.route = (config.route ?? {});\n const paths = Array.isArray(it.config.path) ? it.config.path : [it.config.path];\n for (const path of paths) {\n if (config.route[path]) {\n const route = config.route[path] as RouteTargetMethod;\n route.propertyKeys.push(it.propertyKey);\n route.filters = route.filters ?? [];\n if (Array.isArray(it.config.filters)) {\n route.filters.push(...it.config.filters)\n } else if (it.config.filters) {\n route.filters.push(it.config.filters)\n }\n } else {\n config.route[path] = {target, propertyKeys: [it.propertyKey], filters: it.config.filters} as RouteTargetMethod;\n }\n }\n });\n ReflectUtils.defineMetadata(RouterMetadataKey, config, target);\n}\nexport function Router(target: ConstructorType<any> | Function): void;\nexport function Router(config: RouterConfig): GenericClassDecorator<ConstructorType<any> | Function>;\nexport function Router(configOrTarget: RouterConfig | ConstructorType<any> | Function): void | GenericClassDecorator<ConstructorType<any> | Function> {\n if (typeof configOrTarget === 'function') {\n const routerConfig: RouterConfig = {\n path: ''\n }\n routerProcess(routerConfig, configOrTarget);\n } else {\n return (target: ConstructorType<any> | Function) => {\n configOrTarget.path = configOrTarget.path ?? '';\n routerProcess(configOrTarget, target);\n }\n }\n}\n\nexport const getRouter = (target: ConstructorType<any> | Function | any): RouterConfig | undefined => {\n if (target != null && typeof target === 'object') {\n target = target.constructor;\n }\n try { return ReflectUtils.getMetadata(RouterMetadataKey, target); } catch (e) {}\n}\n\ntype RouteConfig = { path: string | string[], filters?: Filters }\nexport type SaveRouteConfig = { propertyKey: string | symbol; method: Function; config: RouteConfig; }\nexport const RouteMetadataKey = Symbol('RouteMetadataKey');\n\nexport const Route = (config: RouteConfig): ReflectMethod => {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveRouteConfigs = (ReflectUtils.getMetadata(RouteMetadataKey, target.constructor) ?? []) as SaveRouteConfig[];\n const method = target[propertyKey];\n saveRouteConfigs.push({propertyKey, method, config});\n ReflectUtils.defineMetadata(RouteMetadataKey, saveRouteConfigs, target.constructor);\n ReflectUtils.defineMetadata(RouteMetadataKey, config, target, propertyKey);\n };\n}\n\nexport const getRoute = (target: any, propertyKey: string | symbol): RouteConfig | undefined => {\n return ReflectUtils.getMetadata(RouteMetadataKey, target, propertyKey);\n}\n\nexport const getRoutes = (target: any): SaveRouteConfig[] | undefined => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(RouteMetadataKey, target);\n}\n", "import { ConstructorType, isDefined } from '@dooboostore/core/types';\nimport { SimAtomic } from '../simstance/SimAtomic';\nimport { Intent } from '../intent/Intent';\nimport { SimstanceManager } from '../simstance/SimstanceManager';\nimport { getInjection } from '../decorators/inject/Injection';\nimport { MethodNoSuch } from '../throwable/MethodNoSuch';\nimport { getRoute, getRouter, getRoutes } from '../decorators/route/Router';\nimport { Expression } from '@dooboostore/core/expression/Expression';\n\nexport class RouterModule<R = SimAtomic, M = any> {\n private _pathData?: Expression.Path.PathNameData;\n private _data?: any;\n private _intent?: Intent;\n private _propertyKeys?: (string | symbol)[];\n private _path?: string;\n\n public get path(): string | undefined {\n return this._path;\n }\n\n public set path(value: string | undefined) {\n this._path = value;\n }\n\n public get data(): any {\n return this._data;\n }\n\n public set data(value: any) {\n this._data = value;\n }\n\n public get intent(): Intent | undefined {\n return this._intent;\n }\n\n public set intent(value: Intent | undefined) {\n this._intent = value;\n }\n\n public get propertyKeys(): (string | symbol)[] | undefined {\n return this._propertyKeys;\n }\n\n public set propertyKeys(value: (string | symbol)[] | undefined) {\n this._propertyKeys = value;\n }\n\n public get pathData(): Expression.Path.PathNameData | undefined {\n return this._pathData;\n }\n\n public set pathData(value: Expression.Path.PathNameData | undefined) {\n this._pathData = value;\n }\n\n\n constructor(private simstanceManager: SimstanceManager, public router?: R, public module?: { targetKeyType?: ConstructorType<any> | Function, originalType: ConstructorType<any> | Function }, public routerChains: R[] = []) {\n }\n\n getRouterPath(join = '') {\n return this.getRouterPaths().map(it => it ?? '').join(join)\n }\n\n getRouterPaths() {\n return this.routerChains.map(it => getRouter(it instanceof SimAtomic ? it.type.targetKeyType : it)?.path);\n }\n\n getRouterPathData(pathName: string) {\n return Expression.Path.pathNameData(pathName, this.getRouterPath());\n }\n\n getModuleInstance<T = M>(): T | undefined ;\n getModuleInstance<T = M>(propertyKey?: string | symbol, instanceBind: boolean | any = true): T | undefined {\n const instance = this.simstanceManager.getOrNewSim<T>({target: this.module?.targetKeyType, originTypeTarget: this.module?.originalType});\n if (propertyKey && this.propertyKeys && this.propertyKeys.includes(propertyKey)) {\n let instanceElement = (instance as any)[propertyKey];\n if (instanceBind && typeof instanceBind === 'boolean') {\n instanceElement = instanceElement.bind(instance);\n } else if (instanceBind && typeof instanceBind === 'object') {\n instanceElement = instanceElement.bind(instanceBind);\n }\n return instanceElement;\n } else {\n return instance;\n }\n }\n\n executeModuleProperty(propertyKey: string | symbol, ...param: any[]): any {\n const target = this.getModuleInstance() as any;\n if (propertyKey) {\n const config = getInjection(target, propertyKey);\n if (config) {\n const other = new Map<any, any>();\n param.forEach(it => other.set(it.constructor, it));\n return this.simstanceManager.executeBindParameterSim({target, targetKey: propertyKey}, other)\n } else {\n if (target[propertyKey]) {\n return target[propertyKey]?.(...param);\n } else {\n throw new MethodNoSuch(`${propertyKey.toString()} noSuch`, propertyKey.toString(), propertyKey)\n }\n }\n }\n }\n\n get firstRouteChain() {\n return this.routerChains[0];\n }\n\n get firstRouteChainValue() {\n return (this.firstRouteChain as unknown as SimAtomic<any>).getValue();\n }\n\n get lastRouteChain() {\n return this.routerChains[this.routerChains.length - 1];\n }\n\n get lastRouteChainValue() {\n return (this.lastRouteChain as unknown as SimAtomic<any>).getValue();\n }\n\n hasActivateInLastRoute(obj: any) {\n return this.lastRouteChainValue?.hasActivate(obj) === true;\n }\n\n get queryParams(): { [key: string]: string } | undefined {\n if (this.intent) {\n return this.intent.queryParams;\n }\n }\n\n get queryParamsAfterDecodeURI(): { [key: string]: string } | undefined {\n if (this.intent) {\n return this.intent.queryParamsAfterDecodeURI;\n }\n }\n}\n", "import { RoutingDataSet } from '../route/RouterManager';\n\nexport namespace RouterAction {\n export interface CanActivate {\n canActivate(url: RoutingDataSet, data?: any): Promise<void>;\n }\n export const isCanActivate = (obj: any): obj is CanActivate => {\n return typeof obj?.canActivate === 'function';\n };\n\n export interface OnRouting {\n onRouting(r: RoutingDataSet): Promise<void>;\n }\n\n export const isOnRouting = (obj: any): obj is OnRouting => {\n return typeof obj?.onRouting === 'function';\n };\n\n export interface HasActivate {\n hasActivate(checkObj: any): boolean;\n }\n\n export const isHasActivate = (obj: any): obj is HasActivate => {\n return typeof obj?.hasActivate === 'function';\n };\n}\n", "import { Intent } from '../intent/Intent';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { RouterModule } from './RouterModule';\nimport { Route, RouterConfig, RouterMetadataKey } from '../decorators/route/Router';\nimport { SimAtomic } from '../simstance/SimAtomic';\nimport { SimstanceManager } from '../simstance/SimstanceManager';\nimport { RouteFilter } from './RouteFilter';\nimport { Sim } from '../decorators/SimDecorator';\nimport { Expression } from '@dooboostore/core/expression/Expression';\nimport { RouterAction } from '../route/RouterAction';\nimport { SimOption } from '../SimOption';\nimport { Subject } from '@dooboostore/core/message/Subject';\n\nexport type RoutingOption = { router?: ConstructorType<any> | any, find?: { router: 'last' | 'first' } };\nexport type RoutingDataSet = {\n intent: Intent, routerModule: RouterModule, routerManager: RouterManager\n}\n\n@Sim\nexport class RouterManager {\n public activeRouterModule?: RouterModule<SimAtomic, any>;\n private subject = new Subject<RoutingDataSet>()\n constructor(private simstanceManager: SimstanceManager, private simOption: SimOption) {\n }\n\n // @SimNoProxy\n get observable() {\n // this.subject.asObservable\n return this.subject.asObservable();\n }\n\n public routingMap(prefix: string = '', option?: RoutingOption): { [key: string]: string | any } {\n const targetRouter = option?.router ?? this.simOption.rootRouter;\n if (!targetRouter) {\n throw new Error('no router');\n }\n const map = {} as { [key: string]: string | any };\n if (targetRouter) {\n const targetType = (typeof targetRouter === 'object') ? targetRouter.constructor : targetRouter;\n const targetValue = (typeof targetRouter === 'object') ? targetRouter : undefined;\n const routerAtomic = new SimAtomic({targetKeyType: targetType, originalType: targetType, value: targetValue}, this.simstanceManager);\n const routerData = routerAtomic.getConfig<RouterConfig>(RouterMetadataKey);\n if (routerData) {\n const currentPrefix = prefix + routerData.path;\n // Add the current router's path if it has a default route\n if (routerData.route && routerData.route['']) {\n map[currentPrefix] = routerData.route[''];\n }\n if (routerData.route) {\n Object.entries(routerData.route).forEach(([key, value]) => {\n map[currentPrefix + key] = value;\n });\n }\n routerData.routers?.forEach(it => {\n Object.assign(map, this.routingMap(currentPrefix, {...option, router: it}));\n })\n }\n }\n return map;\n }\n\n /** 일반적인 lifecycle 타지않는 그냥 find.. 의미가없을듯.\n * @deprecated\n */\n public async routings<R = SimAtomic, M = any>(intent: Intent, option?: RoutingOption): Promise<RouterModule<R, M>[]> {\n const targetRouter = option?.router ?? this.simOption.rootRouter;\n if (!targetRouter) {\n throw new Error('no router');\n }\n const targetType = (typeof targetRouter === 'object') ? targetRouter.constructor : targetRouter;\n const targetValue = (typeof targetRouter === 'object') ? targetRouter : undefined;\n\n const routerAtomic = new SimAtomic({targetKeyType: targetType, originalType: targetType, value: targetValue}, this.simstanceManager);\n const allMatches = this._collectAllMatchingModules(routerAtomic, intent, []);\n\n // Priority 1: Exact path match with a module\n const exactModuleMatches = allMatches.filter(rm => rm.path === intent.pathname && rm.module);\n if (exactModuleMatches.length > 0) {\n exactModuleMatches.forEach(it => this.subject.next(({intent, routerManager: this, routerModule: it})))\n return exactModuleMatches as RouterModule<R, M>[];\n }\n\n // Priority 2: Exact path match without a module (if no module matches found)\n const exactPathMatches = allMatches.filter(rm => rm.path === intent.pathname);\n if (exactPathMatches.length > 0) {\n exactPathMatches.forEach(it => this.subject.next(({intent, routerManager: this, routerModule: it})))\n return exactPathMatches as RouterModule<R, M>[];\n }\n\n return [] as RouterModule<R, M>[];\n }\n\n public async routing<R = SimAtomic, M = any>(intent: string, option?: RoutingOption): Promise<RouterModule<R, M>> ;\n public async routing<R = SimAtomic, M = any>(intent: Intent, option?: RoutingOption): Promise<RouterModule<R, M>> ;\n public async routing<R = SimAtomic, M = any>(intent: Intent | string, option?: RoutingOption): Promise<RouterModule<R, M>> {\n if (typeof intent === 'string') {\n intent = new Intent(intent);\n }\n const targetRouter = option?.router ?? this.simOption.rootRouter;\n\n if (!targetRouter) {\n throw new Error('no router');\n }\n // await new Promise((r)=> setTimeout(r, 0)); // <-- 이거 넣어야지 두번불러지는게 없어지는듯? 뭐지 event loop 변경된건가?\n const targetType = (typeof targetRouter === 'object') ? targetRouter.constructor : targetRouter;\n const targetValue = (typeof targetRouter === 'object') ? targetRouter : undefined;\n\n const routerAtomic = new SimAtomic({targetKeyType: targetType, originalType: targetType, value: targetValue}, this.simstanceManager);\n const rootRouter = routerAtomic.getValue()!;\n const executeModuleResult = this.getExecuteModule(routerAtomic, intent, [], option);\n if (executeModuleResult) {\n const [executeModule, routerChains] = executeModuleResult;\n executeModule.routerChains = routerChains;\n this.activeRouterModule = executeModule;\n const routingDataSet: RoutingDataSet = {intent, routerModule: executeModule, routerManager: this};\n\n // --- 라우팅 경로(Chain)에 있는 모든 라우터의 라이프사이클 훅 호출 ---\n // 최종 목적지에 도달하기까지 거쳐온 모든 중간 라우터들(예: RootRouter -> UserRouter)을 순회하며\n // 각 라우터의 canActivate와 onRouting을 호출합니다.\n // 이를 통해 각 단계에서 라우팅을 검사하거나 공통 작업을 수행할 수 있습니다.\n if (routerChains.length > 0) {\n for (let i = 0; i < routerChains.length; i++) {\n const current = routerChains[i];\n const next = routerChains[i + 1];\n const value = current.getValue()! as any;\n if (RouterAction.isCanActivate(value) && next) {\n await value.canActivate(routingDataSet, next.getValue());\n }\n if (RouterAction.isOnRouting(value) && next) {\n await value.onRouting(routingDataSet);\n }\n }\n }\n this.activeRouterModule = executeModule;\n\n const moduleInstance = executeModule.getModuleInstance();\n\n // --- Case 1: 부분 일치 (라우터는 찾았지만, 특정 모듈은 찾지 못한 경우) ---\n // URL이 라우터의 경로와는 일치하지만, 그 안의 특정 `route` 항목과는 일치하지 않을 때 발생합니다.\n // 이 경우, 일치한 마지막 라우터의 라이프사이클 훅을 호출합니다.\n if (!executeModule?.module) {\n const routerChain = executeModule.routerChains[executeModule.routerChains.length - 1];\n const value = routerChain?.getValue() as any;\n if (RouterAction.isCanActivate(value)) {\n await value.canActivate(routingDataSet, moduleInstance);\n }\n if (RouterAction.isOnRouting(value)) {\n await value.onRouting(routingDataSet);\n }\n } \n // --- Case 2: 완전 일치 (라우터와 특정 모듈을 모두 찾은 경우) ---\n // 표준 성공 케이스입니다.\n // 모듈을 포함하는 라우터와 모듈 인스턴스 자체의 라이프사이클 훅을 호출합니다.\n else { // find page\n const value = executeModule.router?.getValue()! as any;\n if (RouterAction.isCanActivate(value)) {\n await value.canActivate(routingDataSet, moduleInstance);\n }\n if (RouterAction.isOnRouting(value)) {\n await value.onRouting(routingDataSet);\n }\n\n if (moduleInstance && RouterAction.isOnRouting(moduleInstance)) {\n await moduleInstance.onRouting(routingDataSet);\n }\n }\n\n const find = this.activeRouterModule as RouterModule<any, any>;\n this.subject.next({intent: intent, routerModule: find, routerManager: this});\n return find;\n } else {\n const empty = await this._handleNotFoundRouting(rootRouter, intent);\n this.subject.next({intent: intent, routerModule: empty, routerManager: this});\n return empty;\n }\n }\n\n /**\n * URL과 일치하는 라우트를 찾지 못했을 경우를 처리합니다.\n * \"Not Found\" 상태를 나타내는 비어있는 RouterModule 객체를 생성하여 반환합니다.\n * 이 과정에서 rootRouter의 라이프사이클을 호출하여 공통 레이아웃등을 처리할 수 있습니다.\n * @param rootRouter 앱의 최상위 라우터 인스턴스\n * @param intent 확인에 실패한 원본 Intent 객체\n * @private\n */\n private async _handleNotFoundRouting(rootRouter: any, intent: Intent): Promise<RouterModule<any, any>> {\n /*\n * 이전 원본 로직 (참고용)\n * const routers: SimAtomic[] = []; 로 인해 if문이 항상 false가 되어 실제로는 동작하지 않았음.\n *\n * const routers: SimAtomic[] = [];\n * const routerModule = new RouterModule(this.simstanceManager, rootRouter, undefined, routers);\n * const routingDataSet = {intent, routerModule: routerModule, routerManager: this};\n * if (routers.length && routers.length > 0) {\n * for (let i = 0; i < routers.length; i++) {\n * const current = routers[i];\n * const next = routers[i + 1];\n * const value = current.getValue()! as any;\n * // console.log('routerAction!!!!!!!!!3')\n * if (RouterAction.isCanActivate(value)) {\n * await value.canActivate(routingDataSet, next?.getValue() ?? null);\n * }\n * if (RouterAction.isOnRouting(value)) {\n * await value.onRouting(routingDataSet);\n * }\n * }\n * }\n * this.activeRouterModule = routerModule;\n * return this.activeRouterModule as RouterModule<any, any>;\n */\n const routerModule = new RouterModule(this.simstanceManager, rootRouter, undefined, []);\n const routingDataSet: RoutingDataSet = {intent, routerModule: routerModule, routerManager: this};\n\n const value = rootRouter;\n if (RouterAction.isCanActivate(value)) {\n await value.canActivate(routingDataSet, null);\n }\n if (RouterAction.isOnRouting(value)) {\n await value.onRouting(routingDataSet);\n }\n\n this.activeRouterModule = routerModule;\n return this.activeRouterModule;\n }\n\n\n private getExecuteModule(router: SimAtomic, intent: Intent, parentRouters: SimAtomic[], option?: RoutingOption): [RouterModule, SimAtomic[]] | undefined {\n const path = intent.pathname;\n const routerConfig = router.getConfig<RouterConfig>(RouterMetadataKey);\n if (routerConfig) {\n // filter\n\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(routerConfig.filters)) {\n filters.push(...routerConfig.filters);\n } else if (routerConfig.filters) {\n filters.push(routerConfig.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (noAccept) {\n return;\n }\n\n const routerStrings = parentRouters.map(it => it.getConfig<RouterConfig>(RouterMetadataKey)?.path || '');\n const isRoot = this.isRootUrl(routerConfig.path, routerStrings, path)\n // console.log('----------routerConfig.path', routerConfig.path, 'isRoot', isRoot, 'routerStrings', routerStrings, 'path', path);\n if (isRoot) {\n const currentParentRouters = [...parentRouters, router];\n // first find child routers\n if (routerConfig.routers && routerConfig.routers.length > 0) {\n let bestMatchModule: [RouterModule<SimAtomic, any>, SimAtomic[]] | undefined = undefined;\n let bestMatchLength = -1;\n\n for (const child of routerConfig.routers) {\n const routerAtomic = new SimAtomic({targetKeyType: child, originalType: child}, this.simstanceManager);\n const executeModule = this.getExecuteModule(routerAtomic, intent, currentParentRouters, option)\n\n if (executeModule) {\n const [rm, chains] = executeModule;\n const currentMatchLength = rm.path?.length || 0;\n if (currentMatchLength > bestMatchLength) {\n bestMatchLength = currentMatchLength;\n bestMatchModule = executeModule;\n } else if (currentMatchLength === bestMatchLength) {\n if (option?.find?.router === 'last') {\n bestMatchModule = executeModule;\n }\n }\n }\n }\n if (bestMatchModule) {\n return bestMatchModule;\n }\n }\n // second find my child routers\n const module = this.findRouterOrModule(router, routerConfig, routerStrings, intent)\n if (module) {\n return [module, currentParentRouters];\n }\n }\n }\n }\n // path: 지금 내 라우터의 path, parentRoots: 부모router path들, url: 사용자가 원하는 full intent url\n private isRootUrl(path: string | undefined, parentRoots: string[], url: string): boolean {\n const searchString = parentRoots.join('') + (path || '');//현재까지 경로 내포함\n if (searchString === '/') {\n return true;\n }\n const searchs = searchString.split('/');\n const urls = url.split('/')\n const trimmedUrls = urls.slice(0, searchs.length).join('/');\n // console.log('!!searchString', searchString, 'url', trimmedUrls);\n return !!Expression.Path.pathNameData(trimmedUrls, searchString);\n // return url.startsWith(searchString)\n }\n\n private _collectAllMatchingModules(router: SimAtomic, intent: Intent, parentRouters: SimAtomic[]): RouterModule[] {\n const matches: RouterModule[] = [];\n const path = intent.pathname;\n const routerConfig = router.getConfig<RouterConfig>(RouterMetadataKey);\n\n if (routerConfig) {\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(routerConfig.filters)) {\n filters.push(...routerConfig.filters);\n } else if (routerConfig.filters) {\n filters.push(routerConfig.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (noAccept) {\n return matches;\n }\n\n const routerStrings = parentRouters.map(it => it.getConfig<RouterConfig>(RouterMetadataKey)?.path || '');\n const isRoot = this.isRootUrl(routerConfig.path, routerStrings, path)\n\n if (isRoot) {\n const currentParentRouters = [...parentRouters, router];\n\n // Collect matches from child routers\n if (routerConfig.routers && routerConfig.routers.length > 0) {\n for (const child of routerConfig.routers) {\n const routerAtomic = new SimAtomic({targetKeyType:child, originalType: child}, this.simstanceManager);\n matches.push(...this._collectAllMatchingModules(routerAtomic, intent, currentParentRouters));\n }\n }\n\n // Collect matches from current router's routes or the router itself\n const module = this.findRouterOrModule(router, routerConfig, routerStrings, intent);\n if (module) {\n module.routerChains = currentParentRouters;\n matches.push(module);\n }\n }\n }\n return matches;\n }\n\n private findRouterOrModule(router: SimAtomic, routerData: RouterConfig, parentRoots: string[], intent: Intent): RouterModule | undefined {\n // 1. Try to find an exact route module match\n const module = this.findRouting(router, routerData, parentRoots, intent);\n if (module?.module) {\n module.intent = intent;\n return module;\n }\n\n // 2. If no exact module, check if the intent path matches the router's path\n const urlRoot = parentRoots.join('') + (routerData.path || '');\n if (this.isRootUrl(routerData.path, parentRoots, intent.pathname)) {\n const rm = new RouterModule(this.simstanceManager, router);\n rm.intent = intent;\n rm.path = urlRoot;\n rm.pathData = intent.getPathnameData(urlRoot);\n return rm;\n }\n return undefined;\n }\n\n private findRouting(router: SimAtomic, routerData: RouterConfig, parentRoots: string[], intent: Intent): RouterModule | undefined {\n // console.log('findRouting', routerData.route);\n const urlRoot = parentRoots.join('') + routerData.path\n if (routerData.route) {\n for (const it of Object.keys(routerData.route).filter(it => !it.startsWith('_'))) {\n const path = urlRoot + it;\n const pathnameData = intent.getPathnameData(path);\n if (pathnameData) {\n try {\n const dataSet = this.findRouteProperty(routerData.route, it, intent);\n const rm = new RouterModule(this.simstanceManager, router, dataSet.child);\n rm.data = dataSet.data;\n rm.path = path;\n rm.pathData = pathnameData;\n rm.propertyKeys = dataSet.propertyKeys;\n return rm;\n } catch (e) {\n }\n }\n }\n }\n }\n\n private findRouteProperty(route: Route, propertyName: string, intent: Intent): { child?: {targetKeyType? : ConstructorType<any> | Function, originalType: ConstructorType<any> | Function}, data?: any, propertyKeys?: (string | symbol)[] } {\n let child: {targetKeyType? : ConstructorType<any> | Function, originalType: ConstructorType<any> | Function} | undefined;\n let data: any;\n let propertyKeys: undefined | (string | symbol)[];\n const routeElement = route[propertyName];\n if (typeof routeElement === 'function') {\n child = {targetKeyType: routeElement, originalType: routeElement};\n } else if (typeof routeElement === 'symbol') {\n child = this.simstanceManager.findLastSim(routeElement)?.type;\n } else if (typeof routeElement === 'string') {\n return this.findRouteProperty(route, routeElement, intent)\n } else if (Array.isArray(routeElement)) {\n const r = routeElement?.[0];\n if (typeof r === 'object' && 'filters' in r && 'target' in r) {\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(r.filters)) {\n filters.push(...r.filters);\n } else if (r.filters) {\n filters.push(r.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (!noAccept) {\n child = {targetKeyType: r.target, originalType: r.target};\n }\n } else {\n child = {targetKeyType: r, originalType:r};\n }\n data = routeElement?.[1];\n } else if (typeof routeElement === 'object' && 'target' in routeElement && 'propertyKeys' in routeElement) { // RouteTargetMethod\n const noAccept = routeElement.filters?.filter(it => it).some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (!noAccept) {\n child = {targetKeyType: routeElement.target, originalType: routeElement.target};\n propertyKeys = routeElement.propertyKeys as (string | symbol)[];\n }\n } else if (typeof routeElement === 'object' && 'filters' in routeElement && 'target' in routeElement) {\n const filters: (RouteFilter | ConstructorType<any>)[] = [];\n if (Array.isArray(routeElement.filters)) {\n filters.push(...routeElement.filters);\n } else if (routeElement.filters) {\n filters.push(routeElement.filters);\n }\n const noAccept = filters.some(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it)?.isAccept(intent) === false);\n if (!noAccept) {\n child = {targetKeyType: routeElement.target, originalType:routeElement.target};\n }\n }\n return {\n child,\n data,\n propertyKeys\n }\n }\n}\n", "import { Intent, PublishType } from './Intent';\nimport { SimstanceManager } from '../simstance/SimstanceManager';\nimport { Sim } from '../decorators/SimDecorator';\nimport { SimAtomic } from '../simstance/SimAtomic';\nimport { Subject } from '@dooboostore/core/message/Subject';\nimport { RouterManager } from '../route/RouterManager';\nimport { RouterMetadataKey, RouterConfig } from '../decorators/route/Router';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { SimOption } from '../SimOption';\n\nexport type RouterPublishType = { router: `Router(${string}):${string}`; rootRouter: ConstructorType<any> };\nexport const isRouterPublishType = (it: any): it is RouterPublishType =>\n typeof it === 'object' &&\n typeof it.router === 'string' &&\n typeof it.rootRouter === 'function';\n\n@Sim\nexport class IntentManager {\n private subject = new Subject<Intent>();\n constructor(\n private simstanceManager: SimstanceManager,\n private routerManager: RouterManager,\n private simOption: SimOption\n ) {}\n\n get observable() {\n return this.subject.asObservable();\n }\n public async publish(it: string, data?: any): Promise<any[]>;\n public async publish(it: RouterPublishType, data?: any): Promise<any[]>;\n public async publish(it: Intent): Promise<any[]>;\n public async publish(it: Intent | string | RouterPublishType, data?: any): Promise<any[]> {\n const target: SimAtomic<any> | any[] = [];\n const rootRouter = isRouterPublishType(it) ? it.rootRouter : this.simOption.rootRouter;\n it = isRouterPublishType(it) ? it.router : it;\n\n const routerMatch = typeof it === 'string' && it.match(/^Router\\((.+)\\):\\/(.*)$/); // Escaped parentheses and slash, no quotes\n if (routerMatch && typeof it === 'string') {\n const routerBasePath = routerMatch[1];\n const actualPath = routerMatch[2];\n const routerModule = await this.routerManager.routing(routerBasePath,{router:rootRouter});\n const instance = routerModule.getModuleInstance();\n if (instance) {\n target.push(instance);\n }\n it = new Intent(actualPath, data);\n } else if (typeof it === 'string') {\n it = new Intent(it, data);\n }\n\n let intent = it as Intent;\n const r: any[] = [];\n\n if (!routerMatch) {\n if (intent.symbols) {\n target.push(...intent.symbols.map(sym => this.simstanceManager.findSims(sym)).flat());\n } else if (intent.scheme) {\n target.push(...this.simstanceManager.getSimConfig(intent.scheme));\n } else {\n target.push(...this.simstanceManager.getSimAtomics());\n }\n }\n const targetInstances = target.map(it => {\n if (it instanceof SimAtomic) {\n return it.getValue();\n } else {\n return it;\n }\n });\n\n this.subject.next(it);\n\n targetInstances.forEach(data => {\n let orNewSim = data;\n if (orNewSim) {\n if (intent.paths.length > 0) {\n let callthis = orNewSim;\n let lastProp = '';\n intent.paths\n .filter(i => i)\n .forEach(i => {\n callthis = orNewSim;\n orNewSim = orNewSim?.[i];\n lastProp = i;\n });\n if (orNewSim && typeof orNewSim === 'function') {\n if (PublishType.DATA_PARAMETERS === intent.publishType) {\n r.push(orNewSim.call(callthis, intent.data));\n } else if (PublishType.INLINE_DATA_PARAMETERS === intent.publishType) {\n r.push(orNewSim.call(callthis, ...intent.data));\n } else {\n r.push(orNewSim.call(callthis, intent));\n }\n } else if (orNewSim) {\n callthis[lastProp] = intent.data;\n r.push(callthis[lastProp]);\n }\n } else {\n if (PublishType.DATA_PARAMETERS === intent.publishType) {\n r.push(orNewSim?.intentSubscribe?.(intent.data));\n } else if (PublishType.INLINE_DATA_PARAMETERS === intent.publishType) {\n r.push(orNewSim?.intentSubscribe?.(...intent.data));\n } else {\n r.push(orNewSim?.intentSubscribe?.(intent));\n }\n }\n }\n });\n return r;\n }\n}\n", "import { SimstanceManager } from './simstance/SimstanceManager';\nimport { SimOption } from './SimOption';\nimport { IntentManager, isRouterPublishType, RouterPublishType } from './intent/IntentManager';\nimport { RouterManager, RoutingOption } from './route/RouterManager';\nimport { Intent } from './intent/Intent';\nimport { ConstructorType, GenericClassDecorator } from '@dooboostore/core/types';\nimport { RouterModule } from './route/RouterModule';\nimport { SimAtomic } from './simstance/SimAtomic';\nimport { SimNoSuch } from './throwable/SimNoSuch';\nimport { containers, Sim, SimConfig } from './decorators/SimDecorator';\n\nexport class SimpleApplication {\n public simstanceManager: SimstanceManager;\n public intentManager: IntentManager;\n public routerManager: RouterManager;\n // public rootRouter?: ConstructorType<any>;\n\n // constructor();\n // constructor(option: SimOption);\n // constructor(rootRouter?: ConstructorType<Object> | Function);\n // constructor(rootRouter?: ConstructorType<Object> | Function, option?: SimOption);\n // constructor(rootRouter?: (ConstructorType<Object> | Function) | SimOption, option = new SimOption()) {\n constructor(public option: SimOption = new SimOption()) {\n // if (option.rootRouter instanceof SimOption) {\n // option = rootRouter;\n // } else if (typeof option.rootRouter === 'function') {\n // this.rootRouter = rootRouter;\n // }\n\n this.simstanceManager = new SimstanceManager(this, option);\n // this.simstanceManager.setStoreSet(SimpleApplication, this);\n this.simstanceManager.setStoreSet(SimstanceManager, this.simstanceManager);\n // cacheManager\uB294 \uC0AC\uC6A9\uC790\uAC00 \uBD88\uB7EC\uB2E4 \uC0AC\uC6A9\uD560\uB54C \uB728\uB3C4\uB85D. \uBBF8\uB9AC \uCD94\uAC00\uC548\uD574\uC900\uB2E4.\n this.routerManager = this.simstanceManager.proxy(new RouterManager(this.simstanceManager, option));\n this.intentManager = this.simstanceManager.proxy(new IntentManager(this.simstanceManager, this.routerManager,option));\n this.simstanceManager.setStoreSet(IntentManager, this.intentManager);\n this.simstanceManager.setStoreSet(RouterManager, this.routerManager);\n containers.add(this);\n }\n\n public getSimstanceManager() {\n return this.simstanceManager;\n }\n\n public getIntentManager() {\n return this.intentManager;\n }\n\n public getRouterManager() {\n return this.routerManager;\n }\n\n public run(otherInstanceSim?: Map<ConstructorType<any> | Function | SimConfig, any>) {\n this.simstanceManager.run(otherInstanceSim);\n return this.simstanceManager;\n }\n\n public simAtomic<T>(type: ConstructorType<T> | Function | Symbol) {\n if (typeof type === 'symbol') {\n return this.simstanceManager.findFirstSim(type);\n } else if (typeof type === 'function') {\n return this.simstanceManager.findFirstSim({type:type});\n // return new SimAtomic<T>(type, this.simstanceManager);\n }\n }\n public simAtomics<T>(type: ConstructorType<T> | Function | Symbol) {\n if (typeof type === 'symbol') {\n return this.simstanceManager.findSims(type) ?? [];\n } else if (typeof type === 'function') {\n return this.simstanceManager.findSims({type}) ?? [];\n } else {\n return [];\n }\n }\n\n public getInstance<T>(type: ConstructorType<T>) {\n const i = this.sim<T>(type);\n if (i) {\n return i;\n } else {\n throw new SimNoSuch('SimNoSuch: no simple instance(getInstance) ' + 'name:' + type?.prototype?.constructor?.name + ',' + type)\n }\n }\n\n public sim<T>(type: ConstructorType<T> | Function | Symbol): T | undefined {\n return this.simAtomic<T>(type)?.getValue();\n }\n public sims<T>(type: ConstructorType<T> | Function | Symbol) {\n return this.simAtomics(type).map(it => it.getValue())\n }\n\n public addSim(target: ConstructorType<any> | Function): void;\n public addSim(config: SimConfig, target: ConstructorType<any> | Function | any): GenericClassDecorator<ConstructorType<any> | Function>;\n public addSim(configOrTarget: SimConfig | ConstructorType<any> | Function, target?: ConstructorType<any> | Function | any): void | GenericClassDecorator<ConstructorType<any> | Function> {\n const r: any = Sim(configOrTarget as any);\n if (typeof r === 'function' && target) {\n r(target);\n }\n }\n\n\n public publishIntent(i: string, data?: any): Promise<any[]>;\n public publishIntent(i: RouterPublishType): Promise<any[]>;\n public publishIntent(i: Intent): Promise<any[]>;\n public publishIntent(i: Intent | string | RouterPublishType, data?: any): Promise<any[]> {\n if (i instanceof Intent) {\n return this.intentManager.publish(i);\n } else if (isRouterPublishType(i)) {\n return this.intentManager.publish(i, data);\n } else {\n return this.intentManager.publish(i, data);\n }\n }\n\n public routing<R = SimAtomic, M = any>(i: string, option?: RoutingOption): Promise<RouterModule<R, M>>;\n public routing<R = SimAtomic, M = any>(i: { path: string, data?: any }, option?: RoutingOption): Promise<RouterModule<R, M>>;\n public routing<R = SimAtomic, M = any>(i: Intent, option?: RoutingOption): Promise<RouterModule<R, M>>;\n public routing<R = SimAtomic, M = any>(i: { path: string, data?: any } | string | Intent, option?: RoutingOption): Promise<RouterModule<R, M>> {\n if (i instanceof Intent) {\n return this.routerManager.routing<R, M>(i, option);\n } else if (typeof i === 'string') {\n const intent = new Intent(i);\n return this.routerManager.routing<R, M>(intent, option);\n } else {\n const intent = new Intent(i.path, i.data);\n return this.routerManager.routing<R, M>(intent, option);\n }\n }\n}\n", "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", "import { ConstructorType } from '@dooboostore/core/types';\nimport {MethodParameter, ReflectField} from '../../types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nconst ValidMetadataKey = Symbol('ValidMetadataKey');\nexport const Valid: MethodParameter = (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n if (propertyKey && typeof target === 'object') { // <-- object: method\n target = target.constructor;\n const existingRequiredParameters: number[] = Reflect.getOwnMetadata(ValidMetadataKey, target, propertyKey) || [];\n existingRequiredParameters.push(parameterIndex);\n Reflect.defineMetadata(ValidMetadataKey, existingRequiredParameters, target, propertyKey);\n } else if (!propertyKey || typeof target === 'function') { // <-- function: constructor\n const existingRequiredParameters: number[] = Reflect.getOwnMetadata(ValidMetadataKey, target) || [];\n existingRequiredParameters.push(parameterIndex);\n Reflect.defineMetadata(ValidMetadataKey, existingRequiredParameters, target);\n }\n}\n\nexport const getValidIndex = (target: ConstructorType<any> | Function | any, propertyKey?: string | symbol): number[] => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n if (propertyKey) {\n const parameters: number[] = Reflect.getOwnMetadata(ValidMetadataKey, target, propertyKey);\n return parameters ?? [];\n } else {\n return ReflectUtils.getMetadata(ValidMetadataKey, target) ?? [];\n }\n}\n\nexport type Validator = (value: any, ...params: any[]) => boolean;\nconst ValidationMetadataKey = Symbol('ValidationMetadataKey');\nexport type SaveValidator = {\n propertyKey: string | symbol;\n validator: Validator;\n}\nexport const Validation = (validator: Validator): ReflectField => {\n return (target: Object, propertyKey: string | symbol) => {\n const saves = (ReflectUtils.getMetadata(ValidationMetadataKey, target.constructor) ?? []) as SaveValidator[];\n saves.push({\n propertyKey,\n validator\n });\n ReflectUtils.defineMetadata(ValidationMetadataKey, saves, target.constructor);\n ReflectUtils.defineMetadata(ValidationMetadataKey, validator, target, propertyKey);\n }\n}\n\nexport const getValidator = (target: any, propertyKey: string): Validator | undefined => {\n return ReflectUtils.getMetadata(ValidationMetadataKey, target, propertyKey);\n}\n\nexport const getValidators = (target: any): SaveValidator[] => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(ValidationMetadataKey, target) ?? [];\n}\n\nexport const Regexp = (regexp: RegExp) => {\n const content: Validator = (value: any, ...params: any[]) => {\n return regexp.test(value);\n };\n return content;\n}\n\nexport const NotNull: Validator = (value: any, ...params: any[]) => {\n return value !== null;\n}\n\nexport const NotEmpty: Validator = (value: any, ...params: any[]) => {\n return value !== null && value !== undefined && (typeof value === 'string' && value.length > 0 || Array.isArray(value) && value.length > 0);\n}\n\nexport type ValidationResult = {\n name: string;\n valid: boolean;\n message?: string;\n}\nexport const execValidationInValid = (obj: any) => {\n return execValidation(obj).filter(it => !it.valid);\n}\n\nexport const execValidation = (obj: any) => {\n const validators = getValidators(obj);\n const reesults: ValidationResult[] = [];\n validators.forEach(it => {\n reesults.push({\n name: it.propertyKey,\n valid: it.validator(it.propertyKey, it),\n message: ''\n } as ValidationResult)\n });\n return reesults;\n}\n", "import {ValidationResult} from '../decorators/validate/Validation';\n\nexport class ValidException {\n constructor(public result: ValidationResult[]) {\n }\n\n toString(): string {\n return this.result ? JSON.stringify(this.result) : 'undefined';\n }\n\n get message() {\n return this.toString();\n }\n}"],
5
+ "mappings": "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",
6
+ "names": ["mime", "charset", "path", "extension", "gzip", "d", "b", "path", "PatchError", "path", "Mirror", "ObserverInfo", "path", "HttpMethod", "HttpStatus", "Mimes", "ReflectUtils", "UrlMappingSituationType", "process", "propertyKey", "descriptor", "ValidUtils", "RandomUtils", "uuid", "hex", "FileUtils", "path", "ConvertUtils", "path", "path", "fs", "mime", "InjectSituationType", "StringUtils", "Expression", "Group", "Path", "PublishType", "MathUtil", "min", "max", "minMax", "sum", "ratio", "x", "bezier", "ObjectUtils", "Path", "path", "tokens", "Script", "ConvertUtils", "obj", "ConvertUtils", "mime", "import_fs", "import_path", "import_mime_types", "path", "mime", "fs", "jsonpatch", "Lifecycle", "target", "ResourceResolver", "containers", "ExceptionHandlerSituationType", "ConvertUtils", "e", "join", "RouterAction", "RouterManager", "path", "it", "__decorate", "IntentManager", "it", "data", "__decorate", "_a", "_b", "import_url", "HttpsServer", "HttpServer", "it", "data"]
7
7
  }