@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 @@
1
+ {"version":3,"file":"circuit-breaker.test.d.ts","sourceRoot":"","sources":["../../../test/circuit-breaker.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,262 @@
1
+ import { expect } from 'chai';
2
+ import { CircuitBreaker, CircuitState } from '../src/utils/circuit-breaker.js';
3
+ describe('CircuitBreaker', () => {
4
+ let breaker;
5
+ beforeEach(() => {
6
+ breaker = new CircuitBreaker('test-service', {
7
+ enabled: true,
8
+ failureThreshold: 3,
9
+ openTimeoutMs: 1000,
10
+ halfOpenMaxAttempts: 1,
11
+ });
12
+ });
13
+ describe('State Transitions', () => {
14
+ it('should start in CLOSED state', () => {
15
+ expect(breaker.getState()).to.equal(CircuitState.CLOSED);
16
+ expect(breaker.shouldAllowRequest()).to.equal(true);
17
+ });
18
+ it('should transition to OPEN after threshold failures', () => {
19
+ expect(breaker.getState()).to.equal(CircuitState.CLOSED);
20
+ // Record failures up to threshold
21
+ breaker.recordFailure();
22
+ breaker.recordFailure();
23
+ expect(breaker.getState()).to.equal(CircuitState.CLOSED);
24
+ // Third failure should open circuit
25
+ breaker.recordFailure();
26
+ expect(breaker.getState()).to.equal(CircuitState.OPEN);
27
+ expect(breaker.shouldAllowRequest()).to.equal(false);
28
+ });
29
+ it('should transition to HALF_OPEN after timeout', async () => {
30
+ // Open the circuit
31
+ breaker.recordFailure();
32
+ breaker.recordFailure();
33
+ breaker.recordFailure();
34
+ expect(breaker.getState()).to.equal(CircuitState.OPEN);
35
+ // Wait for timeout
36
+ await new Promise((resolve) => setTimeout(resolve, 1100));
37
+ // Next request should transition to HALF_OPEN
38
+ expect(breaker.shouldAllowRequest()).to.equal(true);
39
+ expect(breaker.getState()).to.equal(CircuitState.HALF_OPEN);
40
+ });
41
+ it('should transition from HALF_OPEN to CLOSED on success', async () => {
42
+ // Open the circuit
43
+ breaker.recordFailure();
44
+ breaker.recordFailure();
45
+ breaker.recordFailure();
46
+ // Wait and transition to HALF_OPEN
47
+ await new Promise((resolve) => setTimeout(resolve, 1100));
48
+ breaker.shouldAllowRequest();
49
+ // Success should close circuit
50
+ breaker.recordSuccess();
51
+ expect(breaker.getState()).to.equal(CircuitState.CLOSED);
52
+ });
53
+ it('should transition from HALF_OPEN to OPEN on failure', async () => {
54
+ // Open the circuit
55
+ breaker.recordFailure();
56
+ breaker.recordFailure();
57
+ breaker.recordFailure();
58
+ // Wait and transition to HALF_OPEN
59
+ await new Promise((resolve) => setTimeout(resolve, 1100));
60
+ breaker.shouldAllowRequest();
61
+ expect(breaker.getState()).to.equal(CircuitState.HALF_OPEN);
62
+ // Failure should reopen circuit
63
+ breaker.recordFailure();
64
+ expect(breaker.getState()).to.equal(CircuitState.OPEN);
65
+ });
66
+ });
67
+ describe('Request Gating', () => {
68
+ it('should allow all requests in CLOSED state', () => {
69
+ expect(breaker.shouldAllowRequest()).to.equal(true);
70
+ expect(breaker.shouldAllowRequest()).to.equal(true);
71
+ });
72
+ it('should block all requests in OPEN state', () => {
73
+ // Open the circuit
74
+ breaker.recordFailure();
75
+ breaker.recordFailure();
76
+ breaker.recordFailure();
77
+ expect(breaker.shouldAllowRequest()).to.equal(false);
78
+ });
79
+ it('should limit requests in HALF_OPEN state', async () => {
80
+ // Open the circuit
81
+ breaker.recordFailure();
82
+ breaker.recordFailure();
83
+ breaker.recordFailure();
84
+ // Wait and transition to HALF_OPEN
85
+ await new Promise((resolve) => setTimeout(resolve, 1100));
86
+ // First request allowed
87
+ expect(breaker.shouldAllowRequest()).to.equal(true);
88
+ expect(breaker.getState()).to.equal(CircuitState.HALF_OPEN);
89
+ // Subsequent requests blocked until result recorded
90
+ expect(breaker.shouldAllowRequest()).to.equal(false);
91
+ });
92
+ });
93
+ describe('Failure Tracking', () => {
94
+ it('should track consecutive failures', () => {
95
+ breaker.recordFailure();
96
+ expect(breaker.getStats().consecutiveFailures).to.equal(1);
97
+ breaker.recordFailure();
98
+ expect(breaker.getStats().consecutiveFailures).to.equal(2);
99
+ breaker.recordFailure();
100
+ expect(breaker.getStats().consecutiveFailures).to.equal(3);
101
+ });
102
+ it('should reset consecutive failures on success', () => {
103
+ breaker.recordFailure();
104
+ breaker.recordFailure();
105
+ expect(breaker.getStats().consecutiveFailures).to.equal(2);
106
+ breaker.recordSuccess();
107
+ expect(breaker.getStats().consecutiveFailures).to.equal(0);
108
+ expect(breaker.getState()).to.equal(CircuitState.CLOSED);
109
+ });
110
+ it('should track total failures and successes', () => {
111
+ breaker.recordFailure();
112
+ breaker.recordSuccess();
113
+ breaker.recordFailure();
114
+ breaker.recordSuccess();
115
+ const stats = breaker.getStats();
116
+ expect(stats.totalFailures).to.equal(2);
117
+ expect(stats.totalSuccesses).to.equal(2);
118
+ });
119
+ it('should track timestamps', () => {
120
+ const beforeFailure = Date.now();
121
+ breaker.recordFailure();
122
+ const afterFailure = Date.now();
123
+ const stats = breaker.getStats();
124
+ expect(stats.lastFailureTime).greaterThanOrEqual(beforeFailure);
125
+ expect(stats.lastFailureTime).lessThanOrEqual(afterFailure);
126
+ const beforeSuccess = Date.now();
127
+ breaker.recordSuccess();
128
+ const afterSuccess = Date.now();
129
+ const stats2 = breaker.getStats();
130
+ expect(stats2.lastSuccessTime).greaterThanOrEqual(beforeSuccess);
131
+ expect(stats2.lastSuccessTime).lessThanOrEqual(afterSuccess);
132
+ });
133
+ });
134
+ describe('Configuration', () => {
135
+ it('should respect custom failure threshold', () => {
136
+ const customBreaker = new CircuitBreaker('test', {
137
+ enabled: true,
138
+ failureThreshold: 5,
139
+ openTimeoutMs: 1000,
140
+ halfOpenMaxAttempts: 1,
141
+ });
142
+ // Should not open before threshold
143
+ customBreaker.recordFailure();
144
+ customBreaker.recordFailure();
145
+ customBreaker.recordFailure();
146
+ customBreaker.recordFailure();
147
+ expect(customBreaker.getState()).to.equal(CircuitState.CLOSED);
148
+ // Should open at threshold
149
+ customBreaker.recordFailure();
150
+ expect(customBreaker.getState()).to.equal(CircuitState.OPEN);
151
+ });
152
+ it('should respect custom half-open attempts', async () => {
153
+ const customBreaker = new CircuitBreaker('test', {
154
+ enabled: true,
155
+ failureThreshold: 2,
156
+ openTimeoutMs: 100,
157
+ halfOpenMaxAttempts: 3,
158
+ });
159
+ // Open circuit
160
+ customBreaker.recordFailure();
161
+ customBreaker.recordFailure();
162
+ // Wait for timeout
163
+ await new Promise((resolve) => setTimeout(resolve, 150));
164
+ // Should allow 3 attempts in HALF_OPEN
165
+ expect(customBreaker.shouldAllowRequest()).to.equal(true);
166
+ expect(customBreaker.shouldAllowRequest()).to.equal(true);
167
+ expect(customBreaker.shouldAllowRequest()).to.equal(true);
168
+ expect(customBreaker.shouldAllowRequest()).to.equal(false);
169
+ });
170
+ it('should bypass all logic when disabled', () => {
171
+ const disabledBreaker = new CircuitBreaker('test', {
172
+ enabled: false,
173
+ failureThreshold: 1,
174
+ openTimeoutMs: 1000,
175
+ halfOpenMaxAttempts: 1,
176
+ });
177
+ // Record many failures
178
+ disabledBreaker.recordFailure();
179
+ disabledBreaker.recordFailure();
180
+ disabledBreaker.recordFailure();
181
+ // Should still allow requests
182
+ expect(disabledBreaker.shouldAllowRequest()).to.equal(true);
183
+ expect(disabledBreaker.getState()).to.equal(CircuitState.CLOSED);
184
+ });
185
+ });
186
+ describe('Manual Control', () => {
187
+ it('should reset to CLOSED state', () => {
188
+ // Open circuit
189
+ breaker.recordFailure();
190
+ breaker.recordFailure();
191
+ breaker.recordFailure();
192
+ expect(breaker.getState()).to.equal(CircuitState.OPEN);
193
+ // Reset
194
+ breaker.reset();
195
+ expect(breaker.getState()).to.equal(CircuitState.CLOSED);
196
+ expect(breaker.getStats().consecutiveFailures).to.equal(0);
197
+ expect(breaker.shouldAllowRequest()).to.equal(true);
198
+ });
199
+ });
200
+ describe('Statistics', () => {
201
+ it('should provide comprehensive stats', () => {
202
+ breaker.recordFailure();
203
+ breaker.recordFailure();
204
+ breaker.recordSuccess();
205
+ const stats = breaker.getStats();
206
+ expect(stats).to.have.property('state');
207
+ expect(stats).to.have.property('consecutiveFailures');
208
+ expect(stats).to.have.property('totalFailures');
209
+ expect(stats).to.have.property('totalSuccesses');
210
+ expect(stats).to.have.property('lastFailureTime');
211
+ expect(stats).to.have.property('lastSuccessTime');
212
+ expect(stats).to.have.property('openedAt');
213
+ expect(stats.state).to.equal(CircuitState.CLOSED);
214
+ expect(stats.consecutiveFailures).to.equal(0);
215
+ expect(stats.totalFailures).to.equal(2);
216
+ expect(stats.totalSuccesses).to.equal(1);
217
+ });
218
+ it('should track openedAt timestamp', () => {
219
+ const before = Date.now();
220
+ breaker.recordFailure();
221
+ breaker.recordFailure();
222
+ breaker.recordFailure();
223
+ const after = Date.now();
224
+ const stats = breaker.getStats();
225
+ expect(stats.openedAt).greaterThanOrEqual(before);
226
+ expect(stats.openedAt).lessThanOrEqual(after);
227
+ });
228
+ });
229
+ describe('Edge Cases', () => {
230
+ it('should handle rapid state transitions', async () => {
231
+ // Open
232
+ breaker.recordFailure();
233
+ breaker.recordFailure();
234
+ breaker.recordFailure();
235
+ expect(breaker.getState()).to.equal(CircuitState.OPEN);
236
+ // Wait for HALF_OPEN
237
+ await new Promise((resolve) => setTimeout(resolve, 1100));
238
+ breaker.shouldAllowRequest();
239
+ expect(breaker.getState()).to.equal(CircuitState.HALF_OPEN);
240
+ // Close
241
+ breaker.recordSuccess();
242
+ expect(breaker.getState()).to.equal(CircuitState.CLOSED);
243
+ // Open again
244
+ breaker.recordFailure();
245
+ breaker.recordFailure();
246
+ breaker.recordFailure();
247
+ expect(breaker.getState()).to.equal(CircuitState.OPEN);
248
+ });
249
+ it('should not open before timeout expires in OPEN state', async () => {
250
+ // Open circuit
251
+ breaker.recordFailure();
252
+ breaker.recordFailure();
253
+ breaker.recordFailure();
254
+ expect(breaker.getState()).to.equal(CircuitState.OPEN);
255
+ // Wait less than timeout
256
+ await new Promise((resolve) => setTimeout(resolve, 500));
257
+ // Should still be closed
258
+ expect(breaker.shouldAllowRequest()).to.equal(false);
259
+ expect(breaker.getState()).to.equal(CircuitState.OPEN);
260
+ });
261
+ });
262
+ });
@@ -0,0 +1,15 @@
1
+ import { oNodeTool } from '../../src/o-node.tool.js';
2
+ /**
3
+ * Test-only extension of oNodeTool that adds streaming test methods.
4
+ * This class should only be used in test files and is not part of the production code.
5
+ */
6
+ export declare class TestNodeTool extends oNodeTool {
7
+ /**
8
+ * Test method that emits chunks for 10 seconds at 100ms intervals.
9
+ * Used for testing streaming functionality across hierarchical networks.
10
+ *
11
+ * @returns AsyncGenerator that yields 100 chunks over 10 seconds
12
+ */
13
+ _tool_test_stream(): AsyncGenerator<any>;
14
+ }
15
+ //# sourceMappingURL=test-node.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-node.tool.d.ts","sourceRoot":"","sources":["../../../../test/helpers/test-node.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACzC;;;;;OAKG;IACI,iBAAiB,IAAI,cAAc,CAAC,GAAG,CAAC;CAehD"}
@@ -0,0 +1,27 @@
1
+ import { oNodeTool } from '../../src/o-node.tool.js';
2
+ /**
3
+ * Test-only extension of oNodeTool that adds streaming test methods.
4
+ * This class should only be used in test files and is not part of the production code.
5
+ */
6
+ export class TestNodeTool extends oNodeTool {
7
+ /**
8
+ * Test method that emits chunks for 10 seconds at 100ms intervals.
9
+ * Used for testing streaming functionality across hierarchical networks.
10
+ *
11
+ * @returns AsyncGenerator that yields 100 chunks over 10 seconds
12
+ */
13
+ async *_tool_test_stream() {
14
+ const totalDuration = 10000; // 10 seconds
15
+ const intervalMs = 100; // 100ms between chunks
16
+ const totalChunks = totalDuration / intervalMs; // 100 chunks
17
+ for (let i = 0; i < totalChunks; i++) {
18
+ yield {
19
+ chunk: i + 1,
20
+ timestamp: new Date().toISOString(),
21
+ nodeAddress: this.address.toString(),
22
+ message: `Chunk ${i + 1} of ${totalChunks}`,
23
+ };
24
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
25
+ }
26
+ }
27
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=leader-request-wrapper.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leader-request-wrapper.test.d.ts","sourceRoot":"","sources":["../../../test/leader-request-wrapper.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ // import { expect } from 'chai';
3
+ // import { LeaderRequestWrapper } from './leader-request-wrapper.js';
4
+ // import { oAddress } from '@olane/o-core';
5
+ // import { CircuitState } from './circuit-breaker.js';
6
+ // describe('LeaderRequestWrapper with Circuit Breaker', () => {
7
+ // let wrapper: LeaderRequestWrapper;
8
+ // const leaderAddress = new oAddress('o://leader');
9
+ // const registryAddress = new oAddress('o://registry');
10
+ // const regularAddress = new oAddress('o://some-service');
11
+ // beforeEach(() => {
12
+ // wrapper = new LeaderRequestWrapper({
13
+ // enabled: true,
14
+ // maxAttempts: 5,
15
+ // baseDelayMs: 10,
16
+ // maxDelayMs: 100,
17
+ // timeoutMs: 1000,
18
+ // circuitBreaker: {
19
+ // enabled: true,
20
+ // failureThreshold: 3,
21
+ // openTimeoutMs: 500,
22
+ // halfOpenMaxAttempts: 1,
23
+ // },
24
+ // });
25
+ // });
26
+ // describe('Circuit Breaker Integration', () => {
27
+ // it('should execute request successfully and record success', async () => {
28
+ // const mockRequest = vi.fn().mockResolvedValue('success');
29
+ // const result = await wrapper.execute(mockRequest, leaderAddress);
30
+ // expect(result).toBe('success');
31
+ // expect(mockRequest).toHaveBeenCalledTimes(1);
32
+ // const stats = wrapper.getCircuitBreakerStats();
33
+ // expect(stats.leader.totalSuccesses).toBe(1);
34
+ // expect(stats.leader.state).toBe(CircuitState.CLOSED);
35
+ // });
36
+ // it('should record failures in circuit breaker', async () => {
37
+ // const mockRequest = vi.fn().mockRejectedValue(new Error('Service down'));
38
+ // await expect(
39
+ // wrapper.execute(mockRequest, leaderAddress),
40
+ // ).rejects.toThrow();
41
+ // const stats = wrapper.getCircuitBreakerStats();
42
+ // expect(stats.leader.totalFailures).toBeGreaterThan(0);
43
+ // expect(stats.leader.consecutiveFailures).toBeGreaterThan(0);
44
+ // });
45
+ // it('should open circuit after threshold failures', async () => {
46
+ // const mockRequest = vi.fn().mockRejectedValue(new Error('Service down'));
47
+ // // Attempt request multiple times to trigger circuit breaker
48
+ // await expect(
49
+ // wrapper.execute(mockRequest, leaderAddress),
50
+ // ).rejects.toThrow();
51
+ // const stats = wrapper.getCircuitBreakerStats();
52
+ // expect(stats.leader.state).toBe(CircuitState.OPEN);
53
+ // });
54
+ // it('should fast-fail when circuit is open', async () => {
55
+ // const mockRequest = vi.fn().mockRejectedValue(new Error('Service down'));
56
+ // // First request to open circuit
57
+ // await expect(
58
+ // wrapper.execute(mockRequest, leaderAddress),
59
+ // ).rejects.toThrow();
60
+ // // Reset mock to verify it's not called
61
+ // mockRequest.mockClear();
62
+ // // Second request should fast-fail
63
+ // await expect(wrapper.execute(mockRequest, leaderAddress)).rejects.toThrow(
64
+ // /Circuit breaker is OPEN/,
65
+ // );
66
+ // // Request function should not have been called
67
+ // expect(mockRequest).not.toHaveBeenCalled();
68
+ // });
69
+ // it('should stop retrying when circuit opens mid-retry', async () => {
70
+ // let callCount = 0;
71
+ // const mockRequest = vi.fn().mockImplementation(() => {
72
+ // callCount++;
73
+ // throw new Error('Service down');
74
+ // });
75
+ // await expect(
76
+ // wrapper.execute(mockRequest, leaderAddress),
77
+ // ).rejects.toThrow();
78
+ // // Should have stopped retrying after circuit opened
79
+ // expect(callCount).toBeLessThan(5); // Less than maxAttempts
80
+ // expect(callCount).toBeGreaterThanOrEqual(3); // At least threshold attempts
81
+ // });
82
+ // it('should track separate circuits for leader and registry', async () => {
83
+ // const failingRequest = vi
84
+ // .fn()
85
+ // .mockRejectedValue(new Error('Service down'));
86
+ // // Fail leader requests
87
+ // await expect(
88
+ // wrapper.execute(failingRequest, leaderAddress),
89
+ // ).rejects.toThrow();
90
+ // const stats = wrapper.getCircuitBreakerStats();
91
+ // expect(stats.leader.state).toBe(CircuitState.OPEN);
92
+ // expect(stats.registry.state).toBe(CircuitState.CLOSED);
93
+ // });
94
+ // it('should allow recovery after timeout in HALF_OPEN state', async () => {
95
+ // const mockRequest = vi
96
+ // .fn()
97
+ // .mockRejectedValueOnce(new Error('Service down'))
98
+ // .mockResolvedValue('recovered');
99
+ // // Open circuit
100
+ // await expect(
101
+ // wrapper.execute(mockRequest, leaderAddress),
102
+ // ).rejects.toThrow();
103
+ // expect(wrapper.getCircuitBreakerStats().leader.state).toBe(
104
+ // CircuitState.OPEN,
105
+ // );
106
+ // // Wait for circuit to attempt recovery
107
+ // await new Promise((resolve) => setTimeout(resolve, 600));
108
+ // // Should succeed and close circuit
109
+ // const result = await wrapper.execute(mockRequest, leaderAddress);
110
+ // expect(result).toBe('recovered');
111
+ // expect(wrapper.getCircuitBreakerStats().leader.state).toBe(
112
+ // CircuitState.CLOSED,
113
+ // );
114
+ // });
115
+ // });
116
+ // describe('Non-Leader Addresses', () => {
117
+ // it('should not use circuit breaker for non-leader addresses', async () => {
118
+ // const mockRequest = vi.fn().mockRejectedValue(new Error('Service down'));
119
+ // await expect(
120
+ // wrapper.execute(mockRequest, regularAddress),
121
+ // ).rejects.toThrow('Service down');
122
+ // // Should execute directly without retry
123
+ // expect(mockRequest).toHaveBeenCalledTimes(1);
124
+ // // Should not affect circuit breaker stats
125
+ // const stats = wrapper.getCircuitBreakerStats();
126
+ // expect(stats.leader.totalFailures).toBe(0);
127
+ // expect(stats.registry.totalFailures).toBe(0);
128
+ // });
129
+ // it('should execute successful requests directly', async () => {
130
+ // const mockRequest = vi.fn().mockResolvedValue('success');
131
+ // const result = await wrapper.execute(mockRequest, regularAddress);
132
+ // expect(result).toBe('success');
133
+ // expect(mockRequest).toHaveBeenCalledTimes(1);
134
+ // });
135
+ // });
136
+ // describe('Timeout Handling', () => {
137
+ // it('should timeout long-running requests', async () => {
138
+ // const longRequest = vi.fn().mockImplementation(
139
+ // () =>
140
+ // new Promise((resolve) => {
141
+ // setTimeout(() => resolve('too-late'), 2000);
142
+ // }),
143
+ // );
144
+ // await expect(wrapper.execute(longRequest, leaderAddress)).rejects.toThrow(
145
+ // /timeout/,
146
+ // );
147
+ // });
148
+ // it('should record timeout as failure in circuit breaker', async () => {
149
+ // const longRequest = vi.fn().mockImplementation(
150
+ // () =>
151
+ // new Promise((resolve) => {
152
+ // setTimeout(() => resolve('too-late'), 2000);
153
+ // }),
154
+ // );
155
+ // await expect(
156
+ // wrapper.execute(longRequest, leaderAddress),
157
+ // ).rejects.toThrow();
158
+ // const stats = wrapper.getCircuitBreakerStats();
159
+ // expect(stats.leader.totalFailures).toBeGreaterThan(0);
160
+ // });
161
+ // });
162
+ // describe('Configuration', () => {
163
+ // it('should bypass retry when disabled', async () => {
164
+ // const disabledWrapper = new LeaderRequestWrapper({
165
+ // enabled: false,
166
+ // maxAttempts: 5,
167
+ // baseDelayMs: 10,
168
+ // maxDelayMs: 100,
169
+ // timeoutMs: 1000,
170
+ // });
171
+ // const mockRequest = vi.fn().mockRejectedValue(new Error('Fail'));
172
+ // await expect(
173
+ // disabledWrapper.execute(mockRequest, leaderAddress),
174
+ // ).rejects.toThrow('Fail');
175
+ // // Should only call once (no retry)
176
+ // expect(mockRequest).toHaveBeenCalledTimes(1);
177
+ // });
178
+ // it('should allow circuit breaker to be disabled', async () => {
179
+ // const noBreakerWrapper = new LeaderRequestWrapper({
180
+ // enabled: true,
181
+ // maxAttempts: 3,
182
+ // baseDelayMs: 10,
183
+ // maxDelayMs: 100,
184
+ // timeoutMs: 1000,
185
+ // circuitBreaker: {
186
+ // enabled: false,
187
+ // failureThreshold: 3,
188
+ // openTimeoutMs: 500,
189
+ // halfOpenMaxAttempts: 1,
190
+ // },
191
+ // });
192
+ // let callCount = 0;
193
+ // const mockRequest = vi.fn().mockImplementation(() => {
194
+ // callCount++;
195
+ // throw new Error('Fail');
196
+ // });
197
+ // await expect(
198
+ // noBreakerWrapper.execute(mockRequest, leaderAddress),
199
+ // ).rejects.toThrow();
200
+ // // Should retry all attempts even with failures
201
+ // expect(callCount).toBe(3);
202
+ // });
203
+ // });
204
+ // describe('Manual Reset', () => {
205
+ // it('should reset circuit breakers manually', async () => {
206
+ // const mockRequest = vi.fn().mockRejectedValue(new Error('Service down'));
207
+ // // Open circuit
208
+ // await expect(
209
+ // wrapper.execute(mockRequest, leaderAddress),
210
+ // ).rejects.toThrow();
211
+ // expect(wrapper.getCircuitBreakerStats().leader.state).toBe(
212
+ // CircuitState.OPEN,
213
+ // );
214
+ // // Reset
215
+ // wrapper.resetCircuitBreakers();
216
+ // expect(wrapper.getCircuitBreakerStats().leader.state).toBe(
217
+ // CircuitState.CLOSED,
218
+ // );
219
+ // expect(wrapper.getCircuitBreakerStats().registry.state).toBe(
220
+ // CircuitState.CLOSED,
221
+ // );
222
+ // });
223
+ // });
224
+ // describe('Registry Address', () => {
225
+ // it('should use separate circuit breaker for registry', async () => {
226
+ // const mockRequest = vi.fn().mockRejectedValue(new Error('Registry down'));
227
+ // await expect(
228
+ // wrapper.execute(mockRequest, registryAddress),
229
+ // ).rejects.toThrow();
230
+ // const stats = wrapper.getCircuitBreakerStats();
231
+ // expect(stats.registry.totalFailures).toBeGreaterThan(0);
232
+ // expect(stats.registry.state).toBe(CircuitState.OPEN);
233
+ // expect(stats.leader.state).toBe(CircuitState.CLOSED);
234
+ // });
235
+ // });
236
+ // describe('Statistics', () => {
237
+ // it('should provide circuit breaker statistics', () => {
238
+ // const stats = wrapper.getCircuitBreakerStats();
239
+ // expect(stats).toHaveProperty('leader');
240
+ // expect(stats).toHaveProperty('registry');
241
+ // expect(stats.leader).toHaveProperty('state');
242
+ // expect(stats.leader).toHaveProperty('consecutiveFailures');
243
+ // expect(stats.registry).toHaveProperty('state');
244
+ // });
245
+ // });
246
+ // });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=o-node.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-node.spec.d.ts","sourceRoot":"","sources":["../../../test/o-node.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { NodeState } from '@olane/o-core';
2
+ import { expect } from 'chai';
3
+ import { oNode } from '../src/index.js';
4
+ import { oNodeAddress } from '../src/router/o-node.address.js';
5
+ describe('in-process @memory', () => {
6
+ it('should be able to start a single node with no leader', async () => {
7
+ const node = new oNode({
8
+ address: new oNodeAddress('o://test'),
9
+ leader: null,
10
+ parent: null,
11
+ });
12
+ await node.start();
13
+ expect(node.state).to.equal(NodeState.RUNNING);
14
+ const transports = node.transports;
15
+ // expect(transports.length).to.equal(1);
16
+ // expect(transports[0].toString()).to.contain('/memory');
17
+ await node.stop();
18
+ expect(node.state).to.equal(NodeState.STOPPED);
19
+ });
20
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=search-resolver.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-resolver.spec.d.ts","sourceRoot":"","sources":["../../../test/search-resolver.spec.ts"],"names":[],"mappings":""}