@dooboostore/simple-boot-http-server 1.0.23 → 1.0.25

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 (259) hide show
  1. package/README.md +113 -0
  2. package/dist/cjs/SimpleBootHttpServer.js +80 -40
  3. package/dist/cjs/SimpleBootHttpServer.js.map +3 -3
  4. package/dist/cjs/codes/HttpHeaders.js +14 -3
  5. package/dist/cjs/codes/HttpHeaders.js.map +2 -2
  6. package/dist/cjs/codes/Mimes.js +2 -0
  7. package/dist/cjs/codes/Mimes.js.map +2 -2
  8. package/dist/cjs/decorators/MethodMapping.js +40 -9
  9. package/dist/cjs/decorators/MethodMapping.js.map +3 -3
  10. package/dist/cjs/endpoints/WebSocketEndPoint.js +16 -0
  11. package/dist/cjs/endpoints/WebSocketEndPoint.js.map +7 -0
  12. package/dist/cjs/errors/BadRequestError.js +2 -1
  13. package/dist/cjs/errors/BadRequestError.js.map +2 -2
  14. package/dist/cjs/errors/ForbiddenError.js +2 -1
  15. package/dist/cjs/errors/ForbiddenError.js.map +2 -2
  16. package/dist/cjs/errors/InternalServerError.js +2 -1
  17. package/dist/cjs/errors/InternalServerError.js.map +2 -2
  18. package/dist/cjs/errors/NotFoundError.js +2 -1
  19. package/dist/cjs/errors/NotFoundError.js.map +2 -2
  20. package/dist/cjs/errors/UnauthorizedError.js +2 -1
  21. package/dist/cjs/errors/UnauthorizedError.js.map +2 -2
  22. package/dist/cjs/filters/CacheFilter.js +75 -35
  23. package/dist/cjs/filters/CacheFilter.js.map +3 -3
  24. package/dist/cjs/filters/IntentSchemeFilter.js +97 -0
  25. package/dist/cjs/filters/IntentSchemeFilter.js.map +7 -0
  26. package/dist/cjs/filters/ResourceFilter.js +6 -2
  27. package/dist/cjs/filters/ResourceFilter.js.map +2 -2
  28. package/dist/cjs/filters/TopicProtocolFilter.js +343 -0
  29. package/dist/cjs/filters/TopicProtocolFilter.js.map +7 -0
  30. package/dist/cjs/filters/index.js +5 -1
  31. package/dist/cjs/filters/index.js.map +2 -2
  32. package/dist/cjs/index.js +30 -0
  33. package/dist/cjs/index.js.map +2 -2
  34. package/dist/cjs/inject/InjectSituationType.js +1 -1
  35. package/dist/cjs/inject/InjectSituationType.js.map +2 -2
  36. package/dist/cjs/models/RequestResponse.js +70 -91
  37. package/dist/cjs/models/RequestResponse.js.map +3 -3
  38. package/dist/cjs/models/datas/body/index.js +28 -0
  39. package/dist/cjs/models/datas/body/index.js.map +7 -0
  40. package/dist/cjs/models/datas/index.js +32 -0
  41. package/dist/cjs/models/datas/index.js.map +7 -0
  42. package/dist/cjs/models/datas/path/ReqPathData.js +29 -0
  43. package/dist/cjs/models/datas/path/ReqPathData.js.map +7 -0
  44. package/dist/cjs/models/datas/{search → path}/ReqSearchParamsObj.js.map +1 -1
  45. package/dist/cjs/models/datas/path/index.js +24 -0
  46. package/dist/cjs/models/datas/path/index.js.map +7 -0
  47. package/dist/cjs/models/index.js +4 -16
  48. package/dist/cjs/models/index.js.map +2 -2
  49. package/dist/cjs/models/method/index.js +22 -0
  50. package/dist/cjs/models/method/index.js.map +7 -0
  51. package/dist/cjs/models/method/patch/index.js +22 -0
  52. package/dist/cjs/models/method/patch/index.js.map +7 -0
  53. package/dist/cjs/option/HttpServerOption.js +25 -5
  54. package/dist/cjs/option/HttpServerOption.js.map +2 -2
  55. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js +144 -0
  56. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js.map +7 -0
  57. package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js +35 -0
  58. package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js.map +7 -0
  59. package/dist/cjs/proxy/TopicProtocolApiServiceProxy.js +324 -0
  60. package/dist/cjs/proxy/TopicProtocolApiServiceProxy.js.map +7 -0
  61. package/dist/cjs/proxy/index.js +26 -0
  62. package/dist/cjs/proxy/index.js.map +7 -0
  63. package/dist/cjs/resolvers/ResourceResolver.js +2 -2
  64. package/dist/cjs/resolvers/ResourceResolver.js.map +2 -2
  65. package/dist/cjs/session/SessionManager.js +2 -2
  66. package/dist/cjs/session/SessionManager.js.map +2 -2
  67. package/dist/cjs/websocket/WebSocketClient.js +554 -0
  68. package/dist/cjs/websocket/WebSocketClient.js.map +7 -0
  69. package/dist/cjs/websocket/WebSocketManager.js +652 -0
  70. package/dist/cjs/websocket/WebSocketManager.js.map +7 -0
  71. package/dist/cjs/websocket/index.js +24 -0
  72. package/dist/cjs/websocket/index.js.map +7 -0
  73. package/dist/esm/SimpleBootHttpServer.js +60 -20
  74. package/dist/esm/SimpleBootHttpServer.js.map +2 -2
  75. package/dist/esm/codes/HttpHeaders.js +12 -2
  76. package/dist/esm/codes/HttpHeaders.js.map +2 -2
  77. package/dist/esm/codes/Mimes.js +2 -0
  78. package/dist/esm/codes/Mimes.js.map +2 -2
  79. package/dist/esm/decorators/MethodMapping.js +24 -3
  80. package/dist/esm/decorators/MethodMapping.js.map +2 -2
  81. package/dist/esm/endpoints/WebSocketEndPoint.js +1 -0
  82. package/dist/esm/endpoints/WebSocketEndPoint.js.map +7 -0
  83. package/dist/esm/errors/BadRequestError.js +2 -1
  84. package/dist/esm/errors/BadRequestError.js.map +2 -2
  85. package/dist/esm/errors/ForbiddenError.js +2 -1
  86. package/dist/esm/errors/ForbiddenError.js.map +2 -2
  87. package/dist/esm/errors/InternalServerError.js +2 -1
  88. package/dist/esm/errors/InternalServerError.js.map +2 -2
  89. package/dist/esm/errors/NotFoundError.js +2 -1
  90. package/dist/esm/errors/NotFoundError.js.map +2 -2
  91. package/dist/esm/errors/UnauthorizedError.js +2 -1
  92. package/dist/esm/errors/UnauthorizedError.js.map +2 -2
  93. package/dist/esm/filters/CacheFilter.js +67 -27
  94. package/dist/esm/filters/CacheFilter.js.map +2 -2
  95. package/dist/esm/filters/IntentSchemeFilter.js +74 -0
  96. package/dist/esm/filters/IntentSchemeFilter.js.map +7 -0
  97. package/dist/esm/filters/ResourceFilter.js +6 -2
  98. package/dist/esm/filters/ResourceFilter.js.map +2 -2
  99. package/dist/esm/filters/TopicProtocolFilter.js +310 -0
  100. package/dist/esm/filters/TopicProtocolFilter.js.map +7 -0
  101. package/dist/esm/filters/index.js +2 -0
  102. package/dist/esm/filters/index.js.map +2 -2
  103. package/dist/esm/index.js +13 -0
  104. package/dist/esm/index.js.map +2 -2
  105. package/dist/esm/inject/InjectSituationType.js +1 -1
  106. package/dist/esm/inject/InjectSituationType.js.map +2 -2
  107. package/dist/esm/models/RequestResponse.js +65 -86
  108. package/dist/esm/models/RequestResponse.js.map +2 -2
  109. package/dist/esm/models/datas/body/index.js +5 -0
  110. package/dist/esm/models/datas/body/index.js.map +7 -0
  111. package/dist/esm/models/datas/index.js +7 -0
  112. package/dist/esm/models/datas/index.js.map +7 -0
  113. package/dist/esm/models/datas/path/ReqPathData.js +6 -0
  114. package/dist/esm/models/datas/path/ReqPathData.js.map +7 -0
  115. package/dist/esm/models/datas/{search → path}/ReqSearchParamsObj.js.map +1 -1
  116. package/dist/esm/models/datas/path/index.js +3 -0
  117. package/dist/esm/models/datas/path/index.js.map +7 -0
  118. package/dist/esm/models/index.js +2 -8
  119. package/dist/esm/models/index.js.map +2 -2
  120. package/dist/esm/models/method/index.js +2 -0
  121. package/dist/esm/models/method/index.js.map +7 -0
  122. package/dist/esm/models/method/patch/index.js +2 -0
  123. package/dist/esm/models/method/patch/index.js.map +7 -0
  124. package/dist/esm/option/HttpServerOption.js +24 -4
  125. package/dist/esm/option/HttpServerOption.js.map +2 -2
  126. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js +121 -0
  127. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js.map +7 -0
  128. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js +12 -0
  129. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js.map +7 -0
  130. package/dist/esm/proxy/TopicProtocolApiServiceProxy.js +301 -0
  131. package/dist/esm/proxy/TopicProtocolApiServiceProxy.js.map +7 -0
  132. package/dist/esm/proxy/index.js +4 -0
  133. package/dist/esm/proxy/index.js.map +7 -0
  134. package/dist/esm/resolvers/ResourceResolver.js +1 -1
  135. package/dist/esm/resolvers/ResourceResolver.js.map +1 -1
  136. package/dist/esm/session/SessionManager.js +1 -1
  137. package/dist/esm/session/SessionManager.js.map +1 -1
  138. package/dist/esm/websocket/WebSocketClient.js +529 -0
  139. package/dist/esm/websocket/WebSocketClient.js.map +7 -0
  140. package/dist/esm/websocket/WebSocketManager.js +622 -0
  141. package/dist/esm/websocket/WebSocketManager.js.map +7 -0
  142. package/dist/esm/websocket/index.js +3 -0
  143. package/dist/esm/websocket/index.js.map +7 -0
  144. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +18209 -5299
  145. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +4 -4
  146. package/dist/types/SimpleBootHttpServer.d.ts +5 -3
  147. package/dist/types/SimpleBootHttpServer.d.ts.map +1 -1
  148. package/dist/types/codes/HttpHeaders.d.ts +3 -0
  149. package/dist/types/codes/HttpHeaders.d.ts.map +1 -1
  150. package/dist/types/codes/Mimes.d.ts +3 -1
  151. package/dist/types/codes/Mimes.d.ts.map +1 -1
  152. package/dist/types/decorators/MethodMapping.d.ts +13 -2
  153. package/dist/types/decorators/MethodMapping.d.ts.map +1 -1
  154. package/dist/types/endpoints/WebSocketEndPoint.d.ts +17 -0
  155. package/dist/types/endpoints/WebSocketEndPoint.d.ts.map +1 -0
  156. package/dist/types/errors/BadRequestError.d.ts +2 -2
  157. package/dist/types/errors/BadRequestError.d.ts.map +1 -1
  158. package/dist/types/errors/ForbiddenError.d.ts +2 -2
  159. package/dist/types/errors/ForbiddenError.d.ts.map +1 -1
  160. package/dist/types/errors/InternalServerError.d.ts +2 -2
  161. package/dist/types/errors/InternalServerError.d.ts.map +1 -1
  162. package/dist/types/errors/NotFoundError.d.ts +2 -2
  163. package/dist/types/errors/NotFoundError.d.ts.map +1 -1
  164. package/dist/types/errors/UnauthorizedError.d.ts +2 -2
  165. package/dist/types/errors/UnauthorizedError.d.ts.map +1 -1
  166. package/dist/types/filters/CacheFilter.d.ts +6 -0
  167. package/dist/types/filters/CacheFilter.d.ts.map +1 -1
  168. package/dist/types/filters/IntentSchemeFilter.d.ts +20 -0
  169. package/dist/types/filters/IntentSchemeFilter.d.ts.map +1 -0
  170. package/dist/types/filters/ResourceFilter.d.ts.map +1 -1
  171. package/dist/types/filters/TopicProtocolFilter.d.ts +34 -0
  172. package/dist/types/filters/TopicProtocolFilter.d.ts.map +1 -0
  173. package/dist/types/filters/index.d.ts +2 -0
  174. package/dist/types/filters/index.d.ts.map +1 -1
  175. package/dist/types/index.d.ts +13 -0
  176. package/dist/types/index.d.ts.map +1 -1
  177. package/dist/types/inject/InjectSituationType.d.ts.map +1 -1
  178. package/dist/types/models/RequestResponse.d.ts +12 -7
  179. package/dist/types/models/RequestResponse.d.ts.map +1 -1
  180. package/dist/types/models/datas/body/index.d.ts +5 -0
  181. package/dist/types/models/datas/body/index.d.ts.map +1 -0
  182. package/dist/types/models/datas/index.d.ts +7 -0
  183. package/dist/types/models/datas/index.d.ts.map +1 -0
  184. package/dist/types/models/datas/path/ReqPathData.d.ts +4 -0
  185. package/dist/types/models/datas/path/ReqPathData.d.ts.map +1 -0
  186. package/dist/types/models/datas/path/ReqSearchParamsObj.d.ts.map +1 -0
  187. package/dist/types/models/datas/path/index.d.ts +3 -0
  188. package/dist/types/models/datas/path/index.d.ts.map +1 -0
  189. package/dist/types/models/index.d.ts +2 -8
  190. package/dist/types/models/index.d.ts.map +1 -1
  191. package/dist/types/models/method/index.d.ts +2 -0
  192. package/dist/types/models/method/index.d.ts.map +1 -0
  193. package/dist/types/models/method/patch/index.d.ts +2 -0
  194. package/dist/types/models/method/patch/index.d.ts.map +1 -0
  195. package/dist/types/option/HttpServerOption.d.ts +30 -20
  196. package/dist/types/option/HttpServerOption.d.ts.map +1 -1
  197. package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts +16 -0
  198. package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts.map +1 -0
  199. package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts +5 -0
  200. package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts.map +1 -0
  201. package/dist/types/proxy/TopicProtocolApiServiceProxy.d.ts +28 -0
  202. package/dist/types/proxy/TopicProtocolApiServiceProxy.d.ts.map +1 -0
  203. package/dist/types/proxy/index.d.ts +4 -0
  204. package/dist/types/proxy/index.d.ts.map +1 -0
  205. package/dist/types/session/SessionManager.d.ts +2 -17
  206. package/dist/types/session/SessionManager.d.ts.map +1 -1
  207. package/dist/types/websocket/WebSocketClient.d.ts +88 -0
  208. package/dist/types/websocket/WebSocketClient.d.ts.map +1 -0
  209. package/dist/types/websocket/WebSocketManager.d.ts +163 -0
  210. package/dist/types/websocket/WebSocketManager.d.ts.map +1 -0
  211. package/dist/types/websocket/index.d.ts +3 -0
  212. package/dist/types/websocket/index.d.ts.map +1 -0
  213. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +18108 -5198
  214. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +4 -4
  215. package/dist/umd-bundle/websocket-client.umd.js +11374 -0
  216. package/dist/umd-bundle/websocket-client.umd.js.map +7 -0
  217. package/package.json +24 -15
  218. package/src/SimpleBootHttpServer.ts +367 -313
  219. package/src/codes/HttpHeaders.ts +13 -2
  220. package/src/codes/Mimes.ts +27 -25
  221. package/src/decorators/MethodMapping.ts +17 -4
  222. package/src/endpoints/WebSocketEndPoint.ts +12 -0
  223. package/src/errors/BadRequestError.ts +7 -3
  224. package/src/errors/ForbiddenError.ts +7 -3
  225. package/src/errors/InternalServerError.ts +7 -3
  226. package/src/errors/NotFoundError.ts +7 -3
  227. package/src/errors/UnauthorizedError.ts +7 -3
  228. package/src/filters/CacheFilter.ts +112 -67
  229. package/src/filters/IntentSchemeFilter.ts +69 -0
  230. package/src/filters/ResourceFilter.ts +10 -2
  231. package/src/filters/TopicProtocolFilter.ts +349 -0
  232. package/src/filters/index.ts +2 -0
  233. package/src/index.ts +13 -12
  234. package/src/inject/InjectSituationType.ts +1 -1
  235. package/src/models/RequestResponse.ts +136 -242
  236. package/src/models/datas/body/index.ts +4 -0
  237. package/src/models/datas/index.ts +6 -0
  238. package/src/models/datas/path/ReqPathData.ts +3 -0
  239. package/src/models/datas/path/index.ts +2 -0
  240. package/src/models/index.ts +2 -8
  241. package/src/models/method/index.ts +1 -0
  242. package/src/models/method/patch/index.ts +1 -0
  243. package/src/option/HttpServerOption.ts +73 -23
  244. package/src/proxy/SymbolIntentApiServiceProxy.ts +126 -0
  245. package/src/proxy/SymbolIntentApiServiceProxyBase.ts +16 -0
  246. package/src/proxy/TopicProtocolApiServiceProxy.ts +328 -0
  247. package/src/proxy/index.ts +3 -0
  248. package/src/resolvers/ResourceResolver.ts +1 -1
  249. package/src/session/SessionManager.ts +3 -3
  250. package/src/websocket/WebSocketClient.ts +637 -0
  251. package/src/websocket/WebSocketManager.ts +713 -0
  252. package/src/websocket/index.ts +2 -0
  253. package/tsconfig.json +3 -1
  254. package/README.MD +0 -36
  255. package/dist/types/models/datas/search/ReqSearchParamsObj.d.ts.map +0 -1
  256. /package/dist/cjs/models/datas/{search → path}/ReqSearchParamsObj.js +0 -0
  257. /package/dist/esm/models/datas/{search → path}/ReqSearchParamsObj.js +0 -0
  258. /package/dist/types/models/datas/{search → path}/ReqSearchParamsObj.d.ts +0 -0
  259. /package/src/models/datas/{search → path}/ReqSearchParamsObj.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/websocket/WebSocketManager.ts"],
4
+ "sourcesContent": ["import { Sim } from '@dooboostore/simple-boot';\nimport { WebSocketEndPoint, WebSocketSet } from '../endpoints/WebSocketEndPoint';\nimport { RawData, WebSocket } from 'ws';\nimport { IntentManager } from '@dooboostore/simple-boot';\nimport { RouterManager } from '@dooboostore/simple-boot';\nimport { Intent } from '@dooboostore/simple-boot';\nimport { RandomUtils } from '@dooboostore/core';\nimport { Subject } from '@dooboostore/core';\nexport type WebSocketRequest = { webSocketSet: WebSocketSet; uuid: string; webSocketManager: WebSocketManager; sendEvent: <R>(event: string, body: any, config?: { responseTimeout?: number }) => Promise<R> };\nexport type TopicType = 'intent' | 'router';\nexport type SubscribeType = 'subscribe';\nexport type UnsubscribeType = 'unsubscribe';\nexport type TopicRequest<T = any> = {\n type?: TopicType;\n uuid: string;\n requestUUID: string;\n body?: T;\n};\nexport type TopicSubscribeRequest<T = any> = {\n type: SubscribeType;\n target: string;\n uuid: string;\n body?: T;\n};\nexport type TopicUnsubscribeRequest = {\n type: UnsubscribeType;\n uuid: string;\n};\n\nexport type TopicResponse<T = any> = {\n state: 'success' | 'error';\n // type: TopicType | SubscribeType | UnsubscribeType;\n target: string;\n uuid: string;\n requestUUID?: string;\n body: T;\n};\n\nexport type TopicServerEventRequest<T = any> = {\n type: 'event';\n uuid: string;\n eventUUID: string;\n event: string;\n body?: T;\n};\nexport type TopicServerEventUnSubscribeRequest = {\n type: 'unsubscribe';\n uuid: string;\n};\nexport type TopicServerEventResponse<T = any> = {\n type: 'event';\n uuid: string;\n eventUUID: string;\n body?: T;\n};\n\nexport const isTopicRequest = <T = any>(obj: any): obj is TopicRequest<T> => {\n return typeof obj === 'object' && obj !== null && 'uuid' in obj && typeof obj.uuid === 'string' && (obj.type === undefined || obj.type === 'intent' || obj.type === 'router') && (obj.body === undefined || true);\n};\n\nexport const isTopicSubscribeRequest = <T = any>(obj: any): obj is TopicSubscribeRequest<T> => {\n return typeof obj === 'object' && obj !== null && 'type' in obj && obj.type === 'subscribe' && 'target' in obj && typeof obj.target === 'string' && 'uuid' in obj && typeof obj.uuid === 'string' && (obj.body === undefined || true);\n};\n\nexport const isTopicUnsubscribeRequest = (obj: any): obj is TopicUnsubscribeRequest => {\n return typeof obj === 'object' && obj !== null && 'type' in obj && obj.type === 'unsubscribe' && 'uuid' in obj && typeof obj.uuid === 'string';\n};\n\nexport const isTopicResponse = <T = any>(obj: any): obj is TopicResponse<T> => {\n return typeof obj === 'object' && obj !== null && 'state' in obj && (obj.state === 'success' || obj.state === 'error') && 'target' in obj && typeof obj.target === 'string' && 'uuid' in obj && typeof obj.uuid === 'string' && 'body' in obj;\n};\n\nexport const isTopicServerEventRequest = <T = any>(obj: any): obj is TopicServerEventRequest<T> => {\n return typeof obj === 'object' && obj !== null && 'type' in obj && obj.type === 'event' && 'uuid' in obj && typeof obj.uuid === 'string' && 'eventUUID' in obj && typeof obj.eventUUID === 'string' && 'event' in obj && typeof obj.event === 'string' && (obj.body === undefined || true);\n};\n\nexport const isTopicServerEventResponse = <T = any>(obj: any): obj is TopicServerEventResponse<T> => {\n return typeof obj === 'object' && obj !== null && 'type' in obj && obj.type === 'event' && 'uuid' in obj && typeof obj.uuid === 'string' && 'eventUUID' in obj && typeof obj.eventUUID === 'string' && (obj.body === undefined || true);\n};\n\nexport const isTopicServerEventUnSubscribeRequest = (obj: any): obj is TopicServerEventUnSubscribeRequest => {\n return typeof obj === 'object' && obj !== null && 'type' in obj && obj.type === 'unsubscribe' && 'uuid' in obj && typeof obj.uuid === 'string';\n};\n\ntype EventResponseCallBack = <T>(data: T, wsSet: WebSocketSet) => void;\n\nexport type RegisteredClient<T = any> = { uuid: string; target: string; subscribeBody?: T };\n\ntype RegisteredClientSet<T = any> = RegisteredClient<T> & { webSocketSet: WebSocketSet };\n\n@Sim\nexport class WebSocketManager implements WebSocketEndPoint {\n private clients: Map<WebSocketSet, RegisteredClient[]> = new Map();\n private eventSubscriptions: Map<string, Map<string, EventResponseCallBack>> = new Map();\n private subject = new Subject<TopicRequest | TopicUnsubscribeRequest | TopicSubscribeRequest | TopicServerEventResponse>();\n constructor(\n private intentManager: IntentManager,\n private routerManager: RouterManager\n ) {}\n\n get observable() {\n return this.subject.asObservable();\n }\n connect(wsSet: WebSocketSet) {\n this.clients.set(wsSet, []);\n console.log('WebSocket connected:', wsSet.request.url);\n }\n close(wsSet: WebSocketSet) {\n this.removeAllClientsByWebSocketSet(wsSet);\n this.clients.delete(wsSet);\n console.log('WebSocket disconnected:', wsSet.request.url);\n }\n\n setClientTopic(wsSet: WebSocketSet, uuid: string, target: string, subscribeBody?: any) {\n const clientTopics = this.clients.get(wsSet);\n if (clientTopics && !clientTopics.find(it => it.uuid === uuid)) {\n clientTopics.push({ uuid, target, subscribeBody });\n this.clients.set(wsSet, clientTopics);\n } else if (clientTopics) {\n throw { message: 'Already subscribed topic' };\n }\n }\n\n findAllClientsByTarget(target: string): RegisteredClientSet[] {\n const results: RegisteredClientSet[] = [];\n for (const [wsSet, topics] of Array.from(this.clients.entries())) {\n const find = topics.find(it => it.target === target);\n if (find) {\n results.push({ ...find, webSocketSet: wsSet });\n }\n }\n return results;\n }\n\n findClientsByTarget(target: string): RegisteredClientSet {\n for (const [wsSet, topics] of Array.from(this.clients.entries())) {\n const find = topics.find(it => it.target === target);\n if (find) {\n return { ...find, webSocketSet: wsSet };\n }\n }\n }\n\n removeClientByUUID(uuid: string) {\n for (const [wsSet, topics] of Array.from(this.clients.entries())) {\n const findIndex = topics.findIndex(it => it.uuid === uuid);\n if (findIndex >= 0) {\n topics.splice(findIndex, 1);\n this.clients.set(wsSet, topics);\n // 이벤트 구독도 함께 정리\n this.eventSubscriptions.delete(uuid);\n return true;\n }\n }\n return false;\n }\n\n findClientByUUID(uuid: string): RegisteredClientSet | undefined {\n for (const [wsSet, topics] of Array.from(this.clients.entries())) {\n const find = topics.find(it => it.uuid === uuid);\n if (find) {\n return { ...find, webSocketSet: wsSet };\n }\n }\n return undefined;\n }\n\n sendDataByUUID({ uuid, body }: { uuid: string; body?: any }) {\n const client = this.findClientByUUID(uuid);\n if (client) {\n const data: TopicResponse = {\n state: 'success',\n target: client.target,\n uuid: uuid,\n body: body\n };\n this.sendTopic(client.webSocketSet, data);\n return true;\n }\n return false;\n }\n\n sendUnSubscribeByUUID({ uuid }: { uuid: string }) {\n const client = this.findClientByUUID(uuid);\n if (client) {\n const data: TopicServerEventUnSubscribeRequest = {\n type: 'unsubscribe',\n uuid: uuid\n };\n this.removeClientByUUID(uuid);\n this.sendTopic(client.webSocketSet, data);\n return true;\n }\n return false;\n }\n\n sendAllDataByTarget({ target, body }: { target: string; body?: any }) {\n const clients = this.findAllClientsByTarget(target);\n clients.forEach(it => {\n const data: TopicResponse = {\n state: 'success',\n target: it.target,\n uuid: it.uuid,\n body: body\n };\n this.sendTopic(it.webSocketSet, data);\n });\n return clients.length;\n }\n sendAllUnSubscribeByTarget({ target }: { target: string }) {\n const clients = this.findAllClientsByTarget(target);\n clients.forEach(it => {\n const data: TopicUnsubscribeRequest = {\n type: 'unsubscribe',\n uuid: it.uuid\n };\n this.removeClientByUUID(it.uuid);\n this.sendTopic(it.webSocketSet, data);\n });\n return clients.length;\n }\n\n sendEventDataByUUID({ uuid, event, body }: { uuid: string; event: string; body?: any }, config?: { responseCallBack?: EventResponseCallBack }): string | undefined {\n const client = this.findClientByUUID(uuid);\n if (client) {\n const eventUUID = RandomUtils.uuid4();\n const eventTopic: TopicServerEventRequest = {\n type: 'event',\n uuid: uuid,\n // target: client.target,\n eventUUID: eventUUID,\n event: event,\n body: body\n };\n\n if (config.responseCallBack) {\n this.addEventSubscribes(uuid, eventUUID, config.responseCallBack);\n }\n this.sendTopic(client.webSocketSet, eventTopic);\n return eventUUID;\n }\n return undefined;\n }\n\n sendEventDataByUUIDPromise<R>({ uuid, event, body }: { uuid: string; event: string; body?: any }, config?: { responseTimeout?: number }): Promise<R> {\n return new Promise((resolve, reject) => {\n let timeoutId: NodeJS.Timeout | undefined;\n let eventUUIDForCleanup: string | undefined;\n\n if (config?.responseTimeout !== undefined) {\n timeoutId = setTimeout(() => {\n if (eventUUIDForCleanup) {\n const subscriptions = this.eventSubscriptions.get(uuid);\n if (subscriptions) {\n subscriptions.delete(eventUUIDForCleanup);\n if (subscriptions.size <= 0) {\n this.eventSubscriptions.delete(uuid);\n }\n }\n }\n reject(new Error('WebSocket event response timeout for UUID: ' + uuid));\n }, config.responseTimeout);\n }\n\n const eventUUID = this.sendEventDataByUUID(\n { uuid, event, body },\n {\n responseCallBack: (data: any) => {\n if (timeoutId) clearTimeout(timeoutId);\n resolve(data);\n }\n }\n );\n eventUUIDForCleanup = eventUUID;\n\n if (!eventUUID) {\n if (timeoutId) clearTimeout(timeoutId);\n reject(new Error('WebSocket client not found for UUID: ' + uuid));\n }\n });\n }\n\n async sendEventDataByUUIDPromiseSettled<R>({ uuid, event, body }: { uuid: string; event: string; body?: any }, config?: { responseTimeout?: number }): Promise<PromiseSettledResult<R>> {\n try {\n const value = await this.sendEventDataByUUIDPromise<R>({ uuid, event, body }, config);\n return { status: 'fulfilled', value };\n } catch (reason) {\n return { status: 'rejected', reason };\n }\n }\n\n sendAllEventDataByTargetPromise<R>({ target, event, body }: { target: string; event: string; body?: any }, config?: { responseTimeout?: number }): Promise<{ body: R; uuid: string }[]> {\n const clients = this.findAllClientsByTarget(target);\n const promises: Promise<{ body: R; uuid: string }>[] = clients.map(it => {\n return this.sendEventDataByUUIDPromise<R>({ uuid: it.uuid, event, body }, config).then(result => ({\n body: result,\n uuid: it.uuid\n }));\n });\n return Promise.all(promises);\n }\n sendAllEventDataByTargetPromiseSettled<R>({ target, event, body }: { target: string; event: string; body?: any }, config?: { responseTimeout?: number }): Promise<PromiseSettledResult<{ body: R; uuid: string }>[]> {\n const clients = this.findAllClientsByTarget(target);\n const promises: Promise<{ body: R; uuid: string }>[] = clients.map(it => {\n return this.sendEventDataByUUIDPromise<R>({ uuid: it.uuid, event, body }, config).then(result => ({\n body: result,\n uuid: it.uuid\n }));\n });\n return Promise.allSettled(promises);\n }\n\n sendAllEventDataByTarget({ target, event, body }: { target: string; event: string; body?: any }, config?: { responseCallBack?: EventResponseCallBack }) {\n const clients = this.findAllClientsByTarget(target);\n clients.forEach(it => {\n const eventUUID = RandomUtils.uuid4();\n const eventTopic: TopicServerEventRequest = {\n type: 'event',\n uuid: it.uuid,\n // target: it.target,\n eventUUID: eventUUID,\n event: event,\n body: body\n };\n if (config?.responseCallBack) {\n this.addEventSubscribes(it.uuid, eventUUID, config?.responseCallBack);\n }\n this.sendTopic(it.webSocketSet, eventTopic);\n });\n return clients.length;\n }\n\n private addEventSubscribes(uuid: string, eventUUID: string, eventResponseCallBack: EventResponseCallBack) {\n let eventMap = this.eventSubscriptions.get(uuid);\n if (eventMap) {\n eventMap.set(eventUUID, eventResponseCallBack);\n } else {\n eventMap = new Map();\n eventMap.set(eventUUID, eventResponseCallBack);\n this.eventSubscriptions.set(uuid, eventMap);\n }\n }\n\n getOpenClients() {\n return Array.from(this.clients.keys()).filter(it => it.socket.readyState === WebSocket.OPEN);\n }\n\n private isBinaryPayload(value: any) {\n if (!value) {\n return false;\n }\n if (Buffer.isBuffer(value)) {\n return true;\n }\n if (typeof Uint8Array !== 'undefined' && value instanceof Uint8Array) {\n return true;\n }\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return true;\n }\n if (value && typeof value === 'object' && 'buffer' in value) {\n const bufferValue = (value as any).buffer;\n return Buffer.isBuffer(bufferValue) || bufferValue instanceof Uint8Array || bufferValue instanceof ArrayBuffer;\n }\n return false;\n }\n\n private hasBinaryPayload(value: any): boolean {\n if (this.isBinaryPayload(value)) {\n return true;\n }\n if (Array.isArray(value)) {\n return value.some(item => this.hasBinaryPayload(item));\n }\n if (value && typeof value === 'object') {\n return Object.keys(value).some(key => this.hasBinaryPayload(value[key]));\n }\n return false;\n }\n\n private buildBinaryTopic(topic: any): Buffer {\n const fileRefs = new Map<any, string>();\n const fileEntries: Array<{ id: string; name: string; mime: string; buffer: Buffer }> = [];\n let fileIndex = 0;\n\n const registerFile = (value: any) => {\n const existing = fileRefs.get(value);\n if (existing) {\n return existing;\n }\n const id = `f${++fileIndex}`;\n fileRefs.set(value, id);\n\n let name = 'file';\n let mime = 'application/octet-stream';\n let buffer: Buffer = Buffer.alloc(0);\n\n if (Buffer.isBuffer(value)) {\n buffer = value;\n } else if (value instanceof Uint8Array) {\n buffer = Buffer.from(value);\n } else if (value instanceof ArrayBuffer) {\n buffer = Buffer.from(value);\n } else if (value && typeof value === 'object' && 'buffer' in value) {\n const fileLike = value as any;\n if (typeof fileLike.name === 'string') {\n name = fileLike.name || name;\n }\n if (typeof fileLike.mime === 'string') {\n mime = fileLike.mime || mime;\n }\n const innerBuffer = fileLike.buffer;\n if (Buffer.isBuffer(innerBuffer)) {\n buffer = innerBuffer;\n } else if (innerBuffer instanceof Uint8Array) {\n buffer = Buffer.from(innerBuffer);\n } else if (innerBuffer instanceof ArrayBuffer) {\n buffer = Buffer.from(innerBuffer);\n }\n }\n\n fileEntries.push({ id, name, mime, buffer });\n return id;\n };\n\n const replaceFiles = (value: any): any => {\n if (this.isBinaryPayload(value)) {\n const id = registerFile(value);\n return { $file: id };\n }\n if (Array.isArray(value)) {\n return value.map(item => replaceFiles(item));\n }\n if (value && typeof value === 'object') {\n const result: Record<string, any> = {};\n Object.keys(value).forEach(key => {\n result[key] = replaceFiles(value[key]);\n });\n return result;\n }\n return value;\n };\n\n const payload = replaceFiles(topic.body);\n let offset = 0;\n const files = fileEntries.map(entry => {\n const size = entry.buffer.length;\n const meta = {\n id: entry.id,\n name: entry.name,\n mime: entry.mime,\n size,\n offset\n };\n offset += size;\n return meta;\n });\n\n const meta = { ...topic, body: payload, files };\n const json = Buffer.from(JSON.stringify(meta), 'utf8');\n const header = Buffer.alloc(4);\n header.writeUInt32LE(json.length, 0);\n\n const buffers = [header, json, ...fileEntries.map(entry => entry.buffer)];\n return Buffer.concat(buffers);\n }\n\n private sendTopic(wsSet: WebSocketSet, topic: any) {\n if (this.hasBinaryPayload(topic?.body)) {\n const buffer = this.buildBinaryTopic(topic);\n wsSet.socket.send(buffer, { binary: true });\n return;\n }\n wsSet.socket.send(JSON.stringify(topic), { binary: false });\n }\n\n private parseBinaryTopic(data: RawData): TopicRequest | undefined {\n let buffer: Buffer;\n if (Buffer.isBuffer(data)) {\n buffer = data;\n } else if (data instanceof ArrayBuffer) {\n buffer = Buffer.from(data);\n } else if (Array.isArray(data)) {\n buffer = Buffer.concat(data.map(item => (Buffer.isBuffer(item) ? item : Buffer.from(item as any))));\n } else {\n return undefined;\n }\n\n if (buffer.length < 4) {\n return undefined;\n }\n\n const jsonLength = buffer.readUInt32LE(0);\n const jsonStart = 4;\n const jsonEnd = jsonStart + jsonLength;\n if (buffer.length < jsonEnd) {\n return undefined;\n }\n\n const jsonText = buffer.slice(jsonStart, jsonEnd).toString('utf8');\n let meta: any;\n try {\n meta = JSON.parse(jsonText);\n } catch (error) {\n console.warn('Invalid WebSocket binary payload:', error);\n return undefined;\n }\n\n const filesMeta = Array.isArray(meta.files) ? meta.files : [];\n const fileMap = new Map<string, { name: string; mime: string; size: number; buffer: Buffer }>();\n filesMeta.forEach((file: any) => {\n if (!file || typeof file.id !== 'string' || typeof file.size !== 'number' || typeof file.offset !== 'number') {\n return;\n }\n const start = jsonEnd + file.offset;\n const end = start + file.size;\n if (start < jsonEnd || end > buffer.length) {\n return;\n }\n const slice = buffer.slice(start, end);\n fileMap.set(file.id, {\n name: file.name || 'file',\n mime: file.mime || 'application/octet-stream',\n size: file.size,\n buffer: slice\n });\n });\n\n const replaceFileRefs = (value: any): any => {\n if (value && typeof value === 'object' && '$file' in value && typeof value.$file === 'string') {\n const file = fileMap.get(value.$file);\n if (file) {\n return file;\n }\n }\n if (Array.isArray(value)) {\n return value.map(item => replaceFileRefs(item));\n }\n if (value && typeof value === 'object') {\n const result: Record<string, any> = {};\n Object.keys(value).forEach(key => {\n result[key] = replaceFileRefs(value[key]);\n });\n return result;\n }\n return value;\n };\n\n const body = replaceFileRefs(meta.body);\n return {\n type: meta.type,\n uuid: meta.uuid,\n requestUUID: meta.requestUUID,\n body\n };\n }\n\n message(wsSet: WebSocketSet, data: { data: RawData; isBinary: boolean }): void {\n let topic: TopicRequest | TopicUnsubscribeRequest | TopicSubscribeRequest | TopicServerEventResponse | undefined;\n if (data.isBinary) {\n topic = this.parseBinaryTopic(data.data);\n if (!topic) {\n return;\n }\n } else {\n try {\n topic = JSON.parse(data.data.toString());\n } catch (error) {\n console.warn('Invalid WebSocket payload:', error);\n return;\n }\n }\n\n this.subject.next(topic);\n // console.log('WebSocket message received:', topic);\n const uuid = topic.uuid;\n // const client = this.findClientByUUID(uuid);\n // if (!client) return;\n\n // 구독\n if (topic.type === 'subscribe') {\n try {\n this.setClientTopic(wsSet, topic.uuid, topic.target, topic.body);\n } catch (err: any) {\n const responseTopic: TopicResponse = {\n state: 'error',\n // type: topic.type,\n target: topic.target,\n uuid: topic.uuid,\n body: { message: err.message || 'Error subscribing topic' }\n };\n wsSet.socket.send(JSON.stringify(responseTopic), { binary: false });\n }\n return;\n // 구독 해제\n } else if (topic.type === 'unsubscribe') {\n this.removeClientByUUID(uuid);\n return;\n } else if (topic.type === 'event') {\n const subscriptions = this.eventSubscriptions.get(topic.uuid);\n if (subscriptions) {\n const eventCallback = subscriptions.get(topic.eventUUID);\n if (eventCallback) {\n eventCallback(topic.body, wsSet);\n subscriptions.delete(topic.eventUUID);\n }\n if (subscriptions.size <= 0) {\n this.eventSubscriptions.delete(topic.uuid);\n }\n }\n return;\n } else {\n // 실행!!\n // 등록 체크\n const clientTopics = this.findClientByUUID(uuid);\n if (!clientTopics) {\n const responseTopic: TopicResponse = {\n state: 'error',\n uuid: topic.uuid,\n requestUUID: topic.requestUUID,\n target: '',\n body: { message: 'WebSocket client not registered' }\n };\n this.sendTopic(wsSet, responseTopic);\n return;\n }\n\n const intent = new Intent(clientTopics.target);\n const webSocketRequest: WebSocketRequest = {\n webSocketSet: wsSet,\n uuid: clientTopics.uuid,\n webSocketManager: this,\n sendEvent: <R>(event: string, body: any, config?: { responseTimeout?: number }) => this.sendEventDataByUUIDPromise<R>({ uuid: clientTopics.uuid, event, body }, config)\n };\n intent.data = [topic.body, webSocketRequest];\n if (topic.type === 'intent') {\n this.intentManager.publishMeta(intent).then(async it => {\n if (it.target.length <= 0) {\n const responseTopic: TopicResponse = {\n state: 'error',\n // type: topic.type,\n target: clientTopics.target,\n uuid: topic.uuid,\n requestUUID: topic.requestUUID,\n body: { message: 'Not found intent target' }\n };\n this.sendTopic(wsSet, responseTopic);\n } else {\n const rdata = it.return[0];\n const wdata = rdata instanceof Promise ? await rdata : rdata;\n const responseTopic: TopicResponse = {\n state: 'success',\n uuid: topic.uuid,\n requestUUID: topic.requestUUID,\n target: clientTopics.target,\n body: wdata\n };\n this.sendTopic(wsSet, responseTopic);\n }\n });\n } else if (topic.type === 'router') {\n this.routerManager.routing(intent).then(async routerModule => {\n const moduleInstance = routerModule.getModuleInstance?.();\n if (routerModule && moduleInstance) {\n if (routerModule.propertyKeys) {\n for (const it of routerModule.propertyKeys) {\n let r = moduleInstance[it]?.(topic.body, webSocketRequest);\n r = r instanceof Promise ? await r : r;\n const responseTopic: TopicResponse = {\n state: 'success',\n requestUUID: topic.requestUUID,\n uuid: topic.uuid,\n target: clientTopics.target,\n body: r\n };\n this.sendTopic(wsSet, responseTopic);\n }\n } else {\n const responseTopic: TopicResponse = {\n state: 'error',\n uuid: topic.uuid,\n requestUUID: topic.requestUUID,\n target: clientTopics.target,\n body: { message: 'Not found router target' }\n };\n this.sendTopic(wsSet, responseTopic);\n }\n } else {\n const responseTopic: TopicResponse = {\n state: 'error',\n uuid: topic.uuid,\n requestUUID: topic.requestUUID,\n target: clientTopics.target,\n body: { message: 'Not found router target' }\n };\n this.sendTopic(wsSet, responseTopic);\n }\n });\n }\n }\n }\n\n private removeAllClientsByWebSocketSet(wsSet: WebSocketSet) {\n const topics = this.clients.get(wsSet);\n if (!topics) {\n return;\n }\n for (const topic of topics) {\n this.eventSubscriptions.delete(topic.uuid);\n }\n this.clients.set(wsSet, []);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_simple_boot", "import_core", "WebSocketManager", "meta"]
7
+ }
@@ -0,0 +1,24 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var websocket_exports = {};
16
+ module.exports = __toCommonJS(websocket_exports);
17
+ __reExport(websocket_exports, require("./WebSocketClient"), module.exports);
18
+ __reExport(websocket_exports, require("./WebSocketManager"), module.exports);
19
+ // Annotate the CommonJS export names for ESM import in node:
20
+ 0 && (module.exports = {
21
+ ...require("./WebSocketClient"),
22
+ ...require("./WebSocketManager")
23
+ });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/websocket/index.ts"],
4
+ "sourcesContent": ["export * from './WebSocketClient';\nexport * from './WebSocketManager';"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA,8BAAc,8BAAd;AACA,8BAAc,+BADd;",
6
+ "names": []
7
+ }
@@ -1,36 +1,40 @@
1
- import { SimpleApplication } from "@dooboostore/simple-boot/SimpleApplication";
1
+ import { SimpleApplication } from "@dooboostore/simple-boot";
2
2
  import { HttpServerOption } from "./option/HttpServerOption.js";
3
3
  import { IncomingMessage, Server as HttpServer, ServerResponse } from "http";
4
4
  import { Server as HttpsServer } from "https";
5
+ import { WebSocketServer } from "ws";
5
6
  import { RequestResponse } from "./models/RequestResponse.js";
6
7
  import { getUrlMapping, getUrlMappings, UrlMappingSituationType } from "./decorators/MethodMapping.js";
7
8
  import { HttpStatus } from "./codes/HttpStatus.js";
8
9
  import { HttpHeaders } from "./codes/HttpHeaders.js";
9
10
  import { Mimes } from "./codes/Mimes.js";
10
- import { ExceptionHandlerSituationType, targetExceptionHandler } from "@dooboostore/simple-boot/decorators/exception/ExceptionDecorator";
11
- import { getInject, SituationTypeContainer, SituationTypeContainers } from "@dooboostore/simple-boot/decorators/inject/Inject";
12
- import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
11
+ import { ExceptionHandlerSituationType, targetExceptionHandler } from "@dooboostore/simple-boot";
12
+ import { getInject, SituationTypeContainer, SituationTypeContainers } from "@dooboostore/simple-boot";
13
+ import { ReflectUtils } from "@dooboostore/core";
13
14
  import { ReqFormUrlBody } from "./models/datas/body/ReqFormUrlBody.js";
14
15
  import { ReqJsonBody } from "./models/datas/body/ReqJsonBody.js";
15
16
  import { ReqHeader } from "./models/datas/ReqHeader.js";
16
- import { RouterModule } from "@dooboostore/simple-boot/route/RouterModule";
17
+ import { RouterModule } from "@dooboostore/simple-boot";
17
18
  import { ReqMultipartFormBody } from "./models/datas/body/ReqMultipartFormBody.js";
18
- import { execValidationInValid, getValidIndex } from "@dooboostore/simple-boot/decorators/validate/Validation";
19
- import { ValidException } from "@dooboostore/simple-boot/errors/ValidException";
19
+ import { execValidationInValid, getValidIndex } from "@dooboostore/simple-boot";
20
+ import { ValidException } from "@dooboostore/simple-boot";
20
21
  import { HttpError } from "./errors/HttpError.js";
21
- import { getRoute } from "@dooboostore/simple-boot/decorators/route/Router";
22
+ import { getRoute } from "@dooboostore/simple-boot";
22
23
  import { URLSearchParams } from "url";
23
24
  import { HttpMethod } from "./codes/HttpMethod.js";
24
25
  import { SessionManager } from "./session/SessionManager.js";
25
- import { InjectSituationType } from "./inject/InjectSituationType.js";
26
- import { ReqSearchParamsObj } from "./models/datas/search/ReqSearchParamsObj.js";
26
+ import { ReqSearchParamsObj } from "./models/datas/path/ReqSearchParamsObj.js";
27
+ import { ReqPathData } from "./models/datas/path/ReqPathData.js";
27
28
  class SimpleBootHttpServer extends SimpleApplication {
28
29
  constructor(option = new HttpServerOption()) {
29
30
  super(option);
30
31
  this.option = option;
32
+ this.webSocketClients = /* @__PURE__ */ new Map();
31
33
  this.sessionManager = new SessionManager(this.option);
32
34
  }
33
35
  run(otherInstanceSim) {
36
+ otherInstanceSim ??= /* @__PURE__ */ new Map();
37
+ otherInstanceSim.set(SimpleBootHttpServer, this);
34
38
  super.run(otherInstanceSim);
35
39
  const targets = [...this.option.closeEndPoints ?? [], ...this.option.errorEndPoints ?? [], ...this.option.requestEndPoints ?? [], ...this.option.filters ?? []];
36
40
  Promise.all(targets.map((it) => typeof it === "function" ? this.simstanceManager.getOrNewSim({ target: it }) : it).map((it) => it.onInit(this))).then((it) => {
@@ -95,7 +99,15 @@ class SimpleBootHttpServer extends SimpleApplication {
95
99
  const cookie = rr.reqCookieGet(this.option.sessionOption.key);
96
100
  if (!cookie) {
97
101
  const session = await this.sessionManager.session();
98
- rr.resSetHeader(HttpHeaders.SetCookie, `${this.option.sessionOption.key}=${session.uuid}; Path=/; HttpOnly`);
102
+ const cookieParts = [];
103
+ cookieParts.push(`${this.option.sessionOption.key}=${session.uuid}`);
104
+ cookieParts.push(`Path=${this.option.sessionOption.path}`);
105
+ if (this.option.sessionOption.httpOnly) cookieParts.push("HttpOnly");
106
+ if (this.option.sessionOption.secure) cookieParts.push("Secure");
107
+ if (this.option.sessionOption.sameSite != null && this.option.sessionOption.sameSite) cookieParts.push(`SameSite=${this.option.sessionOption.sameSite}`);
108
+ const maxAge = this.option.sessionOption.maxAge ?? this.sessionManager.sessionOption?.maxAge;
109
+ if (maxAge != null) cookieParts.push(`Max-Age=${maxAge}`);
110
+ rr.resSetHeader(HttpHeaders.SetCookie, cookieParts.join("; "));
99
111
  }
100
112
  const otherStorage = /* @__PURE__ */ new Map();
101
113
  otherStorage.set(RequestResponse, rr);
@@ -157,14 +169,30 @@ class SimpleBootHttpServer extends SimpleApplication {
157
169
  const injects = getInject(moduleInstance, it.propertyKey);
158
170
  const validIndexs = getValidIndex(moduleInstance, it.propertyKey);
159
171
  if (injects) {
172
+ const isPathData = injects.find((it2) => it2.config?.situationType === UrlMappingSituationType.REQ_PATH_DATA);
160
173
  const isJson = injects.find((it2) => it2.config?.situationType === UrlMappingSituationType.REQ_JSON_BODY);
161
174
  const isSearchParamsObj = injects.find((it2) => it2.config?.situationType === UrlMappingSituationType.REQ_URL_SEARCH_PARAMS_OBJ);
162
175
  const isFormUrl = injects.find((it2) => it2.config?.situationType === UrlMappingSituationType.REQ_FORM_URL_BODY);
163
- const isTransactionManager = injects.find((it2) => it2.config?.situationType === InjectSituationType.TransactionManager);
164
176
  const siturationContainers = new SituationTypeContainers();
177
+ if (isPathData) {
178
+ let data2 = await routerModule.pathData;
179
+ if (isPathData.type) {
180
+ data2 = Object.assign(new isPathData.type(), data2);
181
+ }
182
+ if (validIndexs.includes(isPathData.index)) {
183
+ const inValid = execValidationInValid(data2);
184
+ if ((inValid?.length ?? 0) > 0) {
185
+ throw new ValidException(inValid);
186
+ }
187
+ }
188
+ siturationContainers.push(new SituationTypeContainer({
189
+ situationType: UrlMappingSituationType.REQ_PATH_DATA,
190
+ data: data2
191
+ }));
192
+ }
165
193
  if (isJson) {
166
194
  let data2 = await rr.reqBodyJsonData();
167
- if (isJson.type) {
195
+ if (data2 !== null && isJson.type) {
168
196
  data2 = Object.assign(new isJson.type(), data2);
169
197
  }
170
198
  if (validIndexs.includes(isJson.index)) {
@@ -204,13 +232,6 @@ class SimpleBootHttpServer extends SimpleApplication {
204
232
  }
205
233
  siturationContainers.push(new SituationTypeContainer({ situationType: UrlMappingSituationType.REQ_FORM_URL_BODY, data: data2 }));
206
234
  }
207
- if (isTransactionManager && isTransactionManager.type && transactionManager && transactionManager.hasTransaction(isTransactionManager.type)) {
208
- let data2 = await transactionManager.getTransaction(isTransactionManager.type);
209
- if (data2) {
210
- data2 = await data2.try(isTransactionManager.config.argument);
211
- siturationContainers.push(new SituationTypeContainer({ situationType: InjectSituationType.TransactionManager, data: data2, index: isTransactionManager.index }));
212
- }
213
- }
214
235
  if (siturationContainers.length) {
215
236
  otherStorage.set(SituationTypeContainers, siturationContainers);
216
237
  }
@@ -218,6 +239,8 @@ class SimpleBootHttpServer extends SimpleApplication {
218
239
  for (const paramType of paramTypes) {
219
240
  if (paramType === ReqFormUrlBody) {
220
241
  otherStorage.set(ReqFormUrlBody, await rr.reqBodyReqFormUrlBody());
242
+ } else if (paramType === ReqPathData) {
243
+ otherStorage.set(ReqPathData, routerModule.pathData);
221
244
  } else if (paramType === ReqJsonBody) {
222
245
  otherStorage.set(ReqJsonBody, await rr.reqBodyReqJsonBody());
223
246
  } else if (paramType === ReqSearchParamsObj) {
@@ -263,6 +286,7 @@ class SimpleBootHttpServer extends SimpleApplication {
263
286
  }
264
287
  }
265
288
  } catch (e) {
289
+ console.error("request error:", e);
266
290
  transactionManager?.catch(e);
267
291
  rr.resStatusCode(e instanceof HttpError ? e.status : HttpStatus.InternalServerError);
268
292
  const execute = typeof this.option.globalAdvice === "function" ? this.simstanceManager.getOrNewSim(this.option.globalAdvice) : this.option.globalAdvice;
@@ -291,6 +315,22 @@ class SimpleBootHttpServer extends SimpleApplication {
291
315
  rr.resEnd();
292
316
  }
293
317
  });
318
+ if (this.option.webSocketEndPoints) {
319
+ const webSocketServer = new WebSocketServer({ server: this.server });
320
+ const execute = this.option.webSocketEndPoints.map((it) => typeof it === "function" ? this.simstanceManager.getOrNewSim({ target: it }) : it);
321
+ webSocketServer.on("connection", async (ws, request) => {
322
+ this.webSocketClients.set(ws, { request });
323
+ const wsSet = { socket: ws, request };
324
+ execute.forEach((it) => it.connect?.(wsSet));
325
+ ws.on("error", (err) => execute.forEach((it) => it.error?.(wsSet, err)));
326
+ ws.on("message", (data, isBinary) => execute.forEach((it) => it.message(wsSet, { data, isBinary })));
327
+ ws.on("ping", () => execute.forEach((it) => it.ping?.(wsSet)));
328
+ ws.on("close", () => {
329
+ this.webSocketClients.delete(ws);
330
+ execute.forEach((it) => it.close?.(wsSet));
331
+ });
332
+ });
333
+ }
294
334
  this.server.listen(this.option.listen.port, this.option.listen.hostname, this.option.listen.backlog, () => {
295
335
  this.option.listen.listeningListener?.(this, this.server);
296
336
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SimpleBootHttpServer.ts"],
4
- "sourcesContent": ["import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';\nimport { HttpServerOption } from './option/HttpServerOption';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { IncomingMessage, Server as HttpServer, ServerResponse } from 'http'\nimport { Server as HttpsServer } from 'https'; // Add HTTPS support\nimport { RequestResponse } from './models/RequestResponse';\nimport { getUrlMapping, getUrlMappings, SaveMappingConfig, UrlMappingSituationType } from './decorators/MethodMapping';\nimport { HttpStatus } from './codes/HttpStatus';\nimport { HttpHeaders } from './codes/HttpHeaders';\nimport { Mimes } from './codes/Mimes';\nimport { Filter } from './filters/Filter';\nimport { 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';\nimport {ReqSearchParamsObj} from \"./models/datas/search/ReqSearchParamsObj\";\n\nexport class SimpleBootHttpServer extends SimpleApplication {\n public server?: HttpServer | HttpsServer;\n private sessionManager: SessionManager;\n constructor(public option: HttpServerOption = new HttpServerOption()) {\n super(option);\n this.sessionManager = new SessionManager(this.option);\n }\n\n\n public run(otherInstanceSim?: Map<ConstructorType<any>, any>) {\n super.run(otherInstanceSim);\n const targets = [...this.option.closeEndPoints ?? [], ...this.option.errorEndPoints ?? [], ...this.option.requestEndPoints ?? [], ...this.option.filters ?? []];\n Promise.all(targets.map(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it as ConstructorType<any>}) : it) as OnInit).map(it => it.onInit(this))).then(it => {\n this.startServer();\n });\n return this;\n }\n\n private startServer() {\n\n // const a = this.option.serverOption as HttpsServerOption;\n // this.option.serverOption?.\n\n if (this.option.serverOption && 'key' in this.option.serverOption && 'cert' in this.option.serverOption) {\n this.server = new HttpsServer(this.option.serverOption);\n const httpServer = new HttpServer();\n httpServer.on('request', (req: IncomingMessage, res: ServerResponse) => {\n res.writeHead(301, { Location: `https://${req.headers.host}${req.url}` });\n res.end();\n });\n httpServer.listen(80, this.option.listen.hostname, () => {\n console.log('HTTP redirect server running on port 80');\n });\n } else if (this.option.serverOption) {\n this.server = new HttpServer(this.option.serverOption);\n } else {\n this.server = new HttpServer();\n }\n // const thisRef = this;\n this.server.on('request', async (req: IncomingMessage, res: ServerResponse) => {\n // console.log('request', req.url);\n const transactionManager = this.option.transactionManagerFactory ? await this.option.transactionManagerFactory() : undefined;\n res.on('close', async () => {\n if (this.option.closeEndPoints) {\n for (const it of this.option.closeEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as EndPoint;\n const endPoint = execute?.endPoint(rr, this);\n if (endPoint instanceof Promise) {\n await endPoint;\n }\n } catch (e) {\n }\n }\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n res.on('error', async () => {\n if (this.option.errorEndPoints) {\n for (const it of this.option.errorEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as EndPoint;\n const endPoint = execute?.endPoint(rr, this);\n if (endPoint instanceof Promise) {\n await endPoint;\n }\n } catch (e) {\n }\n }\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n\n const rr = new RequestResponse(req, res,{sessionManager: this.sessionManager, option: this.option});\n /*\n default setting first\n */\n rr.resSetHeader(HttpHeaders.Server, 'simple-boot-http-server');\n const cookie = rr.reqCookieGet(this.option.sessionOption.key);\n if (!cookie) {\n const session = await this.sessionManager.session();\n rr.resSetHeader(HttpHeaders.SetCookie, `${this.option.sessionOption.key}=${session.uuid}; Path=/; HttpOnly`);\n }\n\n const otherStorage = new Map<ConstructorType<any>, any>();\n otherStorage.set(RequestResponse, rr);\n otherStorage.set(IncomingMessage, req);\n otherStorage.set(ServerResponse, res);\n try {\n transactionManager?.try();\n if (this.option.requestEndPoints) {\n for (const it of this.option.requestEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim<EndPoint>({target:it}) : it) as EndPoint;\n execute?.endPoint(rr, this);\n } catch (e) {\n }\n }\n }\n\n const filter = {\n carrier: new Map<string, any>(),\n filters: [] as { filter: Filter, sw: boolean }[]\n };\n for (let i = 0; this.option.filters && i < this.option.filters.length; i++) {\n const it = this.option.filters[i];\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as Filter;\n let sw = true;\n if (execute?.proceedBefore) {\n sw = await execute.proceedBefore({rr, app: this, carrier: filter.carrier});\n filter.filters.push({filter: execute, sw});\n }\n if (!sw) {\n break;\n }\n }\n\n // body.. something..\n if (!rr.resIsDone()) {\n const routerModule = await super.routing(rr.reqIntent);\n otherStorage.set(RouterModule, routerModule);\n const moduleInstance = routerModule?.getModuleInstance?.();\n let methods: SaveMappingConfig[] = [];\n if (routerModule && moduleInstance) {\n // router \uD074\uB798\uC2A4 \uB0B4\uBD80\uC5D0\uC11C \uC120\uC5B8\uB41C Route\uC77C\uB54C\n if (routerModule.propertyKeys) {\n const map = routerModule.propertyKeys?.map((it: string | symbol) => {\n return {propertyKey: it, config: getUrlMapping(moduleInstance, it)} as SaveMappingConfig\n });\n methods.push(...(map ?? []));\n } else {\n methods.push(...(getUrlMappings(moduleInstance).filter(it => !getRoute(moduleInstance, it.propertyKey)) ?? []));\n }\n\n // options\uB85C \uC694\uCCAD\uC624\uBA74\uC740 allow\uB85C \uB123\uACE0 \uADF8\uB0E5 200\uCC98\uB9AC\uD574\uC57C\uB428.\n if (rr.reqMethod()?.toUpperCase() === HttpMethod.OPTIONS.toUpperCase()) {\n rr.resSetHeader(HttpHeaders.Allow, methods.map(it => it.config.method).join(', '));\n rr.resStatusCode(HttpStatus.Ok);\n }\n\n // method \uCC3E\uAE30\n methods = methods.filter(it => it && it.propertyKey && it.config && rr.reqMethod()?.toUpperCase() === it.config.method.toUpperCase());\n methods.sort((a, b) => {\n return ((b.config?.req?.contentType?.length ?? 0) + (b.config?.req?.accept?.length ?? 0)) - ((a.config?.req?.contentType?.length ?? 0) + (a.config?.req?.accept?.length ?? 0));\n });\n methods = methods\n .filter(it => it.config?.req?.contentType ? (!!it.config?.req?.contentType?.find(sit => rr.reqHasContentTypeHeader(sit))) : true)\n .filter(it => it.config?.req?.accept ? (!!it.config?.req?.accept?.find(sit => rr.reqHasAcceptHeader(sit))) : true);\n\n if (methods[0]) {\n const it = methods[0];\n const paramTypes = ReflectUtils.getParameterTypes(moduleInstance, it.propertyKey)\n const injects = getInject(moduleInstance, it.propertyKey);\n const validIndexs = getValidIndex(moduleInstance, it.propertyKey);\n if (injects) {\n const isJson = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_JSON_BODY);\n const isSearchParamsObj = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_URL_SEARCH_PARAMS_OBJ);\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 (isSearchParamsObj) {\n let data = rr.reqUrlSearchParamsObj\n if (validIndexs.includes(isSearchParamsObj.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_URL_SEARCH_PARAMS_OBJ,\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 === ReqSearchParamsObj) {\n otherStorage.set(ReqSearchParamsObj, rr.reqUrlSearchParamsObj)\n }else if (paramType === URLSearchParams) {\n otherStorage.set(URLSearchParams, rr.reqUrlSearchParams)\n } else if (paramType === ReqMultipartFormBody) {\n otherStorage.set(ReqMultipartFormBody, rr.reqBodyMultipartFormData())\n } else if (paramType === ReqHeader) {\n otherStorage.set(ReqHeader, rr.reqHeaderObj)\n }\n }\n\n // execute !!!\n let data = await this.simstanceManager.executeBindParameterSimPromise({\n target: moduleInstance,\n targetKey: it.propertyKey\n }, otherStorage);\n /*\n \uC5EC\uAE30\uC5D0\uC11C \uC815\uD574\uC9C4 \uD0C0\uC785 \uB9AC\uD134\uC5D0 \uB530\uB978 \uC870\uCE58\n ...\n */\n if (it.config?.resolver) {\n const execute = typeof it.config.resolver === 'function' ? this.simstanceManager.getOrNewSim({target:it.config.resolver}) : it.config.resolver;\n data = await execute?.resolve?.(data, rr);\n }\n const status = it.config?.res?.status ?? HttpStatus.Ok;\n const headers = it.config?.res?.header ?? {};\n if (it.config?.res?.contentType) {\n headers[HttpHeaders.ContentType] = it.config?.res?.contentType;\n }\n if ((it.config?.res?.contentType?.toLowerCase().indexOf(Mimes.ApplicationJson.toLowerCase()) ?? -1) > -1) {\n data = JSON.stringify(data);\n } else if (data && typeof data === 'object') {\n data = JSON.stringify(data);\n }\n rr.resSetHeaders(headers)\n rr.resSetStatusCode(status); \n rr.resWrite(data);\n }\n }\n\n if (this.option.noSuchRouteEndPointMappingThrow && methods.length <= 0 && rr.reqMethod()?.toUpperCase() !== HttpMethod.OPTIONS) {\n throw this.option.noSuchRouteEndPointMappingThrow(rr);\n }\n }\n\n // after\n for (const it of filter.filters.reverse()) {\n if (it.filter?.proceedAfter && !await it.filter.proceedAfter({rr, app:this, before: it.sw, carrier: filter.carrier})) {\n break;\n }\n }\n } catch (e) {\n transactionManager?.catch(e);\n rr.resStatusCode(e instanceof HttpError ? e.status : HttpStatus.InternalServerError)\n const execute = typeof this.option.globalAdvice === 'function' ? this.simstanceManager.getOrNewSim(this.option.globalAdvice) : this.option.globalAdvice;\n if (!execute) {\n rr.resEnd();\n // rr.resEnd().catch(e => {\n // });\n return;\n }\n if (e && typeof e === 'object') {\n otherStorage.set(e.constructor as ConstructorType<any>, e);\n otherStorage.set(SituationTypeContainer, new SituationTypeContainer({\n situationType: ExceptionHandlerSituationType.ERROR_OBJECT,\n data: e\n }));\n }\n const target = targetExceptionHandler(execute, e);\n if (target) {\n await this.simstanceManager.executeBindParameterSimPromise({\n target: execute,\n targetKey: target.propertyKey\n }, otherStorage);\n }\n } finally {\n transactionManager?.finally();\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n\n this.server.listen(this.option.listen.port, this.option.listen.hostname, this.option.listen.backlog, () => {\n this.option.listen.listeningListener?.(this, this.server);\n });\n }\n}\n"],
5
- "mappings": "AAAA,SAAS,yBAAyB;AAClC,SAAS,wBAAwB;AAEjC,SAAS,iBAAiB,UAAU,YAAY,sBAAsB;AACtE,SAAS,UAAU,mBAAmB;AACtC,SAAS,uBAAuB;AAChC,SAAS,eAAe,gBAAmC,+BAA+B;AAC1F,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAC5B,SAAS,aAAa;AAEtB,SAAS,+BAA+B,8BAA8B;AACtE,SAAS,WAAW,wBAAwB,+BAA+B;AAE3E,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAC7B,SAAS,4BAA4B;AACrC,SAAS,uBAAuB,qBAAqB;AACrD,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,2BAA2B;AACpC,SAAQ,0BAAyB;AAE1B,MAAM,6BAA6B,kBAAkB;AAAA,EAGxD,YAAmB,SAA2B,IAAI,iBAAiB,GAAG;AAClE,UAAM,MAAM;AADG;AAEf,SAAK,iBAAiB,IAAI,eAAe,KAAK,MAAM;AAAA,EACxD;AAAA,EAGO,IAAI,kBAAmD;AAC1D,UAAM,IAAI,gBAAgB;AAC1B,UAAM,UAAU,CAAC,GAAG,KAAK,OAAO,kBAAkB,CAAC,GAAG,GAAG,KAAK,OAAO,kBAAkB,CAAC,GAAG,GAAG,KAAK,OAAO,oBAAoB,CAAC,GAAG,GAAG,KAAK,OAAO,WAAW,CAAC,CAAC;AAC9J,YAAQ,IAAI,QAAQ,IAAI,QAAO,OAAO,OAAO,aAAa,KAAK,iBAAiB,YAAY,EAAC,QAAO,GAA0B,CAAC,IAAI,EAAa,EAAE,IAAI,QAAM,GAAG,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,QAAM;AACrL,WAAK,YAAY;AAAA,IACrB,CAAC;AACD,WAAO;AAAA,EACX;AAAA,EAEQ,cAAc;AAKlB,QAAI,KAAK,OAAO,gBAAgB,SAAS,KAAK,OAAO,gBAAgB,UAAU,KAAK,OAAO,cAAc;AACrG,WAAK,SAAS,IAAI,YAAY,KAAK,OAAO,YAAY;AACtD,YAAM,aAAa,IAAI,WAAW;AAClC,iBAAW,GAAG,WAAW,CAAC,KAAsB,QAAwB;AACpE,YAAI,UAAU,KAAK,EAAE,UAAU,WAAW,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AACxE,YAAI,IAAI;AAAA,MACZ,CAAC;AACD,iBAAW,OAAO,IAAI,KAAK,OAAO,OAAO,UAAU,MAAM;AACrD,gBAAQ,IAAI,yCAAyC;AAAA,MACzD,CAAC;AAAA,IACL,WAAW,KAAK,OAAO,cAAc;AACjC,WAAK,SAAU,IAAI,WAAW,KAAK,OAAO,YAAY;AAAA,IAC1D,OAAO;AACH,WAAK,SAAS,IAAI,WAAW;AAAA,IACjC;AAEA,SAAK,OAAO,GAAG,WAAW,OAAO,KAAsB,QAAwB;AAE3E,YAAM,qBAAqB,KAAK,OAAO,4BAA4B,MAAM,KAAK,OAAO,0BAA0B,IAAI;AACnH,UAAI,GAAG,SAAS,YAAY;AACxB,YAAI,KAAK,OAAO,gBAAgB;AAC5B,qBAAW,MAAM,KAAK,OAAO,gBAAgB;AACzC,gBAAI;AACA,oBAAM,UAAW,OAAO,OAAO,aAAa,KAAK,iBAAiB,YAAY,EAAC,QAAO,GAAE,CAAC,IAAI;AAC7F,oBAAM,WAAW,SAAS,SAAS,IAAI,IAAI;AAC3C,kBAAI,oBAAoB,SAAS;AAC7B,sBAAM;AAAA,cACV;AAAA,YACJ,SAAS,GAAG;AAAA,YACZ;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,CAAC,GAAG,UAAU,GAAG;AACjB,aAAG,OAAO;AAAA,QACd;AAAA,MACJ,CAAC;AACD,UAAI,GAAG,SAAS,YAAY;AACxB,YAAI,KAAK,OAAO,gBAAgB;AAC5B,qBAAW,MAAM,KAAK,OAAO,gBAAgB;AACzC,gBAAI;AACA,oBAAM,UAAW,OAAO,OAAO,aAAa,KAAK,iBAAiB,YAAY,EAAC,QAAO,GAAE,CAAC,IAAI;AAC7F,oBAAM,WAAW,SAAS,SAAS,IAAI,IAAI;AAC3C,kBAAI,oBAAoB,SAAS;AAC7B,sBAAM;AAAA,cACV;AAAA,YACJ,SAAS,GAAG;AAAA,YACZ;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,CAAC,GAAG,UAAU,GAAG;AACjB,aAAG,OAAO;AAAA,QACd;AAAA,MACJ,CAAC;AAED,YAAM,KAAK,IAAI,gBAAgB,KAAK,KAAI,EAAC,gBAAiB,KAAK,gBAAgB,QAAQ,KAAK,OAAM,CAAC;AAInG,SAAG,aAAa,YAAY,QAAQ,yBAAyB;AAC7D,YAAM,SAAS,GAAG,aAAa,KAAK,OAAO,cAAc,GAAG;AAC5D,UAAI,CAAC,QAAQ;AACT,cAAM,UAAU,MAAM,KAAK,eAAe,QAAQ;AAClD,WAAG,aAAa,YAAY,WAAW,GAAG,KAAK,OAAO,cAAc,GAAG,IAAI,QAAQ,IAAI,oBAAoB;AAAA,MAC/G;AAEA,YAAM,eAAe,oBAAI,IAA+B;AACxD,mBAAa,IAAI,iBAAiB,EAAE;AACpC,mBAAa,IAAI,iBAAiB,GAAG;AACrC,mBAAa,IAAI,gBAAgB,GAAG;AACpC,UAAI;AACA,4BAAoB,IAAI;AACxB,YAAI,KAAK,OAAO,kBAAkB;AAC9B,qBAAW,MAAM,KAAK,OAAO,kBAAkB;AAC3C,gBAAI;AACA,oBAAM,UAAW,OAAO,OAAO,aAAa,KAAK,iBAAiB,YAAsB,EAAC,QAAO,GAAE,CAAC,IAAI;AACvG,uBAAS,SAAS,IAAI,IAAI;AAAA,YAC9B,SAAS,GAAG;AAAA,YACZ;AAAA,UACJ;AAAA,QACJ;AAEA,cAAM,SAAS;AAAA,UACX,SAAS,oBAAI,IAAiB;AAAA,UAC9B,SAAS,CAAC;AAAA,QACd;AACA,iBAAS,IAAI,GAAG,KAAK,OAAO,WAAW,IAAI,KAAK,OAAO,QAAQ,QAAQ,KAAK;AACxE,gBAAM,KAAK,KAAK,OAAO,QAAQ,CAAC;AAChC,gBAAM,UAAW,OAAO,OAAO,aAAa,KAAK,iBAAiB,YAAY,EAAC,QAAO,GAAE,CAAC,IAAI;AAC7F,cAAI,KAAK;AACT,cAAI,SAAS,eAAe;AACxB,iBAAK,MAAM,QAAQ,cAAc,EAAC,IAAI,KAAK,MAAM,SAAS,OAAO,QAAO,CAAC;AACzE,mBAAO,QAAQ,KAAK,EAAC,QAAQ,SAAS,GAAE,CAAC;AAAA,UAC7C;AACA,cAAI,CAAC,IAAI;AACL;AAAA,UACJ;AAAA,QACJ;AAGA,YAAI,CAAC,GAAG,UAAU,GAAG;AACjB,gBAAM,eAAe,MAAM,MAAM,QAAQ,GAAG,SAAS;AACrD,uBAAa,IAAI,cAAc,YAAY;AAC3C,gBAAM,iBAAiB,cAAc,oBAAoB;AACzD,cAAI,UAA+B,CAAC;AACpC,cAAI,gBAAgB,gBAAgB;AAEhC,gBAAI,aAAa,cAAc;AAC3B,oBAAM,MAAM,aAAa,cAAc,IAAI,CAAC,OAAwB;AAChE,uBAAO,EAAC,aAAa,IAAI,QAAQ,cAAc,gBAAgB,EAAE,EAAC;AAAA,cACtE,CAAC;AACD,sBAAQ,KAAK,GAAI,OAAO,CAAC,CAAE;AAAA,YAC/B,OAAO;AACH,sBAAQ,KAAK,GAAI,eAAe,cAAc,EAAE,OAAO,QAAM,CAAC,SAAS,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAE;AAAA,YAClH;AAGA,gBAAI,GAAG,UAAU,GAAG,YAAY,MAAM,WAAW,QAAQ,YAAY,GAAG;AACpE,iBAAG,aAAa,YAAY,OAAO,QAAQ,IAAI,QAAM,GAAG,OAAO,MAAM,EAAE,KAAK,IAAI,CAAC;AACjF,iBAAG,cAAc,WAAW,EAAE;AAAA,YAClC;AAGA,sBAAU,QAAQ,OAAO,QAAM,MAAM,GAAG,eAAe,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,MAAM,GAAG,OAAO,OAAO,YAAY,CAAC;AACpI,oBAAQ,KAAK,CAAC,GAAG,MAAM;AACnB,sBAAS,EAAE,QAAQ,KAAK,aAAa,UAAU,MAAM,EAAE,QAAQ,KAAK,QAAQ,UAAU,OAAQ,EAAE,QAAQ,KAAK,aAAa,UAAU,MAAM,EAAE,QAAQ,KAAK,QAAQ,UAAU;AAAA,YAC/K,CAAC;AACD,sBAAU,QACL,OAAO,QAAM,GAAG,QAAQ,KAAK,cAAe,CAAC,CAAC,GAAG,QAAQ,KAAK,aAAa,KAAK,SAAO,GAAG,wBAAwB,GAAG,CAAC,IAAK,IAAI,EAC/H,OAAO,QAAM,GAAG,QAAQ,KAAK,SAAU,CAAC,CAAC,GAAG,QAAQ,KAAK,QAAQ,KAAK,SAAO,GAAG,mBAAmB,GAAG,CAAC,IAAK,IAAI;AAErH,gBAAI,QAAQ,CAAC,GAAG;AACZ,oBAAM,KAAK,QAAQ,CAAC;AACpB,oBAAM,aAAa,aAAa,kBAAkB,gBAAgB,GAAG,WAAW;AAChF,oBAAM,UAAU,UAAU,gBAAgB,GAAG,WAAW;AACxD,oBAAM,cAAc,cAAc,gBAAgB,GAAG,WAAW;AAChE,kBAAI,SAAS;AACT,sBAAM,SAAS,QAAQ,KAAK,CAAAA,QAAMA,IAAG,QAAQ,kBAAkB,wBAAwB,aAAa;AACpG,sBAAM,oBAAoB,QAAQ,KAAK,CAAAA,QAAMA,IAAG,QAAQ,kBAAkB,wBAAwB,yBAAyB;AAC3H,sBAAM,YAAY,QAAQ,KAAK,CAAAA,QAAMA,IAAG,QAAQ,kBAAkB,wBAAwB,iBAAiB;AAC3G,sBAAM,uBAAuB,QAAQ,KAAK,CAAAA,QAAMA,IAAG,QAAQ,kBAAkB,oBAAoB,kBAAkB;AACnH,sBAAM,uBAAuB,IAAI,wBAAwB;AACzD,oBAAI,QAAQ;AACR,sBAAIC,QAAO,MAAM,GAAG,gBAAgB;AACpC,sBAAI,OAAO,MAAM;AACb,oBAAAA,QAAO,OAAO,OAAO,IAAI,OAAO,KAAK,GAAGA,KAAI;AAAA,kBAChD;AACA,sBAAI,YAAY,SAAS,OAAO,KAAK,GAAG;AACpC,0BAAM,UAAU,sBAAsBA,KAAI;AAC1C,yBAAK,SAAS,UAAU,KAAK,GAAG;AAC5B,4BAAM,IAAI,eAAe,OAAO;AAAA,oBACpC;AAAA,kBACJ;AACA,uCAAqB,KAAK,IAAI,uBAAuB;AAAA,oBACjD,eAAe,wBAAwB;AAAA,oBACvC,MAAAA;AAAA,kBACJ,CAAC,CAAC;AAAA,gBACN;AACA,oBAAI,mBAAmB;AACnB,sBAAIA,QAAO,GAAG;AACd,sBAAI,YAAY,SAAS,kBAAkB,KAAK,GAAG;AAC/C,0BAAM,UAAU,sBAAsBA,KAAI;AAC1C,yBAAK,SAAS,UAAU,KAAK,GAAG;AAC5B,4BAAM,IAAI,eAAe,OAAO;AAAA,oBACpC;AAAA,kBACJ;AACA,uCAAqB,KAAK,IAAI,uBAAuB;AAAA,oBACjD,eAAe,wBAAwB;AAAA,oBACvC,MAAAA;AAAA,kBACJ,CAAC,CAAC;AAAA,gBACN;AACA,oBAAI,WAAW;AACX,sBAAIA,QAAO,MAAM,GAAG,mBAAmB;AACvC,sBAAI,UAAU,MAAM;AAChB,oBAAAA,QAAO,OAAO,OAAO,IAAI,UAAU,KAAK,GAAGA,KAAI;AAAA,kBACnD;AACA,sBAAI,YAAY,SAAS,UAAU,KAAK,GAAG;AACvC,0BAAM,UAAU,sBAAsBA,KAAI;AAC1C,yBAAK,SAAS,UAAU,KAAK,GAAG;AAC5B,4BAAM,IAAI,eAAe,OAAO;AAAA,oBACpC;AAAA,kBACJ;AACA,uCAAqB,KAAK,IAAI,uBAAuB,EAAC,eAAe,wBAAwB,mBAAmB,MAAAA,MAAI,CAAC,CAAC;AAAA,gBAC1H;AAEA,oBAAI,wBAAwB,qBAAqB,QAAQ,sBAAsB,mBAAmB,eAAe,qBAAqB,IAAI,GAAG;AACzI,sBAAIA,QAAO,MAAM,mBAAmB,eAAe,qBAAqB,IAAI;AAC5E,sBAAIA,OAAM;AACN,oBAAAA,QAAO,MAAMA,MAAK,IAAI,qBAAqB,OAAO,QAAQ;AAC1D,yCAAqB,KAAK,IAAI,uBAAuB,EAAC,eAAe,oBAAoB,oBAAoB,MAAAA,OAAM,OAAO,qBAAqB,MAAK,CAAC,CAAC;AAAA,kBAC1J;AAAA,gBACJ;AACA,oBAAI,qBAAqB,QAAQ;AAC7B,+BAAa,IAAI,yBAAyB,oBAAoB;AAAA,gBAClE;AAAA,cACJ;AAEA,yBAAW,aAAa,YAAY;AAChC,oBAAI,cAAc,gBAAgB;AAC9B,+BAAa,IAAI,gBAAgB,MAAM,GAAG,sBAAsB,CAAC;AAAA,gBACrE,WAAW,cAAc,aAAa;AAClC,+BAAa,IAAI,aAAa,MAAM,GAAG,mBAAmB,CAAC;AAAA,gBAC/D,WAAW,cAAc,oBAAoB;AAC3C,+BAAa,IAAI,oBAAoB,GAAG,qBAAqB;AAAA,gBAC/D,WAAU,cAAc,iBAAiB;AACrC,+BAAa,IAAI,iBAAiB,GAAG,kBAAkB;AAAA,gBAC3D,WAAW,cAAc,sBAAsB;AAC3C,+BAAa,IAAI,sBAAsB,GAAG,yBAAyB,CAAC;AAAA,gBACxE,WAAW,cAAc,WAAW;AAChC,+BAAa,IAAI,WAAW,GAAG,YAAY;AAAA,gBAC/C;AAAA,cACJ;AAGA,kBAAI,OAAO,MAAM,KAAK,iBAAiB,+BAA+B;AAAA,gBAClE,QAAQ;AAAA,gBACR,WAAW,GAAG;AAAA,cAClB,GAAG,YAAY;AAKf,kBAAI,GAAG,QAAQ,UAAU;AACrB,sBAAM,UAAU,OAAO,GAAG,OAAO,aAAa,aAAa,KAAK,iBAAiB,YAAY,EAAC,QAAO,GAAG,OAAO,SAAQ,CAAC,IAAI,GAAG,OAAO;AACtI,uBAAO,MAAM,SAAS,UAAU,MAAM,EAAE;AAAA,cAC5C;AACA,oBAAM,SAAS,GAAG,QAAQ,KAAK,UAAU,WAAW;AACpD,oBAAM,UAAU,GAAG,QAAQ,KAAK,UAAU,CAAC;AAC3C,kBAAI,GAAG,QAAQ,KAAK,aAAa;AAC7B,wBAAQ,YAAY,WAAW,IAAI,GAAG,QAAQ,KAAK;AAAA,cACvD;AACA,mBAAK,GAAG,QAAQ,KAAK,aAAa,YAAY,EAAE,QAAQ,MAAM,gBAAgB,YAAY,CAAC,KAAK,MAAM,IAAI;AACtG,uBAAO,KAAK,UAAU,IAAI;AAAA,cAC9B,WAAW,QAAQ,OAAO,SAAS,UAAU;AACzC,uBAAO,KAAK,UAAU,IAAI;AAAA,cAC9B;AACA,iBAAG,cAAc,OAAO;AACxB,iBAAG,iBAAiB,MAAM;AAC1B,iBAAG,SAAS,IAAI;AAAA,YACpB;AAAA,UACJ;AAEA,cAAI,KAAK,OAAO,mCAAmC,QAAQ,UAAU,KAAK,GAAG,UAAU,GAAG,YAAY,MAAM,WAAW,SAAS;AAC5H,kBAAM,KAAK,OAAO,gCAAgC,EAAE;AAAA,UACxD;AAAA,QACJ;AAGA,mBAAW,MAAM,OAAO,QAAQ,QAAQ,GAAG;AACvC,cAAI,GAAG,QAAQ,gBAAgB,CAAC,MAAM,GAAG,OAAO,aAAa,EAAC,IAAI,KAAI,MAAM,QAAQ,GAAG,IAAI,SAAS,OAAO,QAAO,CAAC,GAAG;AAClH;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,SAAS,GAAG;AACR,4BAAoB,MAAM,CAAC;AAC3B,WAAG,cAAc,aAAa,YAAY,EAAE,SAAS,WAAW,mBAAmB;AACnF,cAAM,UAAU,OAAO,KAAK,OAAO,iBAAiB,aAAa,KAAK,iBAAiB,YAAY,KAAK,OAAO,YAAY,IAAI,KAAK,OAAO;AAC3I,YAAI,CAAC,SAAS;AACV,aAAG,OAAO;AAGV;AAAA,QACJ;AACA,YAAI,KAAK,OAAO,MAAM,UAAU;AAC5B,uBAAa,IAAI,EAAE,aAAqC,CAAC;AACzD,uBAAa,IAAI,wBAAwB,IAAI,uBAAuB;AAAA,YAChE,eAAe,8BAA8B;AAAA,YAC7C,MAAM;AAAA,UACV,CAAC,CAAC;AAAA,QACN;AACA,cAAM,SAAS,uBAAuB,SAAS,CAAC;AAChD,YAAI,QAAQ;AACR,gBAAM,KAAK,iBAAiB,+BAA+B;AAAA,YACvD,QAAQ;AAAA,YACR,WAAW,OAAO;AAAA,UACtB,GAAG,YAAY;AAAA,QACnB;AAAA,MACJ,UAAE;AACE,4BAAoB,QAAQ;AAAA,MAChC;AAEA,UAAI,CAAC,GAAG,UAAU,GAAG;AACjB,WAAG,OAAO;AAAA,MACd;AAAA,IACJ,CAAC;AAED,SAAK,OAAO,OAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO,OAAO,UAAU,KAAK,OAAO,OAAO,SAAS,MAAM;AACvG,WAAK,OAAO,OAAO,oBAAoB,MAAM,KAAK,MAAM;AAAA,IAC5D,CAAC;AAAA,EACL;AACJ;",
4
+ "sourcesContent": ["import {SimpleApplication} from '@dooboostore/simple-boot';\nimport {HttpServerOption} from './option/HttpServerOption';\nimport {ConstructorType} from '@dooboostore/core';\nimport {IncomingMessage, Server as HttpServer, ServerResponse} from 'http'\nimport {Server as HttpsServer} from 'https'; // Add HTTPS support\nimport {WebSocketServer, WebSocket} from 'ws';\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';\nimport {getInject, SituationTypeContainer, SituationTypeContainers} from '@dooboostore/simple-boot';\nimport {EndPoint} from './endpoints/EndPoint';\nimport {ReflectUtils} from '@dooboostore/core';\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';\nimport {ReqMultipartFormBody} from './models/datas/body/ReqMultipartFormBody';\nimport {execValidationInValid, getValidIndex} from '@dooboostore/simple-boot';\nimport {ValidException} from '@dooboostore/simple-boot';\nimport {HttpError} from './errors/HttpError';\nimport {getRoute} from '@dooboostore/simple-boot';\nimport {OnInit} from './lifecycle/OnInit';\nimport {URLSearchParams} from 'url';\nimport {HttpMethod} from './codes/HttpMethod';\nimport {SessionManager} from './session/SessionManager';\nimport {InjectSituationType} from './inject/InjectSituationType';\nimport {ReqSearchParamsObj} from \"./models/datas/path/ReqSearchParamsObj\";\nimport {SimConfig} from '@dooboostore/simple-boot';\nimport {ReqPathData} from './models/datas/path/ReqPathData';\nimport {WebSocketEndPoint} from './endpoints/WebSocketEndPoint';\n\nexport class SimpleBootHttpServer extends SimpleApplication {\n public server?: HttpServer | HttpsServer;\n private sessionManager: SessionManager;\n private webSocketClients = new Map<WebSocket, { request: IncomingMessage }>();\n\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> | Function | SimConfig | symbol, any>) {\n otherInstanceSim ??= new Map<ConstructorType<any> | Function | SimConfig | symbol, any>();\n otherInstanceSim.set(SimpleBootHttpServer, this);\n super.run(otherInstanceSim);\n const targets = [...this.option.closeEndPoints ?? [], ...this.option.errorEndPoints ?? [], ...this.option.requestEndPoints ?? [], ...this.option.filters ?? []];\n Promise.all(targets.map(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it as ConstructorType<any>}) : it) as OnInit).map(it => it.onInit(this))).then(it => {\n this.startServer();\n });\n return this;\n }\n\n private startServer() {\n\n // const a = this.option.serverOption as HttpsServerOption;\n // this.option.serverOption?.\n\n if (this.option.serverOption && 'key' in this.option.serverOption && 'cert' in this.option.serverOption) {\n this.server = new HttpsServer(this.option.serverOption);\n const httpServer = new HttpServer();\n httpServer.on('request', (req: IncomingMessage, res: ServerResponse) => {\n res.writeHead(301, {Location: `https://${req.headers.host}${req.url}`});\n res.end();\n });\n httpServer.listen(80, this.option.listen.hostname, () => {\n console.log('HTTP redirect server running on port 80');\n });\n } else if (this.option.serverOption) {\n this.server = new HttpServer(this.option.serverOption);\n } else {\n this.server = new HttpServer();\n }\n // const thisRef = this;\n this.server.on('request', async (req: IncomingMessage, res: ServerResponse) => {\n // console.log('request', req.url);\n const transactionManager = this.option.transactionManagerFactory ? await this.option.transactionManagerFactory() : undefined;\n res.on('close', async () => {\n if (this.option.closeEndPoints) {\n for (const it of this.option.closeEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it) as EndPoint;\n const endPoint = execute?.endPoint(rr, this);\n if (endPoint instanceof Promise) {\n await endPoint;\n }\n } catch (e) {\n }\n }\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n res.on('error', async () => {\n if (this.option.errorEndPoints) {\n for (const it of this.option.errorEndPoints) {\n try {\n const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it) as EndPoint;\n const endPoint = execute?.endPoint(rr, this);\n if (endPoint instanceof Promise) {\n await endPoint;\n }\n } catch (e) {\n }\n }\n }\n\n if (!rr.resIsDone()) {\n rr.resEnd();\n }\n });\n\n const rr = new RequestResponse(req, res, {sessionManager: this.sessionManager, option: this.option});\n /*\n default setting first\n */\n rr.resSetHeader(HttpHeaders.Server, 'simple-boot-http-server');\n const cookie = rr.reqCookieGet(this.option.sessionOption.key);\n if (!cookie) {\n const session = await this.sessionManager.session();\n\n const cookieParts: string[] = [];\n cookieParts.push(`${this.option.sessionOption.key}=${session.uuid}`);\n cookieParts.push(`Path=${this.option.sessionOption.path}`);\n if (this.option.sessionOption.httpOnly) cookieParts.push('HttpOnly');\n if (this.option.sessionOption.secure) cookieParts.push('Secure');\n if (this.option.sessionOption.sameSite != null && this.option.sessionOption.sameSite) cookieParts.push(`SameSite=${this.option.sessionOption.sameSite}`);\n const maxAge = (this.option.sessionOption as any).maxAge ?? (this.sessionManager.sessionOption)?.maxAge;\n if (maxAge != null) cookieParts.push(`Max-Age=${maxAge}`);\n rr.resSetHeader(HttpHeaders.SetCookie, cookieParts.join('; '));\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 isPathData = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_PATH_DATA);\n const isJson = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_JSON_BODY);\n const isSearchParamsObj = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_URL_SEARCH_PARAMS_OBJ);\n const isFormUrl = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_FORM_URL_BODY);\n // \uC6B0\uC120 \uB2E4\uC2DC \uC81C\uAC70\uD55C\uB2E4.. \uD2B8\uB79C\uC81D\uC158 \uC5B4\uB5BB\uAC8C \uD560\uC9C0 \uB2E4\uC2DC \uC0DD\uAC01\n // const isTransactionManager = injects.find(it => it.config?.situationType === InjectSituationType.TransactionManager);\n const siturationContainers = new SituationTypeContainers();\n if (isPathData) {\n let data = await routerModule.pathData\n if (isPathData.type) {\n data = Object.assign(new isPathData.type(), data);\n }\n if (validIndexs.includes(isPathData.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_PATH_DATA,\n data\n }));\n }\n if (isJson) {\n let data = await rr.reqBodyJsonData();\n if (data !== null && 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 (isSearchParamsObj) {\n let data = rr.reqUrlSearchParamsObj\n if (validIndexs.includes(isSearchParamsObj.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_URL_SEARCH_PARAMS_OBJ,\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 // \uD2B8\uB79C\uC81D\uC158 \uC6B0\uC120 \uC81C\uAC70 \uB098\uC911\uC5D0 \uC5B4\uB5BB\uAC8C \uAD6C\uD604\uD560\uC9C0 \uC0DD\uAC01..\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 === ReqPathData) {\n otherStorage.set(ReqPathData, routerModule.pathData)\n } else if (paramType === ReqJsonBody) {\n otherStorage.set(ReqJsonBody, await rr.reqBodyReqJsonBody())\n } else if (paramType === ReqSearchParamsObj) {\n otherStorage.set(ReqSearchParamsObj, rr.reqUrlSearchParamsObj)\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 console.error('request error:', 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 if (this.option.webSocketEndPoints) {\n const webSocketServer = new WebSocketServer({server: this.server});\n const execute = this.option.webSocketEndPoints.map(it => typeof it === 'function' ? this.simstanceManager.getOrNewSim({target: it}) : it);\n webSocketServer.on('connection', async (ws, request) => {\n this.webSocketClients.set(ws, {request});\n const wsSet = {socket: ws, request};\n execute.forEach(it => it.connect?.(wsSet));\n ws.on('error', err => execute.forEach(it => it.error?.(wsSet, err)));\n ws.on('message', (data, isBinary) => execute.forEach(it => it.message(wsSet, {data, isBinary})));\n ws.on('ping', () => execute.forEach(it => it.ping?.(wsSet)));\n ws.on('close', () => {\n this.webSocketClients.delete(ws);\n execute.forEach(it => it.close?.(wsSet));\n });\n });\n }\n this.server.listen(this.option.listen.port, this.option.listen.hostname, this.option.listen.backlog, () => {\n this.option.listen.listeningListener?.(this, this.server);\n });\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["it", "data"]
7
7
  }
@@ -1,3 +1,4 @@
1
+ import { Mimes } from "./Mimes.js";
1
2
  const HttpHeaders = {
2
3
  ContentLength: "Content-Length",
3
4
  ContentType: "Content-Type",
@@ -38,9 +39,18 @@ const HttpHeaders = {
38
39
  IfNoneMatch: "If-None-Match",
39
40
  IfRange: "If-Range",
40
41
  Allow: "Allow",
41
- Server: "Server"
42
+ Server: "Server",
43
+ XSimpleBootSsrIntentScheme: "x-simple-boot-ssr-intent-scheme",
44
+ XSimpleBootHttpTopicProtocol: "x-simple-boot-http-topic-protocol"
45
+ };
46
+ const makeIntentHeaderBySymbolFor = (symbol) => {
47
+ return {
48
+ [HttpHeaders.Accept]: Mimes.ApplicationJsonPostSimpleBootSsrIntentScheme,
49
+ [HttpHeaders.XSimpleBootSsrIntentScheme]: `Symbol.for(${symbol.description})`
50
+ };
42
51
  };
43
52
  export {
44
- HttpHeaders
53
+ HttpHeaders,
54
+ makeIntentHeaderBySymbolFor
45
55
  };
46
56
  //# sourceMappingURL=HttpHeaders.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/codes/HttpHeaders.ts"],
4
- "sourcesContent": ["export const HttpHeaders = {\n ContentLength : 'Content-Length',\n ContentType : 'Content-Type',\n ContentEncoding : 'Content-Encoding',\n Accept : 'Accept',\n Authorization : 'Authorization',\n CacheControl : 'Cache-Control',\n Connection : 'Connection',\n Date : 'Date',\n Host : 'Host',\n Pragma : 'Pragma',\n Trailer : 'Trailer',\n TransferEncoding : 'Transfer-Encoding',\n Upgrade : 'Upgrade',\n Via : 'Via',\n Warning : 'Warning',\n AcceptCharset : 'Accept-Charset',\n AcceptEncoding : 'Accept-Encoding',\n AcceptLanguage : 'Accept-Language',\n AccessControlAllowOrigin : 'Access-Control-Allow-Origin',\n AccessControlAllowMethods : 'Access-Control-Allow-Methods',\n AccessControlAllowHeaders : 'Access-Control-Allow-Headers',\n AccessControlExposeHeaders : 'Access-Control-Expose-Headers',\n Expect : 'Expect',\n From : 'From',\n MaxForwards : 'Max-Forwards',\n Referer : 'Referer',\n UserAgent : 'User-Agent',\n Cookie : 'Cookie',\n SetCookie : 'Set-Cookie',\n // SetHeader : 'Set-Header',\n Cookie2 : 'Cookie2',\n SetCookie2 : 'Set-Cookie2',\n Location : 'Location',\n IfModifiedSince : 'If-Modified-Since',\n IfUnmodifiedSince : 'If-Unmodified-Since',\n IfMatch : 'If-Match',\n IfNoneMatch : 'If-None-Match',\n IfRange : 'If-Range',\n Allow : 'Allow',\n Server : 'Server'\n}\nexport type HttpHeadersType = keyof typeof HttpHeaders;"],
5
- "mappings": "AAAO,MAAM,cAAc;AAAA,EACvB,eAAgB;AAAA,EAChB,aAAc;AAAA,EACd,iBAAkB;AAAA,EAClB,QAAS;AAAA,EACT,eAAgB;AAAA,EAChB,cAAe;AAAA,EACf,YAAa;AAAA,EACb,MAAO;AAAA,EACP,MAAO;AAAA,EACP,QAAS;AAAA,EACT,SAAU;AAAA,EACV,kBAAmB;AAAA,EACnB,SAAU;AAAA,EACV,KAAM;AAAA,EACN,SAAU;AAAA,EACV,eAAgB;AAAA,EAChB,gBAAiB;AAAA,EACjB,gBAAiB;AAAA,EACjB,0BAA2B;AAAA,EAC3B,2BAA4B;AAAA,EAC5B,2BAA4B;AAAA,EAC5B,4BAA6B;AAAA,EAC7B,QAAS;AAAA,EACT,MAAO;AAAA,EACP,aAAc;AAAA,EACd,SAAU;AAAA,EACV,WAAY;AAAA,EACZ,QAAS;AAAA,EACT,WAAY;AAAA;AAAA,EAEZ,SAAU;AAAA,EACV,YAAa;AAAA,EACb,UAAW;AAAA,EACX,iBAAkB;AAAA,EAClB,mBAAoB;AAAA,EACpB,SAAU;AAAA,EACV,aAAc;AAAA,EACd,SAAU;AAAA,EACV,OAAQ;AAAA,EACR,QAAS;AACb;",
4
+ "sourcesContent": ["import { Mimes } from './Mimes';\n\nexport 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 XSimpleBootSsrIntentScheme: 'x-simple-boot-ssr-intent-scheme',\n XSimpleBootHttpTopicProtocol: 'x-simple-boot-http-topic-protocol'\n}\nexport type HttpHeadersType = keyof typeof HttpHeaders;\n\nexport const makeIntentHeaderBySymbolFor = (symbol: Symbol): HeadersInit => {\n return {\n [HttpHeaders.Accept]: Mimes.ApplicationJsonPostSimpleBootSsrIntentScheme,\n [HttpHeaders.XSimpleBootSsrIntentScheme]: `Symbol.for(${symbol.description})`\n }\n};\n"],
5
+ "mappings": "AAAA,SAAS,aAAa;AAEf,MAAM,cAAc;AAAA,EACvB,eAAgB;AAAA,EAChB,aAAc;AAAA,EACd,iBAAkB;AAAA,EAClB,QAAS;AAAA,EACT,eAAgB;AAAA,EAChB,cAAe;AAAA,EACf,YAAa;AAAA,EACb,MAAO;AAAA,EACP,MAAO;AAAA,EACP,QAAS;AAAA,EACT,SAAU;AAAA,EACV,kBAAmB;AAAA,EACnB,SAAU;AAAA,EACV,KAAM;AAAA,EACN,SAAU;AAAA,EACV,eAAgB;AAAA,EAChB,gBAAiB;AAAA,EACjB,gBAAiB;AAAA,EACjB,0BAA2B;AAAA,EAC3B,2BAA4B;AAAA,EAC5B,2BAA4B;AAAA,EAC5B,4BAA6B;AAAA,EAC7B,QAAS;AAAA,EACT,MAAO;AAAA,EACP,aAAc;AAAA,EACd,SAAU;AAAA,EACV,WAAY;AAAA,EACZ,QAAS;AAAA,EACT,WAAY;AAAA;AAAA,EAEZ,SAAU;AAAA,EACV,YAAa;AAAA,EACb,UAAW;AAAA,EACX,iBAAkB;AAAA,EAClB,mBAAoB;AAAA,EACpB,SAAU;AAAA,EACV,aAAc;AAAA,EACd,SAAU;AAAA,EACV,OAAQ;AAAA,EACR,QAAS;AAAA,EACX,4BAA4B;AAAA,EAC5B,8BAA8B;AAChC;AAGO,MAAM,8BAA8B,CAAC,WAAgC;AAC1E,SAAO;AAAA,IACL,CAAC,YAAY,MAAM,GAAG,MAAM;AAAA,IAC5B,CAAC,YAAY,0BAA0B,GAAG,cAAc,OAAO,WAAW;AAAA,EAC5E;AACF;",
6
6
  "names": []
7
7
  }
@@ -24,6 +24,8 @@ var Mimes = /* @__PURE__ */ ((Mimes2) => {
24
24
  Mimes2["ImageXpixmap"] = "image/x-xpixmap";
25
25
  Mimes2["ImageXxbm"] = "image/x-xbm";
26
26
  Mimes2["MultipartFormData"] = "multipart/form-data";
27
+ Mimes2["ApplicationJsonPostSimpleBootSsrIntentScheme"] = "application/json-post+simple-boot-ssr-intent-scheme";
28
+ Mimes2["Intent"] = "intent";
27
29
  return Mimes2;
28
30
  })(Mimes || {});
29
31
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/codes/Mimes.ts"],
4
- "sourcesContent": ["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"],
5
- "mappings": "AAAO,IAAK,QAAL,kBAAKA,WAAL;AACH,EAAAA,OAAA,qBAAkB;AAClB,EAAAA,OAAA,4BAAyB;AACzB,EAAAA,OAAA,oBAAiB;AACjB,EAAAA,OAAA,0BAAuB;AACvB,EAAAA,OAAA,mCAAgC;AAChC,EAAAA,OAAA,eAAY;AACZ,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,SAAM;AACN,EAAAA,OAAA,aAAU;AACV,EAAAA,OAAA,oBAAiB;AACjB,EAAAA,OAAA,aAAU;AACV,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,gBAAa;AACb,EAAAA,OAAA,mBAAgB;AAChB,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,eAAY;AACZ,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,eAAY;AACZ,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,eAAY;AACZ,EAAAA,OAAA,kBAAe;AACf,EAAAA,OAAA,eAAY;AACZ,EAAAA,OAAA,uBAAoB;AAzBZ,SAAAA;AAAA,GAAA;",
4
+ "sourcesContent": ["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 ApplicationJsonPostSimpleBootSsrIntentScheme = 'application/json-post+simple-boot-ssr-intent-scheme',\n Intent = 'intent'\n}\n"],
5
+ "mappings": "AAAO,IAAK,QAAL,kBAAKA,WAAL;AACL,EAAAA,OAAA,qBAAkB;AAClB,EAAAA,OAAA,4BAAyB;AACzB,EAAAA,OAAA,oBAAiB;AACjB,EAAAA,OAAA,0BAAuB;AACvB,EAAAA,OAAA,mCAAgC;AAChC,EAAAA,OAAA,eAAY;AACZ,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,SAAM;AACN,EAAAA,OAAA,aAAU;AACV,EAAAA,OAAA,oBAAiB;AACjB,EAAAA,OAAA,aAAU;AACV,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,gBAAa;AACb,EAAAA,OAAA,mBAAgB;AAChB,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,eAAY;AACZ,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,eAAY;AACZ,EAAAA,OAAA,cAAW;AACX,EAAAA,OAAA,eAAY;AACZ,EAAAA,OAAA,kBAAe;AACf,EAAAA,OAAA,eAAY;AACZ,EAAAA,OAAA,uBAAoB;AACpB,EAAAA,OAAA,kDAA+C;AAC/C,EAAAA,OAAA,YAAS;AA3BC,SAAAA;AAAA,GAAA;",
6
6
  "names": ["Mimes"]
7
7
  }
@@ -1,12 +1,13 @@
1
- import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
1
+ import { ReflectUtils } from "@dooboostore/core";
2
2
  import { HttpMethod } from "../codes/HttpMethod.js";
3
3
  var UrlMappingSituationType = /* @__PURE__ */ ((UrlMappingSituationType2) => {
4
4
  UrlMappingSituationType2["REQ_JSON_BODY"] = "SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_JSON_BODY";
5
+ UrlMappingSituationType2["REQ_PATH_DATA"] = "SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_PATH_DATA";
5
6
  UrlMappingSituationType2["REQ_URL_SEARCH_PARAMS_OBJ"] = "SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_URL_SEARCH_PARAMS_OBJ";
6
7
  UrlMappingSituationType2["REQ_FORM_URL_BODY"] = "SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_FORM_URL_BODY";
7
8
  return UrlMappingSituationType2;
8
9
  })(UrlMappingSituationType || {});
9
- const MappingMetadataKey = Symbol("MappingMetadataKey");
10
+ const MappingMetadataKey = Symbol.for("simple-boot-http-server:mapping-metadata");
10
11
  const process = (config, target, propertyKey, descriptor) => {
11
12
  const saveMappingConfigs = ReflectUtils.getMetadata(MappingMetadataKey, target.constructor) ?? [];
12
13
  saveMappingConfigs.push({ propertyKey, config });
@@ -175,6 +176,16 @@ const getCONNECT = (target, propertyKey) => {
175
176
  const getCONNECTS = (target) => {
176
177
  return getUrlMappings(target)?.filter((it) => it.config?.method.toUpperCase() === HttpMethod.CONNECT);
177
178
  };
179
+ const urlMapping = UrlMapping;
180
+ const getMethod = GET;
181
+ const postMethod = POST;
182
+ const patchMethod = PATCH;
183
+ const putMethod = PUT;
184
+ const deleteMethod = DELETE;
185
+ const optionsMethod = OPTIONS;
186
+ const headMethod = HEAD;
187
+ const traceMethod = TRACE;
188
+ const connectMethod = CONNECT;
178
189
  export {
179
190
  CONNECT,
180
191
  DELETE,
@@ -187,6 +198,8 @@ export {
187
198
  TRACE,
188
199
  UrlMapping,
189
200
  UrlMappingSituationType,
201
+ connectMethod,
202
+ deleteMethod,
190
203
  getCONNECT,
191
204
  getCONNECTS,
192
205
  getDELETE,
@@ -195,6 +208,7 @@ export {
195
208
  getGETS,
196
209
  getHEAD,
197
210
  getHEADS,
211
+ getMethod,
198
212
  getOPTIONS,
199
213
  getOPTIONSS,
200
214
  getPATCH,
@@ -206,6 +220,13 @@ export {
206
220
  getTRACE,
207
221
  getTRACES,
208
222
  getUrlMapping,
209
- getUrlMappings
223
+ getUrlMappings,
224
+ headMethod,
225
+ optionsMethod,
226
+ patchMethod,
227
+ postMethod,
228
+ putMethod,
229
+ traceMethod,
230
+ urlMapping
210
231
  };
211
232
  //# sourceMappingURL=MethodMapping.js.map