@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,463 @@
1
+ import { NodeState } from './interfaces/state.enum.js';
2
+ import { oAddress } from '../router/o-address.js';
3
+ import { NodeType } from './interfaces/node-type.enum.js';
4
+ import { oDependency } from './o-dependency.js';
5
+ import { oError } from '../error/o-error.js';
6
+ import { oObject } from './o-object.js';
7
+ import { oMetrics } from './lib/o-metrics.js';
8
+ import { oHierarchyManager } from './lib/o-hierarchy.manager.js';
9
+ import { oRequestManager } from './lib/o-request.manager.js';
10
+ import { oRequest } from '../connection/o-request.js';
11
+ import { ResponseBuilder } from '../response/response-builder.js';
12
+ export class oCore extends oObject {
13
+ constructor(config) {
14
+ super((config.name ? `:${config.name}` : '') + ':' + config.address.toString());
15
+ this.config = config;
16
+ this.state = NodeState.STOPPED;
17
+ this.errors = [];
18
+ this.metrics = new oMetrics();
19
+ this.requestManager = new oRequestManager();
20
+ this.address = config.address || new oAddress('o://node');
21
+ this.hierarchyManager = new oHierarchyManager({
22
+ leaders: this.config.leader ? [this.config.leader] : [],
23
+ parents: this.config.parent ? [this.config.parent] : [],
24
+ });
25
+ }
26
+ get isLeader() {
27
+ return this.config.type === NodeType.LEADER;
28
+ }
29
+ get leader() {
30
+ return this.isLeader ? this.address : this.config?.leader || null;
31
+ }
32
+ async useStream(address, data, options) {
33
+ return this.use(address, {
34
+ ...data,
35
+ params: {
36
+ ...data.params,
37
+ _isStreaming: true,
38
+ },
39
+ }, {
40
+ ...options,
41
+ isStream: true,
42
+ });
43
+ }
44
+ async useDirect(address, data) {
45
+ return this.use(address, data, { noRouting: true });
46
+ }
47
+ /**
48
+ * Sends a request to a remote node in the O-Lane network using the specified address and optional data payload.
49
+ *
50
+ * This method handles the complete communication flow:
51
+ * 1. Validates the target address format
52
+ * 2. Resolves the routing path through the network
53
+ * 3. Establishes a connection to the target node
54
+ * 4. Sends the request payload and waits for response
55
+ * 5. Handles errors and throws them as oError instances
56
+ *
57
+ * @param address - The target node address in O-Lane format (must start with 'o://')
58
+ * @param data - Optional request data containing method, parameters, and request ID
59
+ * @param data.method - The method name to invoke on the target node
60
+ * @param data.params - Key-value pairs of parameters to pass to the method
61
+ * @param data.id - Unique identifier for the request (for tracking purposes)
62
+ * @returns Promise that resolves to an oResponse containing the result from the target node
63
+ * @throws {Error} When the address is invalid (doesn't pass validation)
64
+ * @throws {oError} When the target node returns an error response
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * // Basic usage - call a method on a remote node
69
+ * const response = await node.use(
70
+ * new oAddress('o://calculator/add'),
71
+ * {
72
+ * method: 'add',
73
+ * params: { a: 5, b: 3 },
74
+ * id: 'calc-001'
75
+ * }
76
+ * );
77
+ * console.log(response.result); // { result: 8 }
78
+ *
79
+ * // Minimal usage - just specify the address
80
+ * const response = await node.use(
81
+ * new oAddress('o://status/health')
82
+ * );
83
+ * console.log(response.result); // { status: 'healthy' }
84
+ *
85
+ * // Error handling
86
+ * try {
87
+ * const response = await node.use(
88
+ * new oAddress('o://calculator/divide'),
89
+ * { method: 'divide', params: { a: 10, b: 0 } }
90
+ * );
91
+ * } catch (error) {
92
+ * if (error instanceof oError) {
93
+ * console.error(`Node error ${error.code}: ${error.message}`);
94
+ * } else {
95
+ * console.error('Invalid address or connection error:', error.message);
96
+ * }
97
+ * }
98
+ * ```
99
+ */
100
+ async use(address, data, options) {
101
+ this.validateRunning();
102
+ if (!address.validate()) {
103
+ throw new Error('Invalid address');
104
+ }
105
+ this.logger.debug('Using address: ', address.toString());
106
+ // check for static match
107
+ if (address.toStaticAddress().equals(this.address.toStaticAddress())) {
108
+ return this.useSelf(data);
109
+ }
110
+ // if no routing is requested, use the address as is
111
+ if (options?.noRouting) {
112
+ this.logger.debug('No routing requested, using address as is', address.toString());
113
+ }
114
+ const { nextHopAddress, targetAddress } = options?.noRouting
115
+ ? { nextHopAddress: address, targetAddress: address }
116
+ : await this.router.translate(address, this);
117
+ if (nextHopAddress.toStaticAddress().equals(this.address.toStaticAddress())) {
118
+ return this.useSelf(data);
119
+ }
120
+ const connection = await this.connect({
121
+ nextHopAddress: nextHopAddress,
122
+ address: targetAddress,
123
+ callerAddress: this.address,
124
+ readTimeoutMs: options?.readTimeoutMs,
125
+ drainTimeoutMs: options?.drainTimeoutMs,
126
+ isStream: options?.isStream,
127
+ abortSignal: options?.abortSignal,
128
+ });
129
+ if (options?.isStream) {
130
+ connection.onChunk((response) => {
131
+ options.onChunk?.(response);
132
+ });
133
+ }
134
+ // communicate the payload to the target node
135
+ const response = await connection.send({
136
+ address: targetAddress?.toString() || '',
137
+ payload: data || {},
138
+ id: data?.id,
139
+ });
140
+ // we handle streaming response differently
141
+ if (options?.isStream) {
142
+ return response;
143
+ }
144
+ // if there is an error, throw it to continue to bubble up
145
+ this.handleResponseError(response);
146
+ return response;
147
+ }
148
+ /**
149
+ * Helper method to handle response errors
150
+ * @param response The response to check for errors
151
+ * @throws oError if the response contains an error
152
+ */
153
+ handleResponseError(response) {
154
+ if (response.result.error) {
155
+ this.logger.error('response.result.error', JSON.stringify(response.result.error, null, 2));
156
+ throw oError.fromJSON(response.result.error);
157
+ }
158
+ }
159
+ /**
160
+ * Helper method to validate node is running
161
+ * @throws Error if node is not running
162
+ */
163
+ validateRunning() {
164
+ if (!this.isRunning) {
165
+ this.logger.error('Node is not running', this.state);
166
+ throw new Error('Node is not running');
167
+ }
168
+ }
169
+ async useSelf(data) {
170
+ this.validateRunning();
171
+ // let's call our own tool
172
+ this.logger.debug('Calling ourselves, skipping...', data);
173
+ const request = new oRequest({
174
+ method: data?.method,
175
+ params: {
176
+ _connectionId: 0,
177
+ _requestMethod: data?.method,
178
+ ...data?.params,
179
+ },
180
+ id: 0,
181
+ });
182
+ // Use ResponseBuilder with automatic error handling and metrics tracking
183
+ const responseBuilder = ResponseBuilder.create().withMetrics(this.metrics);
184
+ try {
185
+ const result = await this.execute(request);
186
+ return await responseBuilder.build(request, result, null);
187
+ }
188
+ catch (error) {
189
+ this.logger.error('Error executing tool [self]: ', error);
190
+ return await responseBuilder.buildError(request, error);
191
+ }
192
+ }
193
+ async useChild(childAddress, data, options) {
194
+ this.validateRunning();
195
+ if (!childAddress.transports) {
196
+ const child = this.hierarchyManager.getChild(childAddress);
197
+ if (!child) {
198
+ this.logger.warn('Child address has no transports, this might break!');
199
+ }
200
+ else {
201
+ this.logger.debug('Setting transports for child: ', child.transports.map((t) => t.toString()));
202
+ childAddress.setTransports(child?.transports || []);
203
+ }
204
+ }
205
+ const connection = await this.connect({
206
+ nextHopAddress: childAddress,
207
+ address: childAddress,
208
+ callerAddress: this.address,
209
+ isStream: options?.isStream,
210
+ });
211
+ if (options?.isStream) {
212
+ connection.onChunk((response) => {
213
+ options.onChunk?.(response);
214
+ });
215
+ }
216
+ // communicate the payload to the target node
217
+ const response = await connection.send({
218
+ address: childAddress?.toString() || '',
219
+ payload: data || {},
220
+ id: data?.id,
221
+ });
222
+ // if there is an error, throw it to continue to bubble up
223
+ this.handleResponseError(response);
224
+ return response;
225
+ }
226
+ // hierarchy
227
+ addChildNode(node) {
228
+ this.hierarchyManager.addChild(node.address);
229
+ }
230
+ removeChildNode(node) {
231
+ this.hierarchyManager.removeChild(node.address);
232
+ }
233
+ /**
234
+ * Emit a notification event
235
+ */
236
+ notify(event) {
237
+ if (this.notificationManager) {
238
+ this.notificationManager.emit(event);
239
+ }
240
+ }
241
+ /**
242
+ * Subscribe to notification events
243
+ */
244
+ onNotification(eventType, handler, filter) {
245
+ if (!this.notificationManager) {
246
+ throw new Error('Notification manager not initialized');
247
+ }
248
+ return this.notificationManager.on(eventType, handler, filter);
249
+ }
250
+ // initialize
251
+ async initialize() {
252
+ // Create and initialize notification manager
253
+ this.notificationManager = this.createNotificationManager();
254
+ await this.notificationManager.initialize();
255
+ }
256
+ get isRunning() {
257
+ return (this.state === NodeState.RUNNING ||
258
+ this.state === NodeState.STOPPING ||
259
+ this.state === NodeState.STARTING);
260
+ }
261
+ async hookStartFinished() { }
262
+ /**
263
+ * Starts the node by transitioning through initialization and registration phases.
264
+ *
265
+ * This method performs the following operations in sequence:
266
+ * 1. Validates that the node is in STOPPED state
267
+ * 2. Sets state to STARTING
268
+ * 3. Calls initialize() to set up the node's core components
269
+ * 4. Attempts registration with the network (registration errors are logged but don't fail startup)
270
+ * 5. Sets state to RUNNING on success
271
+ *
272
+ * @throws {Error} If the node is not in STOPPED state or initialization fails
273
+ * @returns {Promise<void>} Resolves when the node is successfully started and running
274
+ *
275
+ * @example
276
+ * ```typescript
277
+ * const node = new oNode(config);
278
+ * try {
279
+ * await node.start();
280
+ * console.log('Node is now running');
281
+ * } catch (error) {
282
+ * console.error('Failed to start node:', error);
283
+ * }
284
+ * ```
285
+ *
286
+ * @remarks
287
+ * - If the node is already running or starting, the method will log a warning and return early
288
+ * - Registration failures are logged but do not prevent the node from starting
289
+ * - On any initialization error, the node state is set to ERROR and teardown() is called
290
+ * - The node must be in STOPPED state before calling this method
291
+ */
292
+ async start() {
293
+ if (this.state !== NodeState.STOPPED) {
294
+ this.logger.warn('Node is not stopped, skipping start');
295
+ return;
296
+ }
297
+ this.state = NodeState.STARTING;
298
+ try {
299
+ await this.initialize();
300
+ await this.register().catch((error) => {
301
+ this.logger.error('Failed to register node', error);
302
+ });
303
+ await this.hookStartFinished();
304
+ this.state = NodeState.RUNNING;
305
+ // Start optional heartbeat to monitor if enabled
306
+ if (process.env.MONITOR_ENABLED === 'true' &&
307
+ process.env.MONITOR_ADDRESS) {
308
+ this.startHeartbeat();
309
+ }
310
+ }
311
+ catch (error) {
312
+ this.logger.error('Failed to start node', error);
313
+ this.errors.push(error);
314
+ this.state = NodeState.ERROR;
315
+ await this.teardown();
316
+ }
317
+ }
318
+ /**
319
+ * Stops the node by performing cleanup and transitioning to a stopped state.
320
+ *
321
+ * This method performs the following operations in sequence:
322
+ * 1. Sets state to STOPPING
323
+ * 2. Calls teardown() to clean up node resources and connections
324
+ * 3. Sets state to STOPPED on successful completion
325
+ *
326
+ * @throws {Error} If teardown operations fail, the node state will be set to ERROR
327
+ * @returns {Promise<void>} Resolves when the node is successfully stopped
328
+ *
329
+ * @example
330
+ * ```typescript
331
+ * const node = new oNode(config);
332
+ * await node.start();
333
+ *
334
+ * // Later, when shutting down
335
+ * try {
336
+ * await node.stop();
337
+ * console.log('Node stopped successfully');
338
+ * } catch (error) {
339
+ * console.error('Failed to stop node:', error);
340
+ * }
341
+ * ```
342
+ *
343
+ * @remarks
344
+ * - This method can be called from any node state
345
+ * - If teardown fails, errors are logged and the node state is set to ERROR
346
+ * - All cleanup operations are performed through the teardown() method
347
+ * - The method will attempt to stop gracefully even if the node is in an error state
348
+ */
349
+ async stop() {
350
+ this.logger.debug('Stop node called...');
351
+ if (this.state !== NodeState.RUNNING) {
352
+ this.logger.warn('Node is not running, skipping stop');
353
+ return;
354
+ }
355
+ this.state = NodeState.STOPPING;
356
+ // Stop heartbeat if running
357
+ if (this.heartbeatInterval) {
358
+ clearInterval(this.heartbeatInterval);
359
+ this.heartbeatInterval = undefined;
360
+ }
361
+ try {
362
+ await this.teardown();
363
+ this.state = NodeState.STOPPED;
364
+ this.logger.debug('Node stopped!');
365
+ }
366
+ catch (error) {
367
+ this.errors.push(error);
368
+ this.state = NodeState.ERROR;
369
+ this.logger.error('Node failed to stop', error);
370
+ }
371
+ }
372
+ async teardown() {
373
+ this.logger.debug('Tearing down node...');
374
+ this.state = NodeState.STOPPING;
375
+ for (const child of this.hierarchyManager.children) {
376
+ this.logger.debug('Stopping child: ' + child.toString());
377
+ await this.useChild(child, {
378
+ method: 'stop',
379
+ params: {},
380
+ }).catch((error) => {
381
+ if (error.message === 'No data received') {
382
+ // ignore
383
+ }
384
+ else {
385
+ this.logger.error('Potential error stopping child', error);
386
+ }
387
+ });
388
+ this.logger.debug('Child stopped: ' + child.toString());
389
+ }
390
+ this.hierarchyManager.clear();
391
+ // Teardown notification manager
392
+ if (this.notificationManager) {
393
+ await this.notificationManager.teardown();
394
+ }
395
+ }
396
+ get dependencies() {
397
+ return this.config.dependencies?.map((d) => new oDependency(d)) || [];
398
+ }
399
+ /**
400
+ * Start sending periodic heartbeats to the monitor node
401
+ * This is optional and only runs if MONITOR_ENABLED=true and MONITOR_ADDRESS is set
402
+ */
403
+ startHeartbeat() {
404
+ const interval = parseInt(process.env.MONITOR_HEARTBEAT_INTERVAL || '30000', 10);
405
+ const monitorAddress = new oAddress(process.env.MONITOR_ADDRESS || 'o://monitor');
406
+ this.logger.debug(`Starting heartbeat to ${monitorAddress.toString()} every ${interval}ms`);
407
+ this.heartbeatInterval = setInterval(async () => {
408
+ try {
409
+ const metrics = {
410
+ successCount: this.metrics.successCount,
411
+ errorCount: this.metrics.errorCount,
412
+ activeRequests: this.requestManager.activeRequests.length,
413
+ state: this.state,
414
+ };
415
+ // Add stream count if available (oNode instances have this method)
416
+ if (typeof this.getStreamCount === 'function') {
417
+ metrics.streamCount = this.getStreamCount();
418
+ }
419
+ await this.use(monitorAddress, {
420
+ method: 'record_heartbeat',
421
+ params: {
422
+ address: this.address.toString(),
423
+ timestamp: Date.now(),
424
+ metrics,
425
+ },
426
+ });
427
+ }
428
+ catch (error) {
429
+ // Monitor unavailable, fail silently
430
+ this.logger.debug('Heartbeat failed (monitor unavailable):', error);
431
+ }
432
+ }, interval);
433
+ }
434
+ get methods() {
435
+ return this.config.methods || {};
436
+ }
437
+ get description() {
438
+ return this.config.description || '';
439
+ }
440
+ get staticAddress() {
441
+ return this.config.address;
442
+ }
443
+ get type() {
444
+ return this.config.type || NodeType.UNKNOWN;
445
+ }
446
+ get transports() {
447
+ return [];
448
+ }
449
+ get parent() {
450
+ return this.config.parent || null;
451
+ }
452
+ get parentTransports() {
453
+ return this.parent?.transports || [];
454
+ }
455
+ async whoami() {
456
+ return {
457
+ address: this.address.toString(),
458
+ type: this.type,
459
+ description: this.description,
460
+ methods: this.methods,
461
+ };
462
+ }
463
+ }
@@ -0,0 +1,9 @@
1
+ import { oDependency as oDependencyType } from '@olane/o-protocol';
2
+ export declare class oDependency implements oDependencyType {
3
+ address: string;
4
+ version?: string;
5
+ constructor(config: oDependencyType);
6
+ toJSON(): oDependencyType;
7
+ toString(): string;
8
+ }
9
+ //# sourceMappingURL=o-dependency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-dependency.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/core/o-dependency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEnE,qBAAa,WAAY,YAAW,eAAe;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEL,MAAM,EAAE,eAAe;IAKnC,MAAM,IAAI,eAAe;IAOzB,QAAQ,IAAI,MAAM;CAGnB"}
@@ -0,0 +1,15 @@
1
+ export class oDependency {
2
+ constructor(config) {
3
+ this.address = config.address;
4
+ this.version = config.version;
5
+ }
6
+ toJSON() {
7
+ return {
8
+ address: this.address,
9
+ version: this.version,
10
+ };
11
+ }
12
+ toString() {
13
+ return JSON.stringify(this.toJSON());
14
+ }
15
+ }
@@ -0,0 +1,7 @@
1
+ import { Logger } from '../utils/logger.js';
2
+ export declare class oObject {
3
+ logger: Logger;
4
+ constructor(name?: string);
5
+ static log(...args: any[]): void;
6
+ }
7
+ //# sourceMappingURL=o-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-object.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/core/o-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,qBAAa,OAAO;IACX,MAAM,EAAE,MAAM,CAAC;gBACV,IAAI,CAAC,EAAE,MAAM;IAIzB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;CAI1B"}
@@ -0,0 +1,10 @@
1
+ import { Logger } from '../utils/logger.js';
2
+ export class oObject {
3
+ constructor(name) {
4
+ this.logger = new Logger(this.constructor.name + (name ? `:${name}` : ''));
5
+ }
6
+ static log(...args) {
7
+ const l = new Logger(this.constructor.name);
8
+ l.debug(...args);
9
+ }
10
+ }
@@ -0,0 +1,12 @@
1
+ import { oParameter as oParameterType } from '@olane/o-protocol';
2
+ export declare class oParameter implements oParameterType {
3
+ name: string;
4
+ type: string;
5
+ value: any;
6
+ description?: string;
7
+ required?: boolean;
8
+ constructor(config: oParameterType);
9
+ toJSON(): oParameterType;
10
+ toString(): string;
11
+ }
12
+ //# sourceMappingURL=o-parameter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-parameter.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/core/o-parameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEjE,qBAAa,UAAW,YAAW,cAAc;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAEP,MAAM,EAAE,cAAc;IAQlC,MAAM,IAAI,cAAc;IAUxB,QAAQ,IAAI,MAAM;CAGnB"}
@@ -0,0 +1,21 @@
1
+ export class oParameter {
2
+ constructor(config) {
3
+ this.name = config.name;
4
+ this.type = config.type;
5
+ this.value = config.value;
6
+ this.description = config.description;
7
+ this.required = config.required;
8
+ }
9
+ toJSON() {
10
+ return {
11
+ name: this.name,
12
+ type: this.type,
13
+ value: this.value,
14
+ description: this.description,
15
+ required: this.required,
16
+ };
17
+ }
18
+ toString() {
19
+ return JSON.stringify(this.toJSON());
20
+ }
21
+ }
@@ -0,0 +1,20 @@
1
+ export declare enum oErrorCodes {
2
+ UNKNOWN = 1001,
3
+ NOT_FOUND = 1002,
4
+ NOT_IMPLEMENTED = 1003,
5
+ NOT_CONFIGURED = 1004,
6
+ NOT_AUTHORIZED = 1005,
7
+ MISSING_PARAMETERS = 1006,
8
+ INVALID_PARAMETERS = 1007,
9
+ INVALID_RESPONSE = 1008,
10
+ INVALID_REQUEST = 1009,
11
+ INVALID_STATE = 1010,
12
+ INVALID_ACTION = 1011,
13
+ INVALID_CREDENTIALS = 1012,
14
+ TRANSPORT_NOT_SUPPORTED = 1013,
15
+ FAILED_TO_DIAL_TARGET = 1014,
16
+ INVALID_CAPABILITY = 1015,
17
+ CONNECTION_LIMIT_REACHED = 1016,
18
+ TIMEOUT = 1017
19
+ }
20
+ //# sourceMappingURL=codes.error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codes.error.d.ts","sourceRoot":"","sources":["../../../../../../o-core/src/error/enums/codes.error.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,OAAO,OAAO;IACd,SAAS,OAAO;IAChB,eAAe,OAAO;IACtB,cAAc,OAAO;IACrB,cAAc,OAAO;IACrB,kBAAkB,OAAO;IACzB,kBAAkB,OAAO;IACzB,gBAAgB,OAAO;IACvB,eAAe,OAAO;IACtB,aAAa,OAAO;IACpB,cAAc,OAAO;IACrB,mBAAmB,OAAO;IAC1B,uBAAuB,OAAO;IAC9B,qBAAqB,OAAO;IAC5B,kBAAkB,OAAO;IACzB,wBAAwB,OAAO;IAC/B,OAAO,OAAO;CACf"}
@@ -0,0 +1,20 @@
1
+ export var oErrorCodes;
2
+ (function (oErrorCodes) {
3
+ oErrorCodes[oErrorCodes["UNKNOWN"] = 1001] = "UNKNOWN";
4
+ oErrorCodes[oErrorCodes["NOT_FOUND"] = 1002] = "NOT_FOUND";
5
+ oErrorCodes[oErrorCodes["NOT_IMPLEMENTED"] = 1003] = "NOT_IMPLEMENTED";
6
+ oErrorCodes[oErrorCodes["NOT_CONFIGURED"] = 1004] = "NOT_CONFIGURED";
7
+ oErrorCodes[oErrorCodes["NOT_AUTHORIZED"] = 1005] = "NOT_AUTHORIZED";
8
+ oErrorCodes[oErrorCodes["MISSING_PARAMETERS"] = 1006] = "MISSING_PARAMETERS";
9
+ oErrorCodes[oErrorCodes["INVALID_PARAMETERS"] = 1007] = "INVALID_PARAMETERS";
10
+ oErrorCodes[oErrorCodes["INVALID_RESPONSE"] = 1008] = "INVALID_RESPONSE";
11
+ oErrorCodes[oErrorCodes["INVALID_REQUEST"] = 1009] = "INVALID_REQUEST";
12
+ oErrorCodes[oErrorCodes["INVALID_STATE"] = 1010] = "INVALID_STATE";
13
+ oErrorCodes[oErrorCodes["INVALID_ACTION"] = 1011] = "INVALID_ACTION";
14
+ oErrorCodes[oErrorCodes["INVALID_CREDENTIALS"] = 1012] = "INVALID_CREDENTIALS";
15
+ oErrorCodes[oErrorCodes["TRANSPORT_NOT_SUPPORTED"] = 1013] = "TRANSPORT_NOT_SUPPORTED";
16
+ oErrorCodes[oErrorCodes["FAILED_TO_DIAL_TARGET"] = 1014] = "FAILED_TO_DIAL_TARGET";
17
+ oErrorCodes[oErrorCodes["INVALID_CAPABILITY"] = 1015] = "INVALID_CAPABILITY";
18
+ oErrorCodes[oErrorCodes["CONNECTION_LIMIT_REACHED"] = 1016] = "CONNECTION_LIMIT_REACHED";
19
+ oErrorCodes[oErrorCodes["TIMEOUT"] = 1017] = "TIMEOUT";
20
+ })(oErrorCodes || (oErrorCodes = {}));
@@ -0,0 +1,3 @@
1
+ export * from './o-error.js';
2
+ export * from './enums/codes.error.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/error/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './o-error.js';
2
+ export * from './enums/codes.error.js';
@@ -0,0 +1,6 @@
1
+ export interface oErrorInterface {
2
+ code: number;
3
+ message: string;
4
+ details?: any;
5
+ }
6
+ //# sourceMappingURL=o-error.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-error.interface.d.ts","sourceRoot":"","sources":["../../../../../../o-core/src/error/interfaces/o-error.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf"}
@@ -0,0 +1,15 @@
1
+ import { oErrorInterface } from './interfaces/o-error.interface.js';
2
+ export declare class oError extends Error implements oErrorInterface {
3
+ code: number;
4
+ details?: any;
5
+ message: string;
6
+ constructor(code: number, message: string, details?: any);
7
+ toJSON(): {
8
+ code: number;
9
+ message: string;
10
+ details: any;
11
+ };
12
+ static fromJSON(json: any): oError;
13
+ toString(): string;
14
+ }
15
+ //# sourceMappingURL=o-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-error.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/error/o-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,qBAAa,MAAO,SAAQ,KAAM,YAAW,eAAe;IAC1D,IAAI,EAAE,MAAM,CAAK;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,MAAM,CAAM;gBAET,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAOxD,MAAM;;;;;IAQN,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG;IAOzB,QAAQ;CAGT"}
@@ -0,0 +1,27 @@
1
+ import { oErrorCodes } from './enums/codes.error.js';
2
+ export class oError extends Error {
3
+ constructor(code, message, details) {
4
+ super(message);
5
+ this.code = 0;
6
+ this.message = '';
7
+ this.code = code;
8
+ this.message = message;
9
+ this.details = details;
10
+ }
11
+ toJSON() {
12
+ return {
13
+ code: this.code,
14
+ message: this.message,
15
+ details: this.details,
16
+ };
17
+ }
18
+ static fromJSON(json) {
19
+ if (json?.code && json?.message) {
20
+ return new oError(json.code, json.message, json.details);
21
+ }
22
+ return new oError(oErrorCodes.UNKNOWN, json, json?.details);
23
+ }
24
+ toString() {
25
+ return `OLANE ERROR CODE: ${this.code}\nMESSAGE: ${this.message}\n-----\nDETAILS: ${this.details}`;
26
+ }
27
+ }