@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": ";;;;;;;;;;AAAA,SAAS,WAAW;AAEpB,SAAkB,iBAAiB;AACnC,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AAiDjB,MAAM,iBAAiB,CAAU,QAAoC;AAC1E,SAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,UAAU,OAAO,OAAO,IAAI,SAAS,aAAa,IAAI,SAAS,UAAa,IAAI,SAAS,YAAY,IAAI,SAAS,cAAc,IAAI,SAAS,UAAa;AAC9M;AAEO,MAAM,0BAA0B,CAAU,QAA6C;AAC5F,SAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,UAAU,OAAO,IAAI,SAAS,eAAe,YAAY,OAAO,OAAO,IAAI,WAAW,YAAY,UAAU,OAAO,OAAO,IAAI,SAAS,aAAa,IAAI,SAAS,UAAa;AAClO;AAEO,MAAM,4BAA4B,CAAC,QAA4C;AACpF,SAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,UAAU,OAAO,IAAI,SAAS,iBAAiB,UAAU,OAAO,OAAO,IAAI,SAAS;AACxI;AAEO,MAAM,kBAAkB,CAAU,QAAqC;AAC5E,SAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,WAAW,QAAQ,IAAI,UAAU,aAAa,IAAI,UAAU,YAAY,YAAY,OAAO,OAAO,IAAI,WAAW,YAAY,UAAU,OAAO,OAAO,IAAI,SAAS,YAAY,UAAU;AAC5O;AAEO,MAAM,4BAA4B,CAAU,QAA+C;AAChG,SAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,UAAU,OAAO,IAAI,SAAS,WAAW,UAAU,OAAO,OAAO,IAAI,SAAS,YAAY,eAAe,OAAO,OAAO,IAAI,cAAc,YAAY,WAAW,OAAO,OAAO,IAAI,UAAU,aAAa,IAAI,SAAS,UAAa;AACvR;AAEO,MAAM,6BAA6B,CAAU,QAAgD;AAClG,SAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,UAAU,OAAO,IAAI,SAAS,WAAW,UAAU,OAAO,OAAO,IAAI,SAAS,YAAY,eAAe,OAAO,OAAO,IAAI,cAAc,aAAa,IAAI,SAAS,UAAa;AACpO;AAEO,MAAM,uCAAuC,CAAC,QAAuD;AAC1G,SAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,UAAU,OAAO,IAAI,SAAS,iBAAiB,UAAU,OAAO,OAAO,IAAI,SAAS;AACxI;AASO,IAAM,mBAAN,MAAMA,kBAAgB;EAI3B,YACU,eACA,eAA4B;AAD5B,SAAA,gBAAA;AACA,SAAA,gBAAA;AALF,SAAA,UAAiD,oBAAI,IAAG;AACxD,SAAA,qBAAsE,oBAAI,IAAG;AAC7E,SAAA,UAAU,IAAI,QAAO;EAI1B;EAEH,IAAI,aAAU;AACZ,WAAO,KAAK,QAAQ,aAAY;EAClC;EACA,QAAQ,OAAmB;AACzB,SAAK,QAAQ,IAAI,OAAO,CAAA,CAAE;AAC1B,YAAQ,IAAI,wBAAwB,MAAM,QAAQ,GAAG;EACvD;EACA,MAAM,OAAmB;AACvB,SAAK,+BAA+B,KAAK;AACzC,SAAK,QAAQ,OAAO,KAAK;AACzB,YAAQ,IAAI,2BAA2B,MAAM,QAAQ,GAAG;EAC1D;EAEA,eAAe,OAAqB,MAAc,QAAgB,eAAmB;AACnF,UAAM,eAAe,KAAK,QAAQ,IAAI,KAAK;AAC3C,QAAI,gBAAgB,CAAC,aAAa,KAAK,QAAM,GAAG,SAAS,IAAI,GAAG;AAC9D,mBAAa,KAAK,EAAE,MAAM,QAAQ,cAAa,CAAE;AACjD,WAAK,QAAQ,IAAI,OAAO,YAAY;IACtC,WAAW,cAAc;AACvB,YAAM,EAAE,SAAS,2BAA0B;IAC7C;EACF;EAEA,uBAAuB,QAAc;AACnC,UAAM,UAAiC,CAAA;AACvC,eAAW,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,KAAK,QAAQ,QAAO,CAAE,GAAG;AAChE,YAAM,OAAO,OAAO,KAAK,QAAM,GAAG,WAAW,MAAM;AACnD,UAAI,MAAM;AACR,gBAAQ,KAAK,EAAE,GAAG,MAAM,cAAc,MAAK,CAAE;MAC/C;IACF;AACA,WAAO;EACT;EAEA,oBAAoB,QAAc;AAChC,eAAW,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,KAAK,QAAQ,QAAO,CAAE,GAAG;AAChE,YAAM,OAAO,OAAO,KAAK,QAAM,GAAG,WAAW,MAAM;AACnD,UAAI,MAAM;AACR,eAAO,EAAE,GAAG,MAAM,cAAc,MAAK;MACvC;IACF;EACF;EAEA,mBAAmB,MAAY;AAC7B,eAAW,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,KAAK,QAAQ,QAAO,CAAE,GAAG;AAChE,YAAM,YAAY,OAAO,UAAU,QAAM,GAAG,SAAS,IAAI;AACzD,UAAI,aAAa,GAAG;AAClB,eAAO,OAAO,WAAW,CAAC;AAC1B,aAAK,QAAQ,IAAI,OAAO,MAAM;AAE9B,aAAK,mBAAmB,OAAO,IAAI;AACnC,eAAO;MACT;IACF;AACA,WAAO;EACT;EAEA,iBAAiB,MAAY;AAC3B,eAAW,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,KAAK,QAAQ,QAAO,CAAE,GAAG;AAChE,YAAM,OAAO,OAAO,KAAK,QAAM,GAAG,SAAS,IAAI;AAC/C,UAAI,MAAM;AACR,eAAO,EAAE,GAAG,MAAM,cAAc,MAAK;MACvC;IACF;AACA,WAAO;EACT;EAEA,eAAe,EAAE,MAAM,KAAI,GAAgC;AACzD,UAAM,SAAS,KAAK,iBAAiB,IAAI;AACzC,QAAI,QAAQ;AACV,YAAM,OAAsB;QAC1B,OAAO;QACP,QAAQ,OAAO;QACf;QACA;;AAEF,WAAK,UAAU,OAAO,cAAc,IAAI;AACxC,aAAO;IACT;AACA,WAAO;EACT;EAEA,sBAAsB,EAAE,KAAI,GAAoB;AAC9C,UAAM,SAAS,KAAK,iBAAiB,IAAI;AACzC,QAAI,QAAQ;AACV,YAAM,OAA2C;QAC/C,MAAM;QACN;;AAEF,WAAK,mBAAmB,IAAI;AAC5B,WAAK,UAAU,OAAO,cAAc,IAAI;AACxC,aAAO;IACT;AACA,WAAO;EACT;EAEA,oBAAoB,EAAE,QAAQ,KAAI,GAAkC;AAClE,UAAM,UAAU,KAAK,uBAAuB,MAAM;AAClD,YAAQ,QAAQ,QAAK;AACnB,YAAM,OAAsB;QAC1B,OAAO;QACP,QAAQ,GAAG;QACX,MAAM,GAAG;QACT;;AAEF,WAAK,UAAU,GAAG,cAAc,IAAI;IACtC,CAAC;AACD,WAAO,QAAQ;EACjB;EACA,2BAA2B,EAAE,OAAM,GAAsB;AACvD,UAAM,UAAU,KAAK,uBAAuB,MAAM;AAClD,YAAQ,QAAQ,QAAK;AACnB,YAAM,OAAgC;QACpC,MAAM;QACN,MAAM,GAAG;;AAEX,WAAK,mBAAmB,GAAG,IAAI;AAC/B,WAAK,UAAU,GAAG,cAAc,IAAI;IACtC,CAAC;AACD,WAAO,QAAQ;EACjB;EAEA,oBAAoB,EAAE,MAAM,OAAO,KAAI,GAAiD,QAAqD;AAC3I,UAAM,SAAS,KAAK,iBAAiB,IAAI;AACzC,QAAI,QAAQ;AACV,YAAM,YAAY,YAAY,MAAK;AACnC,YAAM,aAAsC;QAC1C,MAAM;QACN;;QAEA;QACA;QACA;;AAGF,UAAI,OAAO,kBAAkB;AAC3B,aAAK,mBAAmB,MAAM,WAAW,OAAO,gBAAgB;MAClE;AACA,WAAK,UAAU,OAAO,cAAc,UAAU;AAC9C,aAAO;IACT;AACA,WAAO;EACT;EAEA,2BAA8B,EAAE,MAAM,OAAO,KAAI,GAAiD,QAAqC;AACrI,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAU;AACrC,UAAI;AACJ,UAAI;AAEJ,UAAI,QAAQ,oBAAoB,QAAW;AACzC,oBAAY,WAAW,MAAK;AAC1B,cAAI,qBAAqB;AACvB,kBAAM,gBAAgB,KAAK,mBAAmB,IAAI,IAAI;AACtD,gBAAI,eAAe;AACjB,4BAAc,OAAO,mBAAmB;AACxC,kBAAI,cAAc,QAAQ,GAAG;AAC3B,qBAAK,mBAAmB,OAAO,IAAI;cACrC;YACF;UACF;AACA,iBAAO,IAAI,MAAM,gDAAgD,IAAI,CAAC;QACxE,GAAG,OAAO,eAAe;MAC3B;AAEA,YAAM,YAAY,KAAK,oBACrB,EAAE,MAAM,OAAO,KAAI,GACnB;QACE,kBAAkB,CAAC,SAAa;AAC9B,cAAI;AAAW,yBAAa,SAAS;AACrC,kBAAQ,IAAI;QACd;OACD;AAEH,4BAAsB;AAEtB,UAAI,CAAC,WAAW;AACd,YAAI;AAAW,uBAAa,SAAS;AACrC,eAAO,IAAI,MAAM,0CAA0C,IAAI,CAAC;MAClE;IACF,CAAC;EACH;EAEA,MAAM,kCAAqC,EAAE,MAAM,OAAO,KAAI,GAAiD,QAAqC;AAClJ,QAAI;AACF,YAAM,QAAQ,MAAM,KAAK,2BAA8B,EAAE,MAAM,OAAO,KAAI,GAAI,MAAM;AACpF,aAAO,EAAE,QAAQ,aAAa,MAAK;IACrC,SAAS,QAAQ;AACf,aAAO,EAAE,QAAQ,YAAY,OAAM;IACrC;EACF;EAEA,gCAAmC,EAAE,QAAQ,OAAO,KAAI,GAAmD,QAAqC;AAC9I,UAAM,UAAU,KAAK,uBAAuB,MAAM;AAClD,UAAM,WAAiD,QAAQ,IAAI,QAAK;AACtE,aAAO,KAAK,2BAA8B,EAAE,MAAM,GAAG,MAAM,OAAO,KAAI,GAAI,MAAM,EAAE,KAAK,aAAW;QAChG,MAAM;QACN,MAAM,GAAG;QACT;IACJ,CAAC;AACD,WAAO,QAAQ,IAAI,QAAQ;EAC7B;EACA,uCAA0C,EAAE,QAAQ,OAAO,KAAI,GAAmD,QAAqC;AACrJ,UAAM,UAAU,KAAK,uBAAuB,MAAM;AAClD,UAAM,WAAiD,QAAQ,IAAI,QAAK;AACtE,aAAO,KAAK,2BAA8B,EAAE,MAAM,GAAG,MAAM,OAAO,KAAI,GAAI,MAAM,EAAE,KAAK,aAAW;QAChG,MAAM;QACN,MAAM,GAAG;QACT;IACJ,CAAC;AACD,WAAO,QAAQ,WAAW,QAAQ;EACpC;EAEA,yBAAyB,EAAE,QAAQ,OAAO,KAAI,GAAmD,QAAqD;AACpJ,UAAM,UAAU,KAAK,uBAAuB,MAAM;AAClD,YAAQ,QAAQ,QAAK;AACnB,YAAM,YAAY,YAAY,MAAK;AACnC,YAAM,aAAsC;QAC1C,MAAM;QACN,MAAM,GAAG;;QAET;QACA;QACA;;AAEF,UAAI,QAAQ,kBAAkB;AAC5B,aAAK,mBAAmB,GAAG,MAAM,WAAW,QAAQ,gBAAgB;MACtE;AACA,WAAK,UAAU,GAAG,cAAc,UAAU;IAC5C,CAAC;AACD,WAAO,QAAQ;EACjB;EAEQ,mBAAmB,MAAc,WAAmB,uBAA4C;AACtG,QAAI,WAAW,KAAK,mBAAmB,IAAI,IAAI;AAC/C,QAAI,UAAU;AACZ,eAAS,IAAI,WAAW,qBAAqB;IAC/C,OAAO;AACL,iBAAW,oBAAI,IAAG;AAClB,eAAS,IAAI,WAAW,qBAAqB;AAC7C,WAAK,mBAAmB,IAAI,MAAM,QAAQ;IAC5C;EACF;EAEA,iBAAc;AACZ,WAAO,MAAM,KAAK,KAAK,QAAQ,KAAI,CAAE,EAAE,OAAO,QAAM,GAAG,OAAO,eAAe,UAAU,IAAI;EAC7F;EAEQ,gBAAgB,OAAU;AAChC,QAAI,CAAC,OAAO;AACV,aAAO;IACT;AACA,QAAI,OAAO,SAAS,KAAK,GAAG;AAC1B,aAAO;IACT;AACA,QAAI,OAAO,eAAe,eAAe,iBAAiB,YAAY;AACpE,aAAO;IACT;AACA,QAAI,OAAO,gBAAgB,eAAe,iBAAiB,aAAa;AACtE,aAAO;IACT;AACA,QAAI,SAAS,OAAO,UAAU,YAAY,YAAY,OAAO;AAC3D,YAAM,cAAe,MAAc;AACnC,aAAO,OAAO,SAAS,WAAW,KAAK,uBAAuB,cAAc,uBAAuB;IACrG;AACA,WAAO;EACT;EAEQ,iBAAiB,OAAU;AACjC,QAAI,KAAK,gBAAgB,KAAK,GAAG;AAC/B,aAAO;IACT;AACA,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,MAAM,KAAK,UAAQ,KAAK,iBAAiB,IAAI,CAAC;IACvD;AACA,QAAI,SAAS,OAAO,UAAU,UAAU;AACtC,aAAO,OAAO,KAAK,KAAK,EAAE,KAAK,SAAO,KAAK,iBAAiB,MAAM,GAAG,CAAC,CAAC;IACzE;AACA,WAAO;EACT;EAEQ,iBAAiB,OAAU;AACjC,UAAM,WAAW,oBAAI,IAAG;AACxB,UAAM,cAAiF,CAAA;AACvF,QAAI,YAAY;AAEhB,UAAM,eAAe,CAAC,UAAc;AAClC,YAAM,WAAW,SAAS,IAAI,KAAK;AACnC,UAAI,UAAU;AACZ,eAAO;MACT;AACA,YAAM,KAAK,IAAI,EAAE,SAAS;AAC1B,eAAS,IAAI,OAAO,EAAE;AAEtB,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,SAAiB,OAAO,MAAM,CAAC;AAEnC,UAAI,OAAO,SAAS,KAAK,GAAG;AAC1B,iBAAS;MACX,WAAW,iBAAiB,YAAY;AACtC,iBAAS,OAAO,KAAK,KAAK;MAC5B,WAAW,iBAAiB,aAAa;AACvC,iBAAS,OAAO,KAAK,KAAK;MAC5B,WAAW,SAAS,OAAO,UAAU,YAAY,YAAY,OAAO;AAClE,cAAM,WAAW;AACjB,YAAI,OAAO,SAAS,SAAS,UAAU;AACrC,iBAAO,SAAS,QAAQ;QAC1B;AACA,YAAI,OAAO,SAAS,SAAS,UAAU;AACrC,iBAAO,SAAS,QAAQ;QAC1B;AACA,cAAM,cAAc,SAAS;AAC7B,YAAI,OAAO,SAAS,WAAW,GAAG;AAChC,mBAAS;QACX,WAAW,uBAAuB,YAAY;AAC5C,mBAAS,OAAO,KAAK,WAAW;QAClC,WAAW,uBAAuB,aAAa;AAC7C,mBAAS,OAAO,KAAK,WAAW;QAClC;MACF;AAEA,kBAAY,KAAK,EAAE,IAAI,MAAM,MAAM,OAAM,CAAE;AAC3C,aAAO;IACT;AAEA,UAAM,eAAe,CAAC,UAAmB;AACvC,UAAI,KAAK,gBAAgB,KAAK,GAAG;AAC/B,cAAM,KAAK,aAAa,KAAK;AAC7B,eAAO,EAAE,OAAO,GAAE;MACpB;AACA,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,eAAO,MAAM,IAAI,UAAQ,aAAa,IAAI,CAAC;MAC7C;AACA,UAAI,SAAS,OAAO,UAAU,UAAU;AACtC,cAAM,SAA8B,CAAA;AACpC,eAAO,KAAK,KAAK,EAAE,QAAQ,SAAM;AAC/B,iBAAO,GAAG,IAAI,aAAa,MAAM,GAAG,CAAC;QACvC,CAAC;AACD,eAAO;MACT;AACA,aAAO;IACT;AAEA,UAAM,UAAU,aAAa,MAAM,IAAI;AACvC,QAAI,SAAS;AACb,UAAM,QAAQ,YAAY,IAAI,WAAQ;AACpC,YAAM,OAAO,MAAM,OAAO;AAC1B,YAAMC,QAAO;QACX,IAAI,MAAM;QACV,MAAM,MAAM;QACZ,MAAM,MAAM;QACZ;QACA;;AAEF,gBAAU;AACV,aAAOA;IACT,CAAC;AAED,UAAM,OAAO,EAAE,GAAG,OAAO,MAAM,SAAS,MAAK;AAC7C,UAAM,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,GAAG,MAAM;AACrD,UAAM,SAAS,OAAO,MAAM,CAAC;AAC7B,WAAO,cAAc,KAAK,QAAQ,CAAC;AAEnC,UAAM,UAAU,CAAC,QAAQ,MAAM,GAAG,YAAY,IAAI,WAAS,MAAM,MAAM,CAAC;AACxE,WAAO,OAAO,OAAO,OAAO;EAC9B;EAEQ,UAAU,OAAqB,OAAU;AAC/C,QAAI,KAAK,iBAAiB,OAAO,IAAI,GAAG;AACtC,YAAM,SAAS,KAAK,iBAAiB,KAAK;AAC1C,YAAM,OAAO,KAAK,QAAQ,EAAE,QAAQ,KAAI,CAAE;AAC1C;IACF;AACA,UAAM,OAAO,KAAK,KAAK,UAAU,KAAK,GAAG,EAAE,QAAQ,MAAK,CAAE;EAC5D;EAEQ,iBAAiB,MAAa;AACpC,QAAI;AACJ,QAAI,OAAO,SAAS,IAAI,GAAG;AACzB,eAAS;IACX,WAAW,gBAAgB,aAAa;AACtC,eAAS,OAAO,KAAK,IAAI;IAC3B,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,eAAS,OAAO,OAAO,KAAK,IAAI,UAAS,OAAO,SAAS,IAAI,IAAI,OAAO,OAAO,KAAK,IAAW,CAAE,CAAC;IACpG,OAAO;AACL,aAAO;IACT;AAEA,QAAI,OAAO,SAAS,GAAG;AACrB,aAAO;IACT;AAEA,UAAM,aAAa,OAAO,aAAa,CAAC;AACxC,UAAM,YAAY;AAClB,UAAM,UAAU,YAAY;AAC5B,QAAI,OAAO,SAAS,SAAS;AAC3B,aAAO;IACT;AAEA,UAAM,WAAW,OAAO,MAAM,WAAW,OAAO,EAAE,SAAS,MAAM;AACjE,QAAI;AACJ,QAAI;AACF,aAAO,KAAK,MAAM,QAAQ;IAC5B,SAAS,OAAO;AACd,cAAQ,KAAK,qCAAqC,KAAK;AACvD,aAAO;IACT;AAEA,UAAM,YAAY,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAA;AAC3D,UAAM,UAAU,oBAAI,IAAG;AACvB,cAAU,QAAQ,CAAC,SAAa;AAC9B,UAAI,CAAC,QAAQ,OAAO,KAAK,OAAO,YAAY,OAAO,KAAK,SAAS,YAAY,OAAO,KAAK,WAAW,UAAU;AAC5G;MACF;AACA,YAAM,QAAQ,UAAU,KAAK;AAC7B,YAAM,MAAM,QAAQ,KAAK;AACzB,UAAI,QAAQ,WAAW,MAAM,OAAO,QAAQ;AAC1C;MACF;AACA,YAAM,QAAQ,OAAO,MAAM,OAAO,GAAG;AACrC,cAAQ,IAAI,KAAK,IAAI;QACnB,MAAM,KAAK,QAAQ;QACnB,MAAM,KAAK,QAAQ;QACnB,MAAM,KAAK;QACX,QAAQ;OACT;IACH,CAAC;AAED,UAAM,kBAAkB,CAAC,UAAmB;AAC1C,UAAI,SAAS,OAAO,UAAU,YAAY,WAAW,SAAS,OAAO,MAAM,UAAU,UAAU;AAC7F,cAAM,OAAO,QAAQ,IAAI,MAAM,KAAK;AACpC,YAAI,MAAM;AACR,iBAAO;QACT;MACF;AACA,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,eAAO,MAAM,IAAI,UAAQ,gBAAgB,IAAI,CAAC;MAChD;AACA,UAAI,SAAS,OAAO,UAAU,UAAU;AACtC,cAAM,SAA8B,CAAA;AACpC,eAAO,KAAK,KAAK,EAAE,QAAQ,SAAM;AAC/B,iBAAO,GAAG,IAAI,gBAAgB,MAAM,GAAG,CAAC;QAC1C,CAAC;AACD,eAAO;MACT;AACA,aAAO;IACT;AAEA,UAAM,OAAO,gBAAgB,KAAK,IAAI;AACtC,WAAO;MACL,MAAM,KAAK;MACX,MAAM,KAAK;MACX,aAAa,KAAK;MAClB;;EAEJ;EAEA,QAAQ,OAAqB,MAA0C;AACrE,QAAI;AACJ,QAAI,KAAK,UAAU;AACjB,cAAQ,KAAK,iBAAiB,KAAK,IAAI;AACvC,UAAI,CAAC,OAAO;AACV;MACF;IACF,OAAO;AACL,UAAI;AACF,gBAAQ,KAAK,MAAM,KAAK,KAAK,SAAQ,CAAE;MACzC,SAAS,OAAO;AACd,gBAAQ,KAAK,8BAA8B,KAAK;AAChD;MACF;IACF;AAEA,SAAK,QAAQ,KAAK,KAAK;AAEvB,UAAM,OAAO,MAAM;AAKnB,QAAI,MAAM,SAAS,aAAa;AAC9B,UAAI;AACF,aAAK,eAAe,OAAO,MAAM,MAAM,MAAM,QAAQ,MAAM,IAAI;MACjE,SAAS,KAAU;AACjB,cAAM,gBAA+B;UACnC,OAAO;;UAEP,QAAQ,MAAM;UACd,MAAM,MAAM;UACZ,MAAM,EAAE,SAAS,IAAI,WAAW,0BAAyB;;AAE3D,cAAM,OAAO,KAAK,KAAK,UAAU,aAAa,GAAG,EAAE,QAAQ,MAAK,CAAE;MACpE;AACA;IAEF,WAAW,MAAM,SAAS,eAAe;AACvC,WAAK,mBAAmB,IAAI;AAC5B;IACF,WAAW,MAAM,SAAS,SAAS;AACjC,YAAM,gBAAgB,KAAK,mBAAmB,IAAI,MAAM,IAAI;AAC5D,UAAI,eAAe;AACjB,cAAM,gBAAgB,cAAc,IAAI,MAAM,SAAS;AACvD,YAAI,eAAe;AACjB,wBAAc,MAAM,MAAM,KAAK;AAC/B,wBAAc,OAAO,MAAM,SAAS;QACtC;AACA,YAAI,cAAc,QAAQ,GAAG;AAC3B,eAAK,mBAAmB,OAAO,MAAM,IAAI;QAC3C;MACF;AACA;IACF,OAAO;AAGL,YAAM,eAAe,KAAK,iBAAiB,IAAI;AAC/C,UAAI,CAAC,cAAc;AACjB,cAAM,gBAA+B;UACnC,OAAO;UACP,MAAM,MAAM;UACZ,aAAa,MAAM;UACnB,QAAQ;UACR,MAAM,EAAE,SAAS,kCAAiC;;AAEpD,aAAK,UAAU,OAAO,aAAa;AACnC;MACF;AAEA,YAAM,SAAS,IAAI,OAAO,aAAa,MAAM;AAC7C,YAAM,mBAAqC;QACzC,cAAc;QACd,MAAM,aAAa;QACnB,kBAAkB;QAClB,WAAW,CAAI,OAAe,MAAW,WAA0C,KAAK,2BAA8B,EAAE,MAAM,aAAa,MAAM,OAAO,KAAI,GAAI,MAAM;;AAExK,aAAO,OAAO,CAAC,MAAM,MAAM,gBAAgB;AAC3C,UAAI,MAAM,SAAS,UAAU;AAC3B,aAAK,cAAc,YAAY,MAAM,EAAE,KAAK,OAAM,OAAK;AACrD,cAAI,GAAG,OAAO,UAAU,GAAG;AACzB,kBAAM,gBAA+B;cACnC,OAAO;;cAEP,QAAQ,aAAa;cACrB,MAAM,MAAM;cACZ,aAAa,MAAM;cACnB,MAAM,EAAE,SAAS,0BAAyB;;AAE5C,iBAAK,UAAU,OAAO,aAAa;UACrC,OAAO;AACL,kBAAM,QAAQ,GAAG,OAAO,CAAC;AACzB,kBAAM,QAAQ,iBAAiB,UAAU,MAAM,QAAQ;AACvD,kBAAM,gBAA+B;cACnC,OAAO;cACP,MAAM,MAAM;cACZ,aAAa,MAAM;cACnB,QAAQ,aAAa;cACrB,MAAM;;AAER,iBAAK,UAAU,OAAO,aAAa;UACrC;QACF,CAAC;MACH,WAAW,MAAM,SAAS,UAAU;AAClC,aAAK,cAAc,QAAQ,MAAM,EAAE,KAAK,OAAM,iBAAe;AAC3D,gBAAM,iBAAiB,aAAa,oBAAmB;AACvD,cAAI,gBAAgB,gBAAgB;AAClC,gBAAI,aAAa,cAAc;AAC7B,yBAAW,MAAM,aAAa,cAAc;AAC1C,oBAAI,IAAI,eAAe,EAAE,IAAI,MAAM,MAAM,gBAAgB;AACzD,oBAAI,aAAa,UAAU,MAAM,IAAI;AACrC,sBAAM,gBAA+B;kBACnC,OAAO;kBACP,aAAa,MAAM;kBACnB,MAAM,MAAM;kBACZ,QAAQ,aAAa;kBACrB,MAAM;;AAER,qBAAK,UAAU,OAAO,aAAa;cACrC;YACF,OAAO;AACL,oBAAM,gBAA+B;gBACnC,OAAO;gBACP,MAAM,MAAM;gBACZ,aAAa,MAAM;gBACnB,QAAQ,aAAa;gBACrB,MAAM,EAAE,SAAS,0BAAyB;;AAE5C,mBAAK,UAAU,OAAO,aAAa;YACrC;UACF,OAAO;AACL,kBAAM,gBAA+B;cACnC,OAAO;cACP,MAAM,MAAM;cACZ,aAAa,MAAM;cACnB,QAAQ,aAAa;cACrB,MAAM,EAAE,SAAS,0BAAyB;;AAE5C,iBAAK,UAAU,OAAO,aAAa;UACrC;QACF,CAAC;MACH;IACF;EACF;EAEQ,+BAA+B,OAAmB;AACxD,UAAM,SAAS,KAAK,QAAQ,IAAI,KAAK;AACrC,QAAI,CAAC,QAAQ;AACX;IACF;AACA,eAAW,SAAS,QAAQ;AAC1B,WAAK,mBAAmB,OAAO,MAAM,IAAI;IAC3C;AACA,SAAK,QAAQ,IAAI,OAAO,CAAA,CAAE;EAC5B;;AA5mBW,mBAAgB,WAAA;EAD5B;uDAM0B,kBAAa,eAAb,mBAAa,aAAA,KAAA,QAAA,QAAA,KAAA,OACb,kBAAa,eAAb,mBAAa,aAAA,KAAA,MAAA,CAAA;GAN3B,gBAAgB;",
6
+ "names": ["WebSocketManager", "meta"]
7
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./WebSocketClient.js";
2
+ export * from "./WebSocketManager.js";
3
+ //# 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,cAAc;AACd,cAAc;",
6
+ "names": []
7
+ }