@olane/o-node 0.7.12-alpha.4 → 0.7.12-alpha.41

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 (448) hide show
  1. package/dist/o-core/src/connection/index.d.ts +8 -0
  2. package/dist/o-core/src/connection/index.d.ts.map +1 -0
  3. package/dist/o-core/src/connection/index.js +7 -0
  4. package/dist/o-core/src/connection/interfaces/connection-manager.config.d.ts +15 -0
  5. package/dist/o-core/src/connection/interfaces/connection-manager.config.d.ts.map +1 -0
  6. package/dist/o-core/src/connection/interfaces/connection-manager.config.js +1 -0
  7. package/dist/o-core/src/connection/interfaces/connection-send-params.interface.d.ts +9 -0
  8. package/dist/o-core/src/connection/interfaces/connection-send-params.interface.d.ts.map +1 -0
  9. package/dist/o-core/src/connection/interfaces/connection-send-params.interface.js +1 -0
  10. package/dist/o-core/src/connection/interfaces/connection.config.d.ts +20 -0
  11. package/dist/o-core/src/connection/interfaces/connection.config.d.ts.map +1 -0
  12. package/dist/o-core/src/connection/interfaces/connection.config.js +1 -0
  13. package/dist/o-core/src/connection/interfaces/index.d.ts +5 -0
  14. package/dist/o-core/src/connection/interfaces/index.d.ts.map +1 -0
  15. package/dist/o-core/src/connection/interfaces/index.js +4 -0
  16. package/dist/o-core/src/connection/interfaces/request-state.enum.d.ts +7 -0
  17. package/dist/o-core/src/connection/interfaces/request-state.enum.d.ts.map +1 -0
  18. package/dist/o-core/src/connection/interfaces/request-state.enum.js +7 -0
  19. package/dist/o-core/src/connection/o-connection-manager.d.ts +19 -0
  20. package/dist/o-core/src/connection/o-connection-manager.d.ts.map +1 -0
  21. package/dist/o-core/src/connection/o-connection-manager.js +27 -0
  22. package/dist/o-core/src/connection/o-connection.d.ts +26 -0
  23. package/dist/o-core/src/connection/o-connection.d.ts.map +1 -0
  24. package/dist/o-core/src/connection/o-connection.js +54 -0
  25. package/dist/o-core/src/connection/o-request.d.ts +23 -0
  26. package/dist/o-core/src/connection/o-request.d.ts.map +1 -0
  27. package/dist/o-core/src/connection/o-request.js +42 -0
  28. package/dist/o-core/src/connection/o-response.d.ts +13 -0
  29. package/dist/o-core/src/connection/o-response.d.ts.map +1 -0
  30. package/dist/o-core/src/connection/o-response.js +25 -0
  31. package/dist/o-core/src/core/defaults/config.d.ts +4 -0
  32. package/dist/o-core/src/core/defaults/config.d.ts.map +1 -0
  33. package/dist/o-core/src/core/defaults/config.js +5 -0
  34. package/dist/o-core/src/core/defaults/index.d.ts +2 -0
  35. package/dist/o-core/src/core/defaults/index.d.ts.map +1 -0
  36. package/dist/o-core/src/core/defaults/index.js +1 -0
  37. package/dist/o-core/src/core/graceful-shutdown.d.ts +25 -0
  38. package/dist/o-core/src/core/graceful-shutdown.d.ts.map +1 -0
  39. package/dist/o-core/src/core/graceful-shutdown.js +84 -0
  40. package/dist/o-core/src/core/index.d.ts +9 -0
  41. package/dist/o-core/src/core/index.d.ts.map +1 -0
  42. package/dist/o-core/src/core/index.js +8 -0
  43. package/dist/o-core/src/core/interfaces/index.d.ts +7 -0
  44. package/dist/o-core/src/core/interfaces/index.d.ts.map +1 -0
  45. package/dist/o-core/src/core/interfaces/index.js +6 -0
  46. package/dist/o-core/src/core/interfaces/node-type.enum.d.ts +10 -0
  47. package/dist/o-core/src/core/interfaces/node-type.enum.d.ts.map +1 -0
  48. package/dist/o-core/src/core/interfaces/node-type.enum.js +10 -0
  49. package/dist/o-core/src/core/interfaces/o-core.config.d.ts +23 -0
  50. package/dist/o-core/src/core/interfaces/o-core.config.d.ts.map +1 -0
  51. package/dist/o-core/src/core/interfaces/o-core.config.js +1 -0
  52. package/dist/o-core/src/core/interfaces/o-core.interface.d.ts +18 -0
  53. package/dist/o-core/src/core/interfaces/o-core.interface.d.ts.map +1 -0
  54. package/dist/o-core/src/core/interfaces/o-core.interface.js +1 -0
  55. package/dist/o-core/src/core/interfaces/state.enum.d.ts +8 -0
  56. package/dist/o-core/src/core/interfaces/state.enum.d.ts.map +1 -0
  57. package/dist/o-core/src/core/interfaces/state.enum.js +8 -0
  58. package/dist/o-core/src/core/interfaces/use-options.interface.d.ts +11 -0
  59. package/dist/o-core/src/core/interfaces/use-options.interface.d.ts.map +1 -0
  60. package/dist/o-core/src/core/interfaces/use-options.interface.js +1 -0
  61. package/dist/o-core/src/core/interfaces/use-stream-options.interface.d.ts +4 -0
  62. package/dist/o-core/src/core/interfaces/use-stream-options.interface.d.ts.map +1 -0
  63. package/dist/o-core/src/core/interfaces/use-stream-options.interface.js +1 -0
  64. package/dist/o-core/src/core/lib/events/connection-events.d.ts +31 -0
  65. package/dist/o-core/src/core/lib/events/connection-events.d.ts.map +1 -0
  66. package/dist/o-core/src/core/lib/events/connection-events.js +46 -0
  67. package/dist/o-core/src/core/lib/events/hierarchy-events.d.ts +69 -0
  68. package/dist/o-core/src/core/lib/events/hierarchy-events.d.ts.map +1 -0
  69. package/dist/o-core/src/core/lib/events/hierarchy-events.js +100 -0
  70. package/dist/o-core/src/core/lib/events/index.d.ts +6 -0
  71. package/dist/o-core/src/core/lib/events/index.d.ts.map +1 -0
  72. package/dist/o-core/src/core/lib/events/index.js +5 -0
  73. package/dist/o-core/src/core/lib/events/node-events.d.ts +40 -0
  74. package/dist/o-core/src/core/lib/events/node-events.d.ts.map +1 -0
  75. package/dist/o-core/src/core/lib/events/node-events.js +58 -0
  76. package/dist/o-core/src/core/lib/events/o-notification-event.d.ts +26 -0
  77. package/dist/o-core/src/core/lib/events/o-notification-event.d.ts.map +1 -0
  78. package/dist/o-core/src/core/lib/events/o-notification-event.js +30 -0
  79. package/dist/o-core/src/core/lib/index.d.ts +8 -0
  80. package/dist/o-core/src/core/lib/index.d.ts.map +1 -0
  81. package/dist/o-core/src/core/lib/index.js +7 -0
  82. package/dist/o-core/src/core/lib/interfaces/notification-types.d.ts +49 -0
  83. package/dist/o-core/src/core/lib/interfaces/notification-types.d.ts.map +1 -0
  84. package/dist/o-core/src/core/lib/interfaces/notification-types.js +1 -0
  85. package/dist/o-core/src/core/lib/o-hierarchy.manager.d.ts +24 -0
  86. package/dist/o-core/src/core/lib/o-hierarchy.manager.d.ts.map +1 -0
  87. package/dist/o-core/src/core/lib/o-hierarchy.manager.js +58 -0
  88. package/dist/o-core/src/core/lib/o-metrics.d.ts +5 -0
  89. package/dist/o-core/src/core/lib/o-metrics.d.ts.map +1 -0
  90. package/dist/o-core/src/core/lib/o-metrics.js +6 -0
  91. package/dist/o-core/src/core/lib/o-notification.manager.d.ts +58 -0
  92. package/dist/o-core/src/core/lib/o-notification.manager.d.ts.map +1 -0
  93. package/dist/o-core/src/core/lib/o-notification.manager.js +159 -0
  94. package/dist/o-core/src/core/lib/o-request.manager.d.ts +10 -0
  95. package/dist/o-core/src/core/lib/o-request.manager.d.ts.map +1 -0
  96. package/dist/o-core/src/core/lib/o-request.manager.js +18 -0
  97. package/dist/o-core/src/core/lib/utils/event-filters.d.ts +38 -0
  98. package/dist/o-core/src/core/lib/utils/event-filters.d.ts.map +1 -0
  99. package/dist/o-core/src/core/lib/utils/event-filters.js +159 -0
  100. package/dist/o-core/src/core/o-core.d.ts +240 -0
  101. package/dist/o-core/src/core/o-core.d.ts.map +1 -0
  102. package/dist/o-core/src/core/o-core.js +463 -0
  103. package/dist/o-core/src/core/o-dependency.d.ts +9 -0
  104. package/dist/o-core/src/core/o-dependency.d.ts.map +1 -0
  105. package/dist/o-core/src/core/o-dependency.js +15 -0
  106. package/dist/o-core/src/core/o-object.d.ts +7 -0
  107. package/dist/o-core/src/core/o-object.d.ts.map +1 -0
  108. package/dist/o-core/src/core/o-object.js +10 -0
  109. package/dist/o-core/src/core/o-parameter.d.ts +12 -0
  110. package/dist/o-core/src/core/o-parameter.d.ts.map +1 -0
  111. package/dist/o-core/src/core/o-parameter.js +21 -0
  112. package/dist/o-core/src/error/enums/codes.error.d.ts +20 -0
  113. package/dist/o-core/src/error/enums/codes.error.d.ts.map +1 -0
  114. package/dist/o-core/src/error/enums/codes.error.js +20 -0
  115. package/dist/o-core/src/error/index.d.ts +3 -0
  116. package/dist/o-core/src/error/index.d.ts.map +1 -0
  117. package/dist/o-core/src/error/index.js +2 -0
  118. package/dist/o-core/src/error/interfaces/o-error.interface.d.ts +6 -0
  119. package/dist/o-core/src/error/interfaces/o-error.interface.d.ts.map +1 -0
  120. package/dist/o-core/src/error/interfaces/o-error.interface.js +1 -0
  121. package/dist/o-core/src/error/o-error.d.ts +15 -0
  122. package/dist/o-core/src/error/o-error.d.ts.map +1 -0
  123. package/dist/o-core/src/error/o-error.js +27 -0
  124. package/dist/o-core/src/index.d.ts +8 -0
  125. package/dist/o-core/src/index.d.ts.map +1 -0
  126. package/dist/o-core/src/index.js +7 -0
  127. package/dist/o-core/src/response/index.d.ts +2 -0
  128. package/dist/o-core/src/response/index.d.ts.map +1 -0
  129. package/dist/o-core/src/response/index.js +1 -0
  130. package/dist/o-core/src/response/response-builder.d.ts +140 -0
  131. package/dist/o-core/src/response/response-builder.d.ts.map +1 -0
  132. package/dist/o-core/src/response/response-builder.js +190 -0
  133. package/dist/o-core/src/router/enums/restricted-addresses.enum.d.ts +8 -0
  134. package/dist/o-core/src/router/enums/restricted-addresses.enum.d.ts.map +1 -0
  135. package/dist/o-core/src/router/enums/restricted-addresses.enum.js +13 -0
  136. package/dist/o-core/src/router/index.d.ts +11 -0
  137. package/dist/o-core/src/router/index.d.ts.map +1 -0
  138. package/dist/o-core/src/router/index.js +10 -0
  139. package/dist/o-core/src/router/interfaces/resolve.request.d.ts +10 -0
  140. package/dist/o-core/src/router/interfaces/resolve.request.d.ts.map +1 -0
  141. package/dist/o-core/src/router/interfaces/resolve.request.js +1 -0
  142. package/dist/o-core/src/router/interfaces/route.response.d.ts +8 -0
  143. package/dist/o-core/src/router/interfaces/route.response.d.ts.map +1 -0
  144. package/dist/o-core/src/router/interfaces/route.response.js +1 -0
  145. package/dist/o-core/src/router/o-address-resolver.d.ts +14 -0
  146. package/dist/o-core/src/router/o-address-resolver.d.ts.map +1 -0
  147. package/dist/o-core/src/router/o-address-resolver.js +19 -0
  148. package/dist/o-core/src/router/o-address.d.ts +33 -0
  149. package/dist/o-core/src/router/o-address.d.ts.map +1 -0
  150. package/dist/o-core/src/router/o-address.js +114 -0
  151. package/dist/o-core/src/router/o-request-preparation.d.ts +37 -0
  152. package/dist/o-core/src/router/o-request-preparation.d.ts.map +1 -0
  153. package/dist/o-core/src/router/o-request-preparation.js +75 -0
  154. package/dist/o-core/src/router/o-request.router.d.ts +18 -0
  155. package/dist/o-core/src/router/o-request.router.d.ts.map +1 -0
  156. package/dist/o-core/src/router/o-request.router.js +12 -0
  157. package/dist/o-core/src/router/o-resolver-chain.d.ts +32 -0
  158. package/dist/o-core/src/router/o-resolver-chain.d.ts.map +1 -0
  159. package/dist/o-core/src/router/o-resolver-chain.js +62 -0
  160. package/dist/o-core/src/router/o-router.d.ts +19 -0
  161. package/dist/o-core/src/router/o-router.d.ts.map +1 -0
  162. package/dist/o-core/src/router/o-router.js +14 -0
  163. package/dist/o-core/src/router/o-routing-policy.d.ts +36 -0
  164. package/dist/o-core/src/router/o-routing-policy.d.ts.map +1 -0
  165. package/dist/o-core/src/router/o-routing-policy.js +19 -0
  166. package/dist/o-core/src/streaming/index.d.ts +11 -0
  167. package/dist/o-core/src/streaming/index.d.ts.map +1 -0
  168. package/dist/o-core/src/streaming/index.js +14 -0
  169. package/dist/o-core/src/streaming/protocol-builder.d.ts +62 -0
  170. package/dist/o-core/src/streaming/protocol-builder.d.ts.map +1 -0
  171. package/dist/o-core/src/streaming/protocol-builder.js +93 -0
  172. package/dist/o-core/src/streaming/stream-config.d.ts +36 -0
  173. package/dist/o-core/src/streaming/stream-config.d.ts.map +1 -0
  174. package/dist/o-core/src/streaming/stream-config.js +19 -0
  175. package/dist/o-core/src/streaming/stream-handler.base.d.ts +85 -0
  176. package/dist/o-core/src/streaming/stream-handler.base.d.ts.map +1 -0
  177. package/dist/o-core/src/streaming/stream-handler.base.js +112 -0
  178. package/dist/o-core/src/streaming/stream-transport.interface.d.ts +61 -0
  179. package/dist/o-core/src/streaming/stream-transport.interface.d.ts.map +1 -0
  180. package/dist/o-core/src/streaming/stream-transport.interface.js +10 -0
  181. package/dist/o-core/src/transports/custom.transport.d.ts +6 -0
  182. package/dist/o-core/src/transports/custom.transport.d.ts.map +1 -0
  183. package/dist/o-core/src/transports/custom.transport.js +10 -0
  184. package/dist/o-core/src/transports/index.d.ts +4 -0
  185. package/dist/o-core/src/transports/index.d.ts.map +1 -0
  186. package/dist/o-core/src/transports/index.js +3 -0
  187. package/dist/o-core/src/transports/interfaces/transport-type.enum.d.ts +5 -0
  188. package/dist/o-core/src/transports/interfaces/transport-type.enum.d.ts.map +1 -0
  189. package/dist/o-core/src/transports/interfaces/transport-type.enum.js +5 -0
  190. package/dist/o-core/src/transports/o-transport.d.ts +10 -0
  191. package/dist/o-core/src/transports/o-transport.d.ts.map +1 -0
  192. package/dist/o-core/src/transports/o-transport.js +16 -0
  193. package/dist/o-core/src/utils/core.utils.d.ts +34 -0
  194. package/dist/o-core/src/utils/core.utils.d.ts.map +1 -0
  195. package/dist/o-core/src/utils/core.utils.js +123 -0
  196. package/dist/o-core/src/utils/index.d.ts +6 -0
  197. package/dist/o-core/src/utils/index.d.ts.map +1 -0
  198. package/dist/o-core/src/utils/index.js +5 -0
  199. package/dist/o-core/src/utils/logger.d.ts +14 -0
  200. package/dist/o-core/src/utils/logger.d.ts.map +1 -0
  201. package/dist/o-core/src/utils/logger.js +31 -0
  202. package/dist/o-core/src/utils/object.utils.d.ts +5 -0
  203. package/dist/o-core/src/utils/object.utils.d.ts.map +1 -0
  204. package/dist/o-core/src/utils/object.utils.js +23 -0
  205. package/dist/o-core/src/utils/regex.utils.d.ts +4 -0
  206. package/dist/o-core/src/utils/regex.utils.d.ts.map +1 -0
  207. package/dist/o-core/src/utils/regex.utils.js +13 -0
  208. package/dist/o-core/src/utils/remote.utils.d.ts +4 -0
  209. package/dist/o-core/src/utils/remote.utils.d.ts.map +1 -0
  210. package/dist/o-core/src/utils/remote.utils.js +5 -0
  211. package/dist/o-core/src/utils/streaming.utils.d.ts +22 -0
  212. package/dist/o-core/src/utils/streaming.utils.d.ts.map +1 -0
  213. package/dist/o-core/src/utils/streaming.utils.js +45 -0
  214. package/dist/o-node/src/connection/index.d.ts +5 -0
  215. package/dist/o-node/src/connection/index.d.ts.map +1 -0
  216. package/dist/o-node/src/connection/index.js +4 -0
  217. package/dist/o-node/src/connection/interfaces/o-node-connection-manager.config.d.ts +6 -0
  218. package/dist/o-node/src/connection/interfaces/o-node-connection-manager.config.d.ts.map +1 -0
  219. package/dist/o-node/src/connection/interfaces/o-node-connection-manager.config.js +1 -0
  220. package/dist/o-node/src/connection/interfaces/o-node-connection.config.d.ts +6 -0
  221. package/dist/o-node/src/connection/interfaces/o-node-connection.config.d.ts.map +1 -0
  222. package/dist/o-node/src/connection/interfaces/o-node-connection.config.js +1 -0
  223. package/dist/o-node/src/connection/o-node-connection.d.ts +13 -0
  224. package/dist/o-node/src/connection/o-node-connection.d.ts.map +1 -0
  225. package/dist/o-node/src/connection/o-node-connection.js +93 -0
  226. package/dist/o-node/src/connection/o-node-connection.manager.d.ts +19 -0
  227. package/dist/o-node/src/connection/o-node-connection.manager.d.ts.map +1 -0
  228. package/dist/o-node/src/connection/o-node-connection.manager.js +65 -0
  229. package/dist/o-node/src/connection/o-stream.request.d.ts +11 -0
  230. package/dist/o-node/src/connection/o-stream.request.d.ts.map +1 -0
  231. package/dist/o-node/src/connection/o-stream.request.js +7 -0
  232. package/dist/o-node/src/index.d.ts +12 -0
  233. package/dist/o-node/src/index.d.ts.map +1 -0
  234. package/dist/o-node/src/index.js +11 -0
  235. package/dist/o-node/src/interfaces/i-heartbeatable-node.d.ts +49 -0
  236. package/dist/o-node/src/interfaces/i-heartbeatable-node.d.ts.map +1 -0
  237. package/dist/o-node/src/interfaces/i-heartbeatable-node.js +1 -0
  238. package/dist/o-node/src/interfaces/i-reconnectable-node.d.ts +46 -0
  239. package/dist/o-node/src/interfaces/i-reconnectable-node.d.ts.map +1 -0
  240. package/dist/o-node/src/interfaces/i-reconnectable-node.js +1 -0
  241. package/dist/o-node/src/interfaces/o-node.config.d.ts +49 -0
  242. package/dist/o-node/src/interfaces/o-node.config.d.ts.map +1 -0
  243. package/dist/o-node/src/interfaces/o-node.config.js +1 -0
  244. package/dist/o-node/src/interfaces/o-node.tool-config.d.ts +4 -0
  245. package/dist/o-node/src/interfaces/o-node.tool-config.d.ts.map +1 -0
  246. package/dist/o-node/src/interfaces/o-node.tool-config.js +1 -0
  247. package/dist/o-node/src/lib/network-activity.lib.d.ts +1 -0
  248. package/dist/o-node/src/lib/network-activity.lib.d.ts.map +1 -0
  249. package/dist/o-node/src/lib/network-activity.lib.js +34 -0
  250. package/dist/o-node/src/managers/o-connection-heartbeat.manager.d.ts +63 -0
  251. package/dist/o-node/src/managers/o-connection-heartbeat.manager.d.ts.map +1 -0
  252. package/dist/o-node/src/managers/o-connection-heartbeat.manager.js +227 -0
  253. package/dist/o-node/src/managers/o-reconnection.manager.d.ts +51 -0
  254. package/dist/o-node/src/managers/o-reconnection.manager.d.ts.map +1 -0
  255. package/dist/o-node/src/managers/o-reconnection.manager.js +266 -0
  256. package/dist/o-node/src/nodes/client.node.d.ts +7 -0
  257. package/dist/o-node/src/nodes/client.node.d.ts.map +1 -0
  258. package/dist/o-node/src/nodes/client.node.js +16 -0
  259. package/dist/o-node/src/nodes/index.d.ts +4 -0
  260. package/dist/o-node/src/nodes/index.d.ts.map +1 -0
  261. package/dist/o-node/src/nodes/index.js +3 -0
  262. package/dist/o-node/src/nodes/server.node.d.ts +7 -0
  263. package/dist/o-node/src/nodes/server.node.d.ts.map +1 -0
  264. package/dist/o-node/src/nodes/server.node.js +20 -0
  265. package/dist/o-node/src/nodes/websocket.node.d.ts +7 -0
  266. package/dist/o-node/src/nodes/websocket.node.d.ts.map +1 -0
  267. package/dist/o-node/src/nodes/websocket.node.js +18 -0
  268. package/dist/o-node/src/o-node.d.ts +72 -0
  269. package/dist/o-node/src/o-node.d.ts.map +1 -0
  270. package/dist/o-node/src/o-node.hierarchy-manager.d.ts +15 -0
  271. package/dist/o-node/src/o-node.hierarchy-manager.d.ts.map +1 -0
  272. package/dist/o-node/src/o-node.hierarchy-manager.js +15 -0
  273. package/dist/o-node/src/o-node.js +493 -0
  274. package/dist/o-node/src/o-node.notification-manager.d.ts +52 -0
  275. package/dist/o-node/src/o-node.notification-manager.d.ts.map +1 -0
  276. package/dist/o-node/src/o-node.notification-manager.js +188 -0
  277. package/dist/o-node/src/o-node.tool.d.ts +18 -0
  278. package/dist/o-node/src/o-node.tool.d.ts.map +1 -0
  279. package/dist/o-node/src/o-node.tool.js +83 -0
  280. package/dist/o-node/src/router/index.d.ts +6 -0
  281. package/dist/o-node/src/router/index.d.ts.map +1 -0
  282. package/dist/o-node/src/router/index.js +5 -0
  283. package/dist/o-node/src/router/interfaces/o-node-router.config.d.ts +3 -0
  284. package/dist/o-node/src/router/interfaces/o-node-router.config.d.ts.map +1 -0
  285. package/dist/o-node/src/router/interfaces/o-node-router.config.js +1 -0
  286. package/dist/o-node/src/router/interfaces/o-node-router.response.d.ts +8 -0
  287. package/dist/o-node/src/router/interfaces/o-node-router.response.d.ts.map +1 -0
  288. package/dist/o-node/src/router/interfaces/o-node-router.response.js +1 -0
  289. package/dist/o-node/src/router/o-node.address.d.ts +18 -0
  290. package/dist/o-node/src/router/o-node.address.d.ts.map +1 -0
  291. package/dist/o-node/src/router/o-node.address.js +29 -0
  292. package/dist/o-node/src/router/o-node.router.d.ts +46 -0
  293. package/dist/o-node/src/router/o-node.router.d.ts.map +1 -0
  294. package/dist/o-node/src/router/o-node.router.js +181 -0
  295. package/dist/o-node/src/router/o-node.routing-policy.d.ts +30 -0
  296. package/dist/o-node/src/router/o-node.routing-policy.d.ts.map +1 -0
  297. package/dist/o-node/src/router/o-node.routing-policy.js +57 -0
  298. package/dist/o-node/src/router/o-node.transport.d.ts +11 -0
  299. package/dist/o-node/src/router/o-node.transport.d.ts.map +1 -0
  300. package/dist/o-node/src/router/o-node.transport.js +18 -0
  301. package/dist/o-node/src/router/resolvers/index.d.ts +4 -0
  302. package/dist/o-node/src/router/resolvers/index.d.ts.map +1 -0
  303. package/dist/o-node/src/router/resolvers/index.js +3 -0
  304. package/dist/o-node/src/router/resolvers/o-node.leader-resolver-fallback.d.ts +8 -0
  305. package/dist/o-node/src/router/resolvers/o-node.leader-resolver-fallback.d.ts.map +1 -0
  306. package/dist/o-node/src/router/resolvers/o-node.leader-resolver-fallback.js +35 -0
  307. package/dist/{src/router/resolvers/o-node.child-resolver.d.ts → o-node/src/router/resolvers/o-node.resolver.d.ts} +2 -2
  308. package/dist/o-node/src/router/resolvers/o-node.resolver.d.ts.map +1 -0
  309. package/dist/o-node/src/router/resolvers/o-node.resolver.js +45 -0
  310. package/dist/o-node/src/router/resolvers/o-node.search-resolver.d.ts +170 -0
  311. package/dist/o-node/src/router/resolvers/o-node.search-resolver.d.ts.map +1 -0
  312. package/dist/o-node/src/router/resolvers/o-node.search-resolver.js +285 -0
  313. package/dist/o-node/src/router/route.request.d.ts +14 -0
  314. package/dist/o-node/src/router/route.request.d.ts.map +1 -0
  315. package/dist/o-node/src/router/route.request.js +1 -0
  316. package/dist/o-node/src/streaming/index.d.ts +10 -0
  317. package/dist/o-node/src/streaming/index.d.ts.map +1 -0
  318. package/dist/o-node/src/streaming/index.js +12 -0
  319. package/dist/o-node/src/streaming/libp2p-stream-transport.d.ts +50 -0
  320. package/dist/o-node/src/streaming/libp2p-stream-transport.d.ts.map +1 -0
  321. package/dist/o-node/src/streaming/libp2p-stream-transport.js +137 -0
  322. package/dist/o-node/src/streaming/node-stream-handler.d.ts +65 -0
  323. package/dist/o-node/src/streaming/node-stream-handler.d.ts.map +1 -0
  324. package/dist/o-node/src/streaming/node-stream-handler.js +101 -0
  325. package/dist/o-node/src/ui/index.d.ts +3 -0
  326. package/dist/o-node/src/ui/index.d.ts.map +1 -0
  327. package/dist/o-node/src/ui/index.js +2 -0
  328. package/dist/o-node/src/ui/types.d.ts +110 -0
  329. package/dist/o-node/src/ui/types.d.ts.map +1 -0
  330. package/dist/o-node/src/ui/types.js +17 -0
  331. package/dist/o-node/src/ui/ui-graph.manager.d.ts +70 -0
  332. package/dist/o-node/src/ui/ui-graph.manager.d.ts.map +1 -0
  333. package/dist/o-node/src/ui/ui-graph.manager.js +274 -0
  334. package/dist/o-node/src/utils/circuit-breaker.d.ts +107 -0
  335. package/dist/o-node/src/utils/circuit-breaker.d.ts.map +1 -0
  336. package/dist/o-node/src/utils/circuit-breaker.js +175 -0
  337. package/dist/o-node/src/utils/index.d.ts +3 -0
  338. package/dist/o-node/src/utils/index.d.ts.map +1 -0
  339. package/dist/o-node/src/utils/index.js +2 -0
  340. package/dist/o-node/src/utils/leader-request-wrapper.d.ts +66 -0
  341. package/dist/o-node/src/utils/leader-request-wrapper.d.ts.map +1 -0
  342. package/dist/o-node/src/utils/leader-request-wrapper.js +160 -0
  343. package/dist/o-node/src/utils/network.utils.d.ts +20 -0
  344. package/dist/o-node/src/utils/network.utils.d.ts.map +1 -0
  345. package/dist/o-node/src/utils/network.utils.js +74 -0
  346. package/dist/o-node/src/utils/stream.utils.d.ts +6 -0
  347. package/dist/o-node/src/utils/stream.utils.d.ts.map +1 -0
  348. package/dist/o-node/src/utils/stream.utils.js +31 -0
  349. package/dist/o-node/test/circuit-breaker.test.d.ts +2 -0
  350. package/dist/o-node/test/circuit-breaker.test.d.ts.map +1 -0
  351. package/dist/o-node/test/circuit-breaker.test.js +262 -0
  352. package/dist/o-node/test/helpers/test-node.tool.d.ts +15 -0
  353. package/dist/o-node/test/helpers/test-node.tool.d.ts.map +1 -0
  354. package/dist/o-node/test/helpers/test-node.tool.js +27 -0
  355. package/dist/o-node/test/leader-request-wrapper.test.d.ts +1 -0
  356. package/dist/o-node/test/leader-request-wrapper.test.d.ts.map +1 -0
  357. package/dist/o-node/test/leader-request-wrapper.test.js +246 -0
  358. package/dist/o-node/test/o-node.spec.d.ts +2 -0
  359. package/dist/o-node/test/o-node.spec.d.ts.map +1 -0
  360. package/dist/o-node/test/o-node.spec.js +20 -0
  361. package/dist/o-node/test/search-resolver.spec.d.ts +2 -0
  362. package/dist/o-node/test/search-resolver.spec.d.ts.map +1 -0
  363. package/dist/o-node/test/search-resolver.spec.js +693 -0
  364. package/dist/src/connection/o-node-connection.d.ts +2 -2
  365. package/dist/src/connection/o-node-connection.d.ts.map +1 -1
  366. package/dist/src/connection/o-node-connection.js +54 -19
  367. package/dist/src/connection/o-node-connection.manager.d.ts +16 -4
  368. package/dist/src/connection/o-node-connection.manager.d.ts.map +1 -1
  369. package/dist/src/connection/o-node-connection.manager.js +73 -44
  370. package/dist/src/connection/o-stream.request.d.ts +11 -0
  371. package/dist/src/connection/o-stream.request.d.ts.map +1 -0
  372. package/dist/src/connection/o-stream.request.js +7 -0
  373. package/dist/src/index.d.ts +2 -1
  374. package/dist/src/index.d.ts.map +1 -1
  375. package/dist/src/index.js +2 -1
  376. package/dist/src/interfaces/i-heartbeatable-node.d.ts +49 -0
  377. package/dist/src/interfaces/i-heartbeatable-node.d.ts.map +1 -0
  378. package/dist/src/interfaces/i-heartbeatable-node.js +1 -0
  379. package/dist/src/interfaces/i-reconnectable-node.d.ts +46 -0
  380. package/dist/src/interfaces/i-reconnectable-node.d.ts.map +1 -0
  381. package/dist/src/interfaces/i-reconnectable-node.js +1 -0
  382. package/dist/src/interfaces/o-node.config.d.ts +42 -0
  383. package/dist/src/interfaces/o-node.config.d.ts.map +1 -1
  384. package/dist/src/managers/o-connection-heartbeat.manager.d.ts +63 -0
  385. package/dist/src/managers/o-connection-heartbeat.manager.d.ts.map +1 -0
  386. package/dist/src/managers/o-connection-heartbeat.manager.js +227 -0
  387. package/dist/src/managers/o-reconnection.manager.d.ts +51 -0
  388. package/dist/src/managers/o-reconnection.manager.d.ts.map +1 -0
  389. package/dist/src/managers/o-reconnection.manager.js +266 -0
  390. package/dist/src/o-node.d.ts +30 -2
  391. package/dist/src/o-node.d.ts.map +1 -1
  392. package/dist/src/o-node.js +244 -33
  393. package/dist/src/o-node.notification-manager.d.ts +52 -0
  394. package/dist/src/o-node.notification-manager.d.ts.map +1 -0
  395. package/dist/src/o-node.notification-manager.js +188 -0
  396. package/dist/src/o-node.tool.d.ts.map +1 -1
  397. package/dist/src/o-node.tool.js +33 -24
  398. package/dist/src/router/o-node.router.d.ts +1 -0
  399. package/dist/src/router/o-node.router.d.ts.map +1 -1
  400. package/dist/src/router/o-node.router.js +61 -5
  401. package/dist/src/router/o-node.routing-policy.d.ts.map +1 -1
  402. package/dist/src/router/o-node.routing-policy.js +7 -2
  403. package/dist/src/router/resolvers/o-node.resolver.d.ts.map +1 -1
  404. package/dist/src/router/resolvers/o-node.resolver.js +5 -1
  405. package/dist/src/router/resolvers/o-node.search-resolver.d.ts.map +1 -1
  406. package/dist/src/router/resolvers/o-node.search-resolver.js +34 -9
  407. package/dist/src/streaming/index.d.ts +10 -0
  408. package/dist/src/streaming/index.d.ts.map +1 -0
  409. package/dist/src/streaming/index.js +12 -0
  410. package/dist/src/streaming/libp2p-stream-transport.d.ts +50 -0
  411. package/dist/src/streaming/libp2p-stream-transport.d.ts.map +1 -0
  412. package/dist/src/streaming/libp2p-stream-transport.js +137 -0
  413. package/dist/src/streaming/node-stream-handler.d.ts +65 -0
  414. package/dist/src/streaming/node-stream-handler.d.ts.map +1 -0
  415. package/dist/src/streaming/node-stream-handler.js +101 -0
  416. package/dist/src/streaming/o-node-streaming-client.d.ts +33 -0
  417. package/dist/src/streaming/o-node-streaming-client.d.ts.map +1 -0
  418. package/dist/src/streaming/o-node-streaming-client.js +130 -0
  419. package/dist/src/utils/circuit-breaker.d.ts +107 -0
  420. package/dist/src/utils/circuit-breaker.d.ts.map +1 -0
  421. package/dist/src/utils/circuit-breaker.js +175 -0
  422. package/dist/src/utils/circuit-breaker.test.d.ts +2 -0
  423. package/dist/src/utils/circuit-breaker.test.d.ts.map +1 -0
  424. package/dist/src/utils/circuit-breaker.test.js +262 -0
  425. package/dist/src/utils/index.d.ts +3 -0
  426. package/dist/src/utils/index.d.ts.map +1 -0
  427. package/dist/src/utils/index.js +2 -0
  428. package/dist/src/utils/leader-request-wrapper.d.ts +66 -0
  429. package/dist/src/utils/leader-request-wrapper.d.ts.map +1 -0
  430. package/dist/src/utils/leader-request-wrapper.js +160 -0
  431. package/dist/src/utils/leader-request-wrapper.test.d.ts +1 -0
  432. package/dist/src/utils/leader-request-wrapper.test.d.ts.map +1 -0
  433. package/dist/src/utils/leader-request-wrapper.test.js +246 -0
  434. package/dist/src/utils/stream.utils.d.ts +6 -0
  435. package/dist/src/utils/stream.utils.d.ts.map +1 -0
  436. package/dist/src/utils/stream.utils.js +31 -0
  437. package/dist/test/circuit-breaker.test.d.ts +2 -0
  438. package/dist/test/circuit-breaker.test.d.ts.map +1 -0
  439. package/dist/test/circuit-breaker.test.js +262 -0
  440. package/dist/test/helpers/test-node.tool.d.ts +15 -0
  441. package/dist/test/helpers/test-node.tool.d.ts.map +1 -0
  442. package/dist/test/helpers/test-node.tool.js +27 -0
  443. package/dist/test/leader-request-wrapper.test.d.ts +1 -0
  444. package/dist/test/leader-request-wrapper.test.d.ts.map +1 -0
  445. package/dist/test/leader-request-wrapper.test.js +246 -0
  446. package/package.json +6 -6
  447. package/dist/src/router/resolvers/o-node.child-resolver.d.ts.map +0 -1
  448. package/dist/src/router/resolvers/o-node.child-resolver.js +0 -58
@@ -0,0 +1,8 @@
1
+ export * from './connection/index.js';
2
+ export * from './core/index.js';
3
+ export * from './error/index.js';
4
+ export * from './response/index.js';
5
+ export * from './router/index.js';
6
+ export * from './transports/index.js';
7
+ export * from './utils/index.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../o-core/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './connection/index.js';
2
+ export * from './core/index.js';
3
+ export * from './error/index.js';
4
+ export * from './response/index.js';
5
+ export * from './router/index.js';
6
+ export * from './transports/index.js';
7
+ export * from './utils/index.js';
@@ -0,0 +1,2 @@
1
+ export { ResponseBuilder, ResponseContext, ResponseMiddleware, MetricsTracker, DefaultMetricsTracker, } from './response-builder.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/response/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1 @@
1
+ export { ResponseBuilder, DefaultMetricsTracker, } from './response-builder.js';
@@ -0,0 +1,140 @@
1
+ import { oRequest } from '../connection/o-request.js';
2
+ import { oResponse } from '../connection/o-response.js';
3
+ import { oError } from '../error/o-error.js';
4
+ /**
5
+ * Response context for building responses with proper metadata
6
+ */
7
+ export interface ResponseContext {
8
+ /** Whether this is a streaming response */
9
+ isStream?: boolean;
10
+ /** Whether this is the last chunk in a stream */
11
+ isLast?: boolean;
12
+ /** Whether the operation was successful */
13
+ success?: boolean;
14
+ /** Request ID for correlation */
15
+ requestId?: string | number;
16
+ /** Connection ID from the request */
17
+ connectionId?: string | number;
18
+ /** Request method for tracking */
19
+ requestMethod?: string | number;
20
+ }
21
+ /**
22
+ * Middleware function that can intercept and transform responses
23
+ */
24
+ export type ResponseMiddleware = (response: oResponse, context: ResponseContext) => oResponse | Promise<oResponse>;
25
+ /**
26
+ * Metrics tracker interface for extensible metrics tracking
27
+ */
28
+ export interface MetricsTracker {
29
+ trackSuccess(context: ResponseContext): void;
30
+ trackError(context: ResponseContext, error: oError): void;
31
+ }
32
+ /**
33
+ * Default metrics tracker that increments counters
34
+ */
35
+ export declare class DefaultMetricsTracker implements MetricsTracker {
36
+ private metrics;
37
+ constructor(metrics: {
38
+ successCount: number;
39
+ errorCount: number;
40
+ });
41
+ trackSuccess(context: ResponseContext): void;
42
+ trackError(context: ResponseContext, error: oError): void;
43
+ }
44
+ /**
45
+ * ResponseBuilder - Unified response generation for all Olane routing paths
46
+ *
47
+ * This class provides a single source of truth for creating responses across:
48
+ * - Local execution (useSelf)
49
+ * - Remote execution (use, useChild)
50
+ * - Router forwarding (forward, executeSelfRouting)
51
+ * - Streaming responses
52
+ *
53
+ * Features:
54
+ * - Consistent error normalization
55
+ * - Automatic metrics tracking
56
+ * - Context-aware response building (streaming, success/error states)
57
+ * - Extensible middleware system
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const builder = new ResponseBuilder()
62
+ * .withMetrics(node.metrics)
63
+ * .use(loggingMiddleware);
64
+ *
65
+ * const response = await builder.build(request, result, error);
66
+ * ```
67
+ */
68
+ export declare class ResponseBuilder {
69
+ private middlewares;
70
+ private metricsTracker?;
71
+ /**
72
+ * Add a middleware function to intercept responses
73
+ */
74
+ use(middleware: ResponseMiddleware): this;
75
+ /**
76
+ * Configure metrics tracking
77
+ * @param metrics The metrics object to track success/error counts
78
+ */
79
+ withMetrics(metrics: {
80
+ successCount: number;
81
+ errorCount: number;
82
+ }): this;
83
+ /**
84
+ * Configure custom metrics tracker
85
+ * @param tracker Custom metrics tracker implementation
86
+ */
87
+ withCustomMetrics(tracker: MetricsTracker): this;
88
+ /**
89
+ * Normalize any error into an oError instance
90
+ * @param error The error to normalize
91
+ * @returns An oError instance
92
+ */
93
+ normalizeError(error: any): oError;
94
+ /**
95
+ * Build a complete response from a request and result
96
+ * @param request The original request
97
+ * @param result The result data (or error object)
98
+ * @param error Optional error object
99
+ * @param context Additional response context
100
+ * @returns An oResponse instance
101
+ */
102
+ build(request: oRequest, result: any, error?: any, context?: Partial<ResponseContext>): Promise<oResponse>;
103
+ /**
104
+ * Build a streaming chunk response
105
+ * @param request The original request
106
+ * @param chunkData The chunk data
107
+ * @param context Additional response context
108
+ * @returns An oResponse instance with _last: false
109
+ */
110
+ buildChunk(request: oRequest, chunkData: any, context?: Partial<ResponseContext>): Promise<oResponse>;
111
+ /**
112
+ * Build the final chunk in a stream
113
+ * @param request The original request
114
+ * @param context Additional response context
115
+ * @returns An oResponse instance with _last: true
116
+ */
117
+ buildFinalChunk(request: oRequest, context?: Partial<ResponseContext>): Promise<oResponse>;
118
+ /**
119
+ * Build an error response
120
+ * @param request The original request
121
+ * @param error The error that occurred
122
+ * @param context Additional response context
123
+ * @returns An oResponse instance with error details
124
+ */
125
+ buildError(request: oRequest, error: any, context?: Partial<ResponseContext>): Promise<oResponse>;
126
+ /**
127
+ * Execute a function and automatically build a response based on the outcome
128
+ * @param request The request being executed
129
+ * @param executor The function to execute
130
+ * @param context Additional response context
131
+ * @returns An oResponse instance
132
+ */
133
+ execute(request: oRequest, executor: () => Promise<any>, context?: Partial<ResponseContext>): Promise<oResponse>;
134
+ /**
135
+ * Create a new ResponseBuilder instance (for chaining)
136
+ * @returns A new ResponseBuilder instance
137
+ */
138
+ static create(): ResponseBuilder;
139
+ }
140
+ //# sourceMappingURL=response-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-builder.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/response/response-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,eAAe,KACrB,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3D;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,OAAO,CAA+C;gBAElD,OAAO,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAIjE,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI5C,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAG1D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAAC,CAAiB;IAExC;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAKzC;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKxE;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAKhD;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAWlC;;;;;;;OAOG;IACG,KAAK,CACT,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,GAAG,EACX,KAAK,CAAC,EAAE,GAAG,EACX,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC;IAiDrB;;;;;;OAMG;IACG,UAAU,CACd,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,GAAG,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC;IASrB;;;;;OAKG;IACG,eAAe,CACnB,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC;IAcrB;;;;;;OAMG;IACG,UAAU,CACd,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC;IAUrB;;;;;;OAMG;IACG,OAAO,CACX,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC;IASrB;;;OAGG;IACH,MAAM,CAAC,MAAM,IAAI,eAAe;CAGjC"}
@@ -0,0 +1,190 @@
1
+ import { oResponse } from '../connection/o-response.js';
2
+ import { oError } from '../error/o-error.js';
3
+ import { oErrorCodes } from '../error/enums/codes.error.js';
4
+ /**
5
+ * Default metrics tracker that increments counters
6
+ */
7
+ export class DefaultMetricsTracker {
8
+ constructor(metrics) {
9
+ this.metrics = metrics;
10
+ }
11
+ trackSuccess(context) {
12
+ this.metrics.successCount++;
13
+ }
14
+ trackError(context, error) {
15
+ this.metrics.errorCount++;
16
+ }
17
+ }
18
+ /**
19
+ * ResponseBuilder - Unified response generation for all Olane routing paths
20
+ *
21
+ * This class provides a single source of truth for creating responses across:
22
+ * - Local execution (useSelf)
23
+ * - Remote execution (use, useChild)
24
+ * - Router forwarding (forward, executeSelfRouting)
25
+ * - Streaming responses
26
+ *
27
+ * Features:
28
+ * - Consistent error normalization
29
+ * - Automatic metrics tracking
30
+ * - Context-aware response building (streaming, success/error states)
31
+ * - Extensible middleware system
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const builder = new ResponseBuilder()
36
+ * .withMetrics(node.metrics)
37
+ * .use(loggingMiddleware);
38
+ *
39
+ * const response = await builder.build(request, result, error);
40
+ * ```
41
+ */
42
+ export class ResponseBuilder {
43
+ constructor() {
44
+ this.middlewares = [];
45
+ }
46
+ /**
47
+ * Add a middleware function to intercept responses
48
+ */
49
+ use(middleware) {
50
+ this.middlewares.push(middleware);
51
+ return this;
52
+ }
53
+ /**
54
+ * Configure metrics tracking
55
+ * @param metrics The metrics object to track success/error counts
56
+ */
57
+ withMetrics(metrics) {
58
+ this.metricsTracker = new DefaultMetricsTracker(metrics);
59
+ return this;
60
+ }
61
+ /**
62
+ * Configure custom metrics tracker
63
+ * @param tracker Custom metrics tracker implementation
64
+ */
65
+ withCustomMetrics(tracker) {
66
+ this.metricsTracker = tracker;
67
+ return this;
68
+ }
69
+ /**
70
+ * Normalize any error into an oError instance
71
+ * @param error The error to normalize
72
+ * @returns An oError instance
73
+ */
74
+ normalizeError(error) {
75
+ if (error instanceof oError) {
76
+ return error;
77
+ }
78
+ return new oError(oErrorCodes.UNKNOWN, error?.message || String(error), error?.stack);
79
+ }
80
+ /**
81
+ * Build a complete response from a request and result
82
+ * @param request The original request
83
+ * @param result The result data (or error object)
84
+ * @param error Optional error object
85
+ * @param context Additional response context
86
+ * @returns An oResponse instance
87
+ */
88
+ async build(request, result, error, context) {
89
+ const isError = !!error;
90
+ const success = !isError;
91
+ // Build context
92
+ const responseContext = {
93
+ isStream: context?.isStream ?? false,
94
+ isLast: context?.isLast ?? true,
95
+ success,
96
+ requestId: request.id,
97
+ connectionId: request.params?._connectionId,
98
+ requestMethod: request.method,
99
+ ...context,
100
+ };
101
+ // Create response
102
+ let response = new oResponse({
103
+ id: request.id,
104
+ data: result,
105
+ error: result?.error,
106
+ success,
107
+ _last: responseContext.isLast ?? true,
108
+ _isStreaming: responseContext.isStream ?? false,
109
+ _requestMethod: String(responseContext.requestMethod || request.method || ''),
110
+ _connectionId: String(responseContext.connectionId || ''),
111
+ });
112
+ // Apply middleware
113
+ for (const middleware of this.middlewares) {
114
+ response = await middleware(response, responseContext);
115
+ }
116
+ // Track metrics
117
+ if (this.metricsTracker) {
118
+ if (success) {
119
+ this.metricsTracker.trackSuccess(responseContext);
120
+ }
121
+ else {
122
+ this.metricsTracker.trackError(responseContext, this.normalizeError(error));
123
+ }
124
+ }
125
+ return response;
126
+ }
127
+ /**
128
+ * Build a streaming chunk response
129
+ * @param request The original request
130
+ * @param chunkData The chunk data
131
+ * @param context Additional response context
132
+ * @returns An oResponse instance with _last: false
133
+ */
134
+ async buildChunk(request, chunkData, context) {
135
+ return this.build(request, chunkData, null, {
136
+ ...context,
137
+ isStream: true,
138
+ isLast: false,
139
+ success: true,
140
+ });
141
+ }
142
+ /**
143
+ * Build the final chunk in a stream
144
+ * @param request The original request
145
+ * @param context Additional response context
146
+ * @returns An oResponse instance with _last: true
147
+ */
148
+ async buildFinalChunk(request, context) {
149
+ return this.build(request, { success: true, response: 'Stream completed' }, null, {
150
+ ...context,
151
+ isStream: true,
152
+ isLast: true,
153
+ success: true,
154
+ });
155
+ }
156
+ /**
157
+ * Build an error response
158
+ * @param request The original request
159
+ * @param error The error that occurred
160
+ * @param context Additional response context
161
+ * @returns An oResponse instance with error details
162
+ */
163
+ async buildError(request, error, context) {
164
+ const normalizedError = this.normalizeError(error);
165
+ return this.build(request, { error: normalizedError.toJSON() }, normalizedError, context);
166
+ }
167
+ /**
168
+ * Execute a function and automatically build a response based on the outcome
169
+ * @param request The request being executed
170
+ * @param executor The function to execute
171
+ * @param context Additional response context
172
+ * @returns An oResponse instance
173
+ */
174
+ async execute(request, executor, context) {
175
+ try {
176
+ const result = await executor();
177
+ return await this.build(request, result, null, context);
178
+ }
179
+ catch (error) {
180
+ return await this.buildError(request, error, context);
181
+ }
182
+ }
183
+ /**
184
+ * Create a new ResponseBuilder instance (for chaining)
185
+ * @returns A new ResponseBuilder instance
186
+ */
187
+ static create() {
188
+ return new ResponseBuilder();
189
+ }
190
+ }
@@ -0,0 +1,8 @@
1
+ export declare enum RestrictedAddresses {
2
+ REGISTRY = "o://registry",
3
+ LEADER = "o://leader",
4
+ LANE = "o://lane",
5
+ INTELLIGENCE = "o://intelligence"
6
+ }
7
+ export declare const RestrictedAddressesList: RestrictedAddresses[];
8
+ //# sourceMappingURL=restricted-addresses.enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restricted-addresses.enum.d.ts","sourceRoot":"","sources":["../../../../../../o-core/src/router/enums/restricted-addresses.enum.ts"],"names":[],"mappings":"AAAA,oBAAY,mBAAmB;IAC7B,QAAQ,iBAAiB;IACzB,MAAM,eAAe;IACrB,IAAI,aAAa;IACjB,YAAY,qBAAqB;CAClC;AAED,eAAO,MAAM,uBAAuB,uBAKnC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export var RestrictedAddresses;
2
+ (function (RestrictedAddresses) {
3
+ RestrictedAddresses["REGISTRY"] = "o://registry";
4
+ RestrictedAddresses["LEADER"] = "o://leader";
5
+ RestrictedAddresses["LANE"] = "o://lane";
6
+ RestrictedAddresses["INTELLIGENCE"] = "o://intelligence";
7
+ })(RestrictedAddresses || (RestrictedAddresses = {}));
8
+ export const RestrictedAddressesList = [
9
+ RestrictedAddresses.REGISTRY,
10
+ RestrictedAddresses.LEADER,
11
+ RestrictedAddresses.LANE,
12
+ RestrictedAddresses.INTELLIGENCE,
13
+ ];
@@ -0,0 +1,11 @@
1
+ export * from './o-router.js';
2
+ export * from './o-address.js';
3
+ export * from './interfaces/route.response.js';
4
+ export * from './enums/restricted-addresses.enum.js';
5
+ export * from './o-resolver-chain.js';
6
+ export * from './o-address-resolver.js';
7
+ export * from './o-routing-policy.js';
8
+ export * from './o-request-preparation.js';
9
+ export * from './interfaces/resolve.request.js';
10
+ export * from './o-request.router.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/router/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from './o-router.js';
2
+ export * from './o-address.js';
3
+ export * from './interfaces/route.response.js';
4
+ export * from './enums/restricted-addresses.enum.js';
5
+ export * from './o-resolver-chain.js';
6
+ export * from './o-address-resolver.js';
7
+ export * from './o-routing-policy.js';
8
+ export * from './o-request-preparation.js';
9
+ export * from './interfaces/resolve.request.js';
10
+ export * from './o-request.router.js';
@@ -0,0 +1,10 @@
1
+ import { oCore } from '../../core/o-core.js';
2
+ import { oAddress } from '../o-address.js';
3
+ import { oRouterRequest } from '../o-request.router.js';
4
+ export interface ResolveRequest {
5
+ address: oAddress;
6
+ targetAddress: oAddress;
7
+ node: oCore;
8
+ request?: oRouterRequest;
9
+ }
10
+ //# sourceMappingURL=resolve.request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.request.d.ts","sourceRoot":"","sources":["../../../../../../o-core/src/router/interfaces/resolve.request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,QAAQ,CAAC;IAClB,aAAa,EAAE,QAAQ,CAAC;IACxB,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B"}
@@ -0,0 +1,8 @@
1
+ import { oAddress } from '../o-address.js';
2
+ import { oRouterRequest } from '../o-request.router.js';
3
+ export interface RouteResponse {
4
+ nextHopAddress: oAddress;
5
+ targetAddress: oAddress;
6
+ requestOverride?: oRouterRequest;
7
+ }
8
+ //# sourceMappingURL=route.response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.response.d.ts","sourceRoot":"","sources":["../../../../../../o-core/src/router/interfaces/route.response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,QAAQ,CAAC;IACzB,aAAa,EAAE,QAAQ,CAAC;IACxB,eAAe,CAAC,EAAE,cAAc,CAAC;CAClC"}
@@ -0,0 +1,14 @@
1
+ import { oAddress } from './o-address.js';
2
+ import { oObject } from '../core/o-object.js';
3
+ import { oTransport } from '../transports/o-transport.js';
4
+ import { TransportType } from '../transports/interfaces/transport-type.enum.js';
5
+ import { RouteResponse } from './interfaces/route.response.js';
6
+ import { ResolveRequest } from './interfaces/resolve.request.js';
7
+ export declare abstract class oAddressResolver extends oObject {
8
+ protected readonly address: oAddress;
9
+ constructor(address: oAddress);
10
+ get customTransports(): oTransport[];
11
+ get transportTypes(): TransportType[];
12
+ resolve(request: ResolveRequest): Promise<RouteResponse>;
13
+ }
14
+ //# sourceMappingURL=o-address-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-address-resolver.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/router/o-address-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,8BAAsB,gBAAiB,SAAQ,OAAO;IACxC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ;gBAAjB,OAAO,EAAE,QAAQ;IAIhD,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAEnC;IAED,IAAI,cAAc,IAAI,aAAa,EAAE,CAEpC;IAEK,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAM/D"}
@@ -0,0 +1,19 @@
1
+ import { oObject } from '../core/o-object.js';
2
+ export class oAddressResolver extends oObject {
3
+ constructor(address) {
4
+ super();
5
+ this.address = address;
6
+ }
7
+ get customTransports() {
8
+ return [];
9
+ }
10
+ get transportTypes() {
11
+ return this.customTransports.map((transport) => transport.type);
12
+ }
13
+ async resolve(request) {
14
+ return {
15
+ nextHopAddress: request.address,
16
+ targetAddress: request.address,
17
+ };
18
+ }
19
+ }
@@ -0,0 +1,33 @@
1
+ import { CID } from 'multiformats';
2
+ import { oObject } from '../core/o-object.js';
3
+ import { oTransport } from '../transports/o-transport.js';
4
+ export declare class oAddress extends oObject {
5
+ readonly value: string;
6
+ transports: oTransport[];
7
+ constructor(value: string, transports?: oTransport[]);
8
+ get libp2pTransports(): oTransport[];
9
+ get customTransports(): oTransport[];
10
+ equals(other: oAddress): boolean;
11
+ transportsEqual(other: oAddress): boolean;
12
+ setTransports(transports: oTransport[]): void;
13
+ validate(): boolean;
14
+ get paths(): string;
15
+ get protocol(): string;
16
+ get root(): string;
17
+ toStaticAddress(): oAddress;
18
+ toRootAddress(): oAddress;
19
+ toString(): string;
20
+ toJSON(): {
21
+ value: string;
22
+ transports: string[];
23
+ };
24
+ supportsTransport(transport: oTransport): boolean;
25
+ toCID(): Promise<CID>;
26
+ static equals(a: oAddress, b: oAddress): boolean;
27
+ static leader(): oAddress;
28
+ static lane(): oAddress;
29
+ static registry(): oAddress;
30
+ static isStatic(address: oAddress): boolean;
31
+ static next(address: oAddress, targetAddress: oAddress): oAddress;
32
+ }
33
+ //# sourceMappingURL=o-address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-address.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/router/o-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI1D,qBAAa,QAAS,SAAQ,OAAO;aAIjB,KAAK,EAAE,MAAM;IAHxB,UAAU,EAAE,UAAU,EAAE,CAAC;gBAGd,KAAK,EAAE,MAAM,EAC7B,UAAU,GAAE,UAAU,EAAO;IAM/B,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAEnC;IAED,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAEnC;IAED,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIhC,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAMzC,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI;IAI7C,QAAQ,IAAI,OAAO;IAOnB,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,eAAe,IAAI,QAAQ;IAQ3B,aAAa,IAAI,QAAQ;IAQzB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI;QACR,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB;IAOD,iBAAiB,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO;IAI3C,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;IAI3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO;IAIhD,MAAM,CAAC,MAAM,IAAI,QAAQ;IAIzB,MAAM,CAAC,IAAI,IAAI,QAAQ;IAIvB,MAAM,CAAC,QAAQ,IAAI,QAAQ;IAI3B,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO;IAI3C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,GAAG,QAAQ;CAkClE"}
@@ -0,0 +1,114 @@
1
+ import { oObject } from '../core/o-object.js';
2
+ import { TransportType } from '../transports/index.js';
3
+ import { CoreUtils } from '../utils/core.utils.js';
4
+ import { RestrictedAddresses } from './enums/restricted-addresses.enum.js';
5
+ export class oAddress extends oObject {
6
+ constructor(value, transports = []) {
7
+ super(value);
8
+ this.value = value;
9
+ this.transports = transports;
10
+ }
11
+ get libp2pTransports() {
12
+ return this.transports.filter((t) => t.type === TransportType.LIBP2P) || [];
13
+ }
14
+ get customTransports() {
15
+ return this.transports.filter((t) => t.type === TransportType.CUSTOM) || [];
16
+ }
17
+ equals(other) {
18
+ return this.value === other.value && this.transportsEqual(other);
19
+ }
20
+ transportsEqual(other) {
21
+ return this.transports.every((t) => other.transports.some((t2) => t.toString() === t2.toString()));
22
+ }
23
+ setTransports(transports) {
24
+ this.transports = transports;
25
+ }
26
+ validate() {
27
+ if (!this.value?.startsWith('o://')) {
28
+ return false;
29
+ }
30
+ return true;
31
+ }
32
+ get paths() {
33
+ return this.value.replace('o://', '');
34
+ }
35
+ get protocol() {
36
+ return this.value.replace('o://', '/o/');
37
+ }
38
+ get root() {
39
+ return 'o://' + this.paths.split('/')[0];
40
+ }
41
+ toStaticAddress() {
42
+ const paths = this.paths.split('/');
43
+ if (paths.length === 0) {
44
+ return this;
45
+ }
46
+ return new oAddress(`o://${paths[paths.length - 1]}`, this.transports);
47
+ }
48
+ toRootAddress() {
49
+ const paths = this.paths.split('/');
50
+ if (paths.length === 0) {
51
+ return this;
52
+ }
53
+ return new oAddress(`o://${paths[0]}`);
54
+ }
55
+ toString() {
56
+ return this.value;
57
+ }
58
+ toJSON() {
59
+ return {
60
+ value: this.value,
61
+ transports: this.transports.map((t) => t.toString()),
62
+ };
63
+ }
64
+ supportsTransport(transport) {
65
+ return this.transports.some((t) => t.type === transport.type);
66
+ }
67
+ async toCID() {
68
+ return await CoreUtils.toCID({ address: this.toString() });
69
+ }
70
+ static equals(a, b) {
71
+ return a.value === b.value;
72
+ }
73
+ static leader() {
74
+ return new oAddress(RestrictedAddresses.LEADER);
75
+ }
76
+ static lane() {
77
+ return new oAddress(RestrictedAddresses.LANE);
78
+ }
79
+ static registry() {
80
+ return new oAddress(RestrictedAddresses.REGISTRY);
81
+ }
82
+ static isStatic(address) {
83
+ return address.value.startsWith(RestrictedAddresses.LEADER) === false;
84
+ }
85
+ static next(address, targetAddress) {
86
+ const remainingPath = targetAddress.protocol.replace(address.protocol + '/', '');
87
+ // we are at the destination
88
+ if (remainingPath === '') {
89
+ return address;
90
+ }
91
+ // if remainingPath equals targetAddress.protocol, the replace didn't match
92
+ // this means we're either at destination (addresses are equal) or on different branch
93
+ if (remainingPath === targetAddress.protocol) {
94
+ // check if we're actually at the destination
95
+ if (address.value === targetAddress.value) {
96
+ return address;
97
+ }
98
+ // we're on a different branch, need to go back to leader for resolution
99
+ if (!address.equals(oAddress.leader())) {
100
+ return oAddress.leader();
101
+ }
102
+ // we ARE the leader, and we can't make progress - stay at leader for resolution
103
+ return address;
104
+ }
105
+ // do we need to go back to the leader?
106
+ if (!address.equals(oAddress.leader()) && // if we are a leader, do not got back to self
107
+ oAddress.isStatic(targetAddress)) {
108
+ return oAddress.leader();
109
+ }
110
+ // we need to go to the child address
111
+ const nextHop = remainingPath.replace('/o/', '').split('/').reverse().pop();
112
+ return new oAddress(address.value + '/' + nextHop);
113
+ }
114
+ }