@olane/o-node 0.7.12-alpha.42 → 0.7.12-alpha.44

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 (396) hide show
  1. package/dist/src/connection/o-node-connection.manager.d.ts.map +1 -1
  2. package/dist/src/connection/o-node-connection.manager.js +1 -3
  3. package/package.json +6 -6
  4. package/dist/o-core/src/connection/index.d.ts +0 -8
  5. package/dist/o-core/src/connection/index.d.ts.map +0 -1
  6. package/dist/o-core/src/connection/index.js +0 -7
  7. package/dist/o-core/src/connection/interfaces/connection-manager.config.d.ts +0 -15
  8. package/dist/o-core/src/connection/interfaces/connection-manager.config.d.ts.map +0 -1
  9. package/dist/o-core/src/connection/interfaces/connection-manager.config.js +0 -1
  10. package/dist/o-core/src/connection/interfaces/connection-send-params.interface.d.ts +0 -9
  11. package/dist/o-core/src/connection/interfaces/connection-send-params.interface.d.ts.map +0 -1
  12. package/dist/o-core/src/connection/interfaces/connection-send-params.interface.js +0 -1
  13. package/dist/o-core/src/connection/interfaces/connection.config.d.ts +0 -20
  14. package/dist/o-core/src/connection/interfaces/connection.config.d.ts.map +0 -1
  15. package/dist/o-core/src/connection/interfaces/connection.config.js +0 -1
  16. package/dist/o-core/src/connection/interfaces/index.d.ts +0 -5
  17. package/dist/o-core/src/connection/interfaces/index.d.ts.map +0 -1
  18. package/dist/o-core/src/connection/interfaces/index.js +0 -4
  19. package/dist/o-core/src/connection/interfaces/request-state.enum.d.ts +0 -7
  20. package/dist/o-core/src/connection/interfaces/request-state.enum.d.ts.map +0 -1
  21. package/dist/o-core/src/connection/interfaces/request-state.enum.js +0 -7
  22. package/dist/o-core/src/connection/o-connection-manager.d.ts +0 -19
  23. package/dist/o-core/src/connection/o-connection-manager.d.ts.map +0 -1
  24. package/dist/o-core/src/connection/o-connection-manager.js +0 -27
  25. package/dist/o-core/src/connection/o-connection.d.ts +0 -26
  26. package/dist/o-core/src/connection/o-connection.d.ts.map +0 -1
  27. package/dist/o-core/src/connection/o-connection.js +0 -54
  28. package/dist/o-core/src/connection/o-request.d.ts +0 -23
  29. package/dist/o-core/src/connection/o-request.d.ts.map +0 -1
  30. package/dist/o-core/src/connection/o-request.js +0 -42
  31. package/dist/o-core/src/connection/o-response.d.ts +0 -13
  32. package/dist/o-core/src/connection/o-response.d.ts.map +0 -1
  33. package/dist/o-core/src/connection/o-response.js +0 -25
  34. package/dist/o-core/src/core/defaults/config.d.ts +0 -4
  35. package/dist/o-core/src/core/defaults/config.d.ts.map +0 -1
  36. package/dist/o-core/src/core/defaults/config.js +0 -5
  37. package/dist/o-core/src/core/defaults/index.d.ts +0 -2
  38. package/dist/o-core/src/core/defaults/index.d.ts.map +0 -1
  39. package/dist/o-core/src/core/defaults/index.js +0 -1
  40. package/dist/o-core/src/core/graceful-shutdown.d.ts +0 -25
  41. package/dist/o-core/src/core/graceful-shutdown.d.ts.map +0 -1
  42. package/dist/o-core/src/core/graceful-shutdown.js +0 -84
  43. package/dist/o-core/src/core/index.d.ts +0 -9
  44. package/dist/o-core/src/core/index.d.ts.map +0 -1
  45. package/dist/o-core/src/core/index.js +0 -8
  46. package/dist/o-core/src/core/interfaces/index.d.ts +0 -7
  47. package/dist/o-core/src/core/interfaces/index.d.ts.map +0 -1
  48. package/dist/o-core/src/core/interfaces/index.js +0 -6
  49. package/dist/o-core/src/core/interfaces/node-type.enum.d.ts +0 -10
  50. package/dist/o-core/src/core/interfaces/node-type.enum.d.ts.map +0 -1
  51. package/dist/o-core/src/core/interfaces/node-type.enum.js +0 -10
  52. package/dist/o-core/src/core/interfaces/o-core.config.d.ts +0 -23
  53. package/dist/o-core/src/core/interfaces/o-core.config.d.ts.map +0 -1
  54. package/dist/o-core/src/core/interfaces/o-core.config.js +0 -1
  55. package/dist/o-core/src/core/interfaces/o-core.interface.d.ts +0 -18
  56. package/dist/o-core/src/core/interfaces/o-core.interface.d.ts.map +0 -1
  57. package/dist/o-core/src/core/interfaces/o-core.interface.js +0 -1
  58. package/dist/o-core/src/core/interfaces/state.enum.d.ts +0 -8
  59. package/dist/o-core/src/core/interfaces/state.enum.d.ts.map +0 -1
  60. package/dist/o-core/src/core/interfaces/state.enum.js +0 -8
  61. package/dist/o-core/src/core/interfaces/use-options.interface.d.ts +0 -11
  62. package/dist/o-core/src/core/interfaces/use-options.interface.d.ts.map +0 -1
  63. package/dist/o-core/src/core/interfaces/use-options.interface.js +0 -1
  64. package/dist/o-core/src/core/interfaces/use-stream-options.interface.d.ts +0 -4
  65. package/dist/o-core/src/core/interfaces/use-stream-options.interface.d.ts.map +0 -1
  66. package/dist/o-core/src/core/interfaces/use-stream-options.interface.js +0 -1
  67. package/dist/o-core/src/core/lib/events/connection-events.d.ts +0 -31
  68. package/dist/o-core/src/core/lib/events/connection-events.d.ts.map +0 -1
  69. package/dist/o-core/src/core/lib/events/connection-events.js +0 -46
  70. package/dist/o-core/src/core/lib/events/hierarchy-events.d.ts +0 -69
  71. package/dist/o-core/src/core/lib/events/hierarchy-events.d.ts.map +0 -1
  72. package/dist/o-core/src/core/lib/events/hierarchy-events.js +0 -100
  73. package/dist/o-core/src/core/lib/events/index.d.ts +0 -6
  74. package/dist/o-core/src/core/lib/events/index.d.ts.map +0 -1
  75. package/dist/o-core/src/core/lib/events/index.js +0 -5
  76. package/dist/o-core/src/core/lib/events/node-events.d.ts +0 -40
  77. package/dist/o-core/src/core/lib/events/node-events.d.ts.map +0 -1
  78. package/dist/o-core/src/core/lib/events/node-events.js +0 -58
  79. package/dist/o-core/src/core/lib/events/o-notification-event.d.ts +0 -26
  80. package/dist/o-core/src/core/lib/events/o-notification-event.d.ts.map +0 -1
  81. package/dist/o-core/src/core/lib/events/o-notification-event.js +0 -30
  82. package/dist/o-core/src/core/lib/index.d.ts +0 -8
  83. package/dist/o-core/src/core/lib/index.d.ts.map +0 -1
  84. package/dist/o-core/src/core/lib/index.js +0 -7
  85. package/dist/o-core/src/core/lib/interfaces/notification-types.d.ts +0 -49
  86. package/dist/o-core/src/core/lib/interfaces/notification-types.d.ts.map +0 -1
  87. package/dist/o-core/src/core/lib/interfaces/notification-types.js +0 -1
  88. package/dist/o-core/src/core/lib/o-hierarchy.manager.d.ts +0 -24
  89. package/dist/o-core/src/core/lib/o-hierarchy.manager.d.ts.map +0 -1
  90. package/dist/o-core/src/core/lib/o-hierarchy.manager.js +0 -58
  91. package/dist/o-core/src/core/lib/o-metrics.d.ts +0 -5
  92. package/dist/o-core/src/core/lib/o-metrics.d.ts.map +0 -1
  93. package/dist/o-core/src/core/lib/o-metrics.js +0 -6
  94. package/dist/o-core/src/core/lib/o-notification.manager.d.ts +0 -58
  95. package/dist/o-core/src/core/lib/o-notification.manager.d.ts.map +0 -1
  96. package/dist/o-core/src/core/lib/o-notification.manager.js +0 -159
  97. package/dist/o-core/src/core/lib/o-request.manager.d.ts +0 -10
  98. package/dist/o-core/src/core/lib/o-request.manager.d.ts.map +0 -1
  99. package/dist/o-core/src/core/lib/o-request.manager.js +0 -18
  100. package/dist/o-core/src/core/lib/utils/event-filters.d.ts +0 -38
  101. package/dist/o-core/src/core/lib/utils/event-filters.d.ts.map +0 -1
  102. package/dist/o-core/src/core/lib/utils/event-filters.js +0 -159
  103. package/dist/o-core/src/core/o-core.d.ts +0 -240
  104. package/dist/o-core/src/core/o-core.d.ts.map +0 -1
  105. package/dist/o-core/src/core/o-core.js +0 -463
  106. package/dist/o-core/src/core/o-dependency.d.ts +0 -9
  107. package/dist/o-core/src/core/o-dependency.d.ts.map +0 -1
  108. package/dist/o-core/src/core/o-dependency.js +0 -15
  109. package/dist/o-core/src/core/o-object.d.ts +0 -7
  110. package/dist/o-core/src/core/o-object.d.ts.map +0 -1
  111. package/dist/o-core/src/core/o-object.js +0 -10
  112. package/dist/o-core/src/core/o-parameter.d.ts +0 -12
  113. package/dist/o-core/src/core/o-parameter.d.ts.map +0 -1
  114. package/dist/o-core/src/core/o-parameter.js +0 -21
  115. package/dist/o-core/src/error/enums/codes.error.d.ts +0 -20
  116. package/dist/o-core/src/error/enums/codes.error.d.ts.map +0 -1
  117. package/dist/o-core/src/error/enums/codes.error.js +0 -20
  118. package/dist/o-core/src/error/index.d.ts +0 -3
  119. package/dist/o-core/src/error/index.d.ts.map +0 -1
  120. package/dist/o-core/src/error/index.js +0 -2
  121. package/dist/o-core/src/error/interfaces/o-error.interface.d.ts +0 -6
  122. package/dist/o-core/src/error/interfaces/o-error.interface.d.ts.map +0 -1
  123. package/dist/o-core/src/error/interfaces/o-error.interface.js +0 -1
  124. package/dist/o-core/src/error/o-error.d.ts +0 -15
  125. package/dist/o-core/src/error/o-error.d.ts.map +0 -1
  126. package/dist/o-core/src/error/o-error.js +0 -27
  127. package/dist/o-core/src/index.d.ts +0 -8
  128. package/dist/o-core/src/index.d.ts.map +0 -1
  129. package/dist/o-core/src/index.js +0 -7
  130. package/dist/o-core/src/response/index.d.ts +0 -2
  131. package/dist/o-core/src/response/index.d.ts.map +0 -1
  132. package/dist/o-core/src/response/index.js +0 -1
  133. package/dist/o-core/src/response/response-builder.d.ts +0 -140
  134. package/dist/o-core/src/response/response-builder.d.ts.map +0 -1
  135. package/dist/o-core/src/response/response-builder.js +0 -190
  136. package/dist/o-core/src/router/enums/restricted-addresses.enum.d.ts +0 -8
  137. package/dist/o-core/src/router/enums/restricted-addresses.enum.d.ts.map +0 -1
  138. package/dist/o-core/src/router/enums/restricted-addresses.enum.js +0 -13
  139. package/dist/o-core/src/router/index.d.ts +0 -11
  140. package/dist/o-core/src/router/index.d.ts.map +0 -1
  141. package/dist/o-core/src/router/index.js +0 -10
  142. package/dist/o-core/src/router/interfaces/resolve.request.d.ts +0 -10
  143. package/dist/o-core/src/router/interfaces/resolve.request.d.ts.map +0 -1
  144. package/dist/o-core/src/router/interfaces/resolve.request.js +0 -1
  145. package/dist/o-core/src/router/interfaces/route.response.d.ts +0 -8
  146. package/dist/o-core/src/router/interfaces/route.response.d.ts.map +0 -1
  147. package/dist/o-core/src/router/interfaces/route.response.js +0 -1
  148. package/dist/o-core/src/router/o-address-resolver.d.ts +0 -14
  149. package/dist/o-core/src/router/o-address-resolver.d.ts.map +0 -1
  150. package/dist/o-core/src/router/o-address-resolver.js +0 -19
  151. package/dist/o-core/src/router/o-address.d.ts +0 -33
  152. package/dist/o-core/src/router/o-address.d.ts.map +0 -1
  153. package/dist/o-core/src/router/o-address.js +0 -114
  154. package/dist/o-core/src/router/o-request-preparation.d.ts +0 -37
  155. package/dist/o-core/src/router/o-request-preparation.d.ts.map +0 -1
  156. package/dist/o-core/src/router/o-request-preparation.js +0 -75
  157. package/dist/o-core/src/router/o-request.router.d.ts +0 -18
  158. package/dist/o-core/src/router/o-request.router.d.ts.map +0 -1
  159. package/dist/o-core/src/router/o-request.router.js +0 -12
  160. package/dist/o-core/src/router/o-resolver-chain.d.ts +0 -32
  161. package/dist/o-core/src/router/o-resolver-chain.d.ts.map +0 -1
  162. package/dist/o-core/src/router/o-resolver-chain.js +0 -62
  163. package/dist/o-core/src/router/o-router.d.ts +0 -19
  164. package/dist/o-core/src/router/o-router.d.ts.map +0 -1
  165. package/dist/o-core/src/router/o-router.js +0 -14
  166. package/dist/o-core/src/router/o-routing-policy.d.ts +0 -36
  167. package/dist/o-core/src/router/o-routing-policy.d.ts.map +0 -1
  168. package/dist/o-core/src/router/o-routing-policy.js +0 -19
  169. package/dist/o-core/src/streaming/index.d.ts +0 -11
  170. package/dist/o-core/src/streaming/index.d.ts.map +0 -1
  171. package/dist/o-core/src/streaming/index.js +0 -14
  172. package/dist/o-core/src/streaming/protocol-builder.d.ts +0 -62
  173. package/dist/o-core/src/streaming/protocol-builder.d.ts.map +0 -1
  174. package/dist/o-core/src/streaming/protocol-builder.js +0 -93
  175. package/dist/o-core/src/streaming/stream-config.d.ts +0 -36
  176. package/dist/o-core/src/streaming/stream-config.d.ts.map +0 -1
  177. package/dist/o-core/src/streaming/stream-config.js +0 -19
  178. package/dist/o-core/src/streaming/stream-handler.base.d.ts +0 -85
  179. package/dist/o-core/src/streaming/stream-handler.base.d.ts.map +0 -1
  180. package/dist/o-core/src/streaming/stream-handler.base.js +0 -112
  181. package/dist/o-core/src/streaming/stream-transport.interface.d.ts +0 -61
  182. package/dist/o-core/src/streaming/stream-transport.interface.d.ts.map +0 -1
  183. package/dist/o-core/src/streaming/stream-transport.interface.js +0 -10
  184. package/dist/o-core/src/transports/custom.transport.d.ts +0 -6
  185. package/dist/o-core/src/transports/custom.transport.d.ts.map +0 -1
  186. package/dist/o-core/src/transports/custom.transport.js +0 -10
  187. package/dist/o-core/src/transports/index.d.ts +0 -4
  188. package/dist/o-core/src/transports/index.d.ts.map +0 -1
  189. package/dist/o-core/src/transports/index.js +0 -3
  190. package/dist/o-core/src/transports/interfaces/transport-type.enum.d.ts +0 -5
  191. package/dist/o-core/src/transports/interfaces/transport-type.enum.d.ts.map +0 -1
  192. package/dist/o-core/src/transports/interfaces/transport-type.enum.js +0 -5
  193. package/dist/o-core/src/transports/o-transport.d.ts +0 -10
  194. package/dist/o-core/src/transports/o-transport.d.ts.map +0 -1
  195. package/dist/o-core/src/transports/o-transport.js +0 -16
  196. package/dist/o-core/src/utils/core.utils.d.ts +0 -34
  197. package/dist/o-core/src/utils/core.utils.d.ts.map +0 -1
  198. package/dist/o-core/src/utils/core.utils.js +0 -123
  199. package/dist/o-core/src/utils/index.d.ts +0 -6
  200. package/dist/o-core/src/utils/index.d.ts.map +0 -1
  201. package/dist/o-core/src/utils/index.js +0 -5
  202. package/dist/o-core/src/utils/logger.d.ts +0 -14
  203. package/dist/o-core/src/utils/logger.d.ts.map +0 -1
  204. package/dist/o-core/src/utils/logger.js +0 -31
  205. package/dist/o-core/src/utils/object.utils.d.ts +0 -5
  206. package/dist/o-core/src/utils/object.utils.d.ts.map +0 -1
  207. package/dist/o-core/src/utils/object.utils.js +0 -23
  208. package/dist/o-core/src/utils/regex.utils.d.ts +0 -4
  209. package/dist/o-core/src/utils/regex.utils.d.ts.map +0 -1
  210. package/dist/o-core/src/utils/regex.utils.js +0 -13
  211. package/dist/o-core/src/utils/remote.utils.d.ts +0 -4
  212. package/dist/o-core/src/utils/remote.utils.d.ts.map +0 -1
  213. package/dist/o-core/src/utils/remote.utils.js +0 -5
  214. package/dist/o-core/src/utils/streaming.utils.d.ts +0 -22
  215. package/dist/o-core/src/utils/streaming.utils.d.ts.map +0 -1
  216. package/dist/o-core/src/utils/streaming.utils.js +0 -45
  217. package/dist/o-node/src/connection/index.d.ts +0 -5
  218. package/dist/o-node/src/connection/index.d.ts.map +0 -1
  219. package/dist/o-node/src/connection/index.js +0 -4
  220. package/dist/o-node/src/connection/interfaces/o-node-connection-manager.config.d.ts +0 -6
  221. package/dist/o-node/src/connection/interfaces/o-node-connection-manager.config.d.ts.map +0 -1
  222. package/dist/o-node/src/connection/interfaces/o-node-connection-manager.config.js +0 -1
  223. package/dist/o-node/src/connection/interfaces/o-node-connection.config.d.ts +0 -6
  224. package/dist/o-node/src/connection/interfaces/o-node-connection.config.d.ts.map +0 -1
  225. package/dist/o-node/src/connection/interfaces/o-node-connection.config.js +0 -1
  226. package/dist/o-node/src/connection/o-node-connection.d.ts +0 -13
  227. package/dist/o-node/src/connection/o-node-connection.d.ts.map +0 -1
  228. package/dist/o-node/src/connection/o-node-connection.js +0 -93
  229. package/dist/o-node/src/connection/o-node-connection.manager.d.ts +0 -19
  230. package/dist/o-node/src/connection/o-node-connection.manager.d.ts.map +0 -1
  231. package/dist/o-node/src/connection/o-node-connection.manager.js +0 -65
  232. package/dist/o-node/src/connection/o-stream.request.d.ts +0 -11
  233. package/dist/o-node/src/connection/o-stream.request.d.ts.map +0 -1
  234. package/dist/o-node/src/connection/o-stream.request.js +0 -7
  235. package/dist/o-node/src/index.d.ts +0 -12
  236. package/dist/o-node/src/index.d.ts.map +0 -1
  237. package/dist/o-node/src/index.js +0 -11
  238. package/dist/o-node/src/interfaces/i-heartbeatable-node.d.ts +0 -49
  239. package/dist/o-node/src/interfaces/i-heartbeatable-node.d.ts.map +0 -1
  240. package/dist/o-node/src/interfaces/i-heartbeatable-node.js +0 -1
  241. package/dist/o-node/src/interfaces/i-reconnectable-node.d.ts +0 -46
  242. package/dist/o-node/src/interfaces/i-reconnectable-node.d.ts.map +0 -1
  243. package/dist/o-node/src/interfaces/i-reconnectable-node.js +0 -1
  244. package/dist/o-node/src/interfaces/o-node.config.d.ts +0 -49
  245. package/dist/o-node/src/interfaces/o-node.config.d.ts.map +0 -1
  246. package/dist/o-node/src/interfaces/o-node.config.js +0 -1
  247. package/dist/o-node/src/interfaces/o-node.tool-config.d.ts +0 -4
  248. package/dist/o-node/src/interfaces/o-node.tool-config.d.ts.map +0 -1
  249. package/dist/o-node/src/interfaces/o-node.tool-config.js +0 -1
  250. package/dist/o-node/src/lib/network-activity.lib.d.ts +0 -1
  251. package/dist/o-node/src/lib/network-activity.lib.d.ts.map +0 -1
  252. package/dist/o-node/src/lib/network-activity.lib.js +0 -34
  253. package/dist/o-node/src/managers/o-connection-heartbeat.manager.d.ts +0 -63
  254. package/dist/o-node/src/managers/o-connection-heartbeat.manager.d.ts.map +0 -1
  255. package/dist/o-node/src/managers/o-connection-heartbeat.manager.js +0 -227
  256. package/dist/o-node/src/managers/o-reconnection.manager.d.ts +0 -51
  257. package/dist/o-node/src/managers/o-reconnection.manager.d.ts.map +0 -1
  258. package/dist/o-node/src/managers/o-reconnection.manager.js +0 -266
  259. package/dist/o-node/src/nodes/client.node.d.ts +0 -7
  260. package/dist/o-node/src/nodes/client.node.d.ts.map +0 -1
  261. package/dist/o-node/src/nodes/client.node.js +0 -16
  262. package/dist/o-node/src/nodes/index.d.ts +0 -4
  263. package/dist/o-node/src/nodes/index.d.ts.map +0 -1
  264. package/dist/o-node/src/nodes/index.js +0 -3
  265. package/dist/o-node/src/nodes/server.node.d.ts +0 -7
  266. package/dist/o-node/src/nodes/server.node.d.ts.map +0 -1
  267. package/dist/o-node/src/nodes/server.node.js +0 -20
  268. package/dist/o-node/src/nodes/websocket.node.d.ts +0 -7
  269. package/dist/o-node/src/nodes/websocket.node.d.ts.map +0 -1
  270. package/dist/o-node/src/nodes/websocket.node.js +0 -18
  271. package/dist/o-node/src/o-node.d.ts +0 -72
  272. package/dist/o-node/src/o-node.d.ts.map +0 -1
  273. package/dist/o-node/src/o-node.hierarchy-manager.d.ts +0 -15
  274. package/dist/o-node/src/o-node.hierarchy-manager.d.ts.map +0 -1
  275. package/dist/o-node/src/o-node.hierarchy-manager.js +0 -15
  276. package/dist/o-node/src/o-node.js +0 -493
  277. package/dist/o-node/src/o-node.notification-manager.d.ts +0 -52
  278. package/dist/o-node/src/o-node.notification-manager.d.ts.map +0 -1
  279. package/dist/o-node/src/o-node.notification-manager.js +0 -188
  280. package/dist/o-node/src/o-node.tool.d.ts +0 -18
  281. package/dist/o-node/src/o-node.tool.d.ts.map +0 -1
  282. package/dist/o-node/src/o-node.tool.js +0 -83
  283. package/dist/o-node/src/router/index.d.ts +0 -6
  284. package/dist/o-node/src/router/index.d.ts.map +0 -1
  285. package/dist/o-node/src/router/index.js +0 -5
  286. package/dist/o-node/src/router/interfaces/o-node-router.config.d.ts +0 -3
  287. package/dist/o-node/src/router/interfaces/o-node-router.config.d.ts.map +0 -1
  288. package/dist/o-node/src/router/interfaces/o-node-router.config.js +0 -1
  289. package/dist/o-node/src/router/interfaces/o-node-router.response.d.ts +0 -8
  290. package/dist/o-node/src/router/interfaces/o-node-router.response.d.ts.map +0 -1
  291. package/dist/o-node/src/router/interfaces/o-node-router.response.js +0 -1
  292. package/dist/o-node/src/router/o-node.address.d.ts +0 -18
  293. package/dist/o-node/src/router/o-node.address.d.ts.map +0 -1
  294. package/dist/o-node/src/router/o-node.address.js +0 -29
  295. package/dist/o-node/src/router/o-node.router.d.ts +0 -46
  296. package/dist/o-node/src/router/o-node.router.d.ts.map +0 -1
  297. package/dist/o-node/src/router/o-node.router.js +0 -181
  298. package/dist/o-node/src/router/o-node.routing-policy.d.ts +0 -30
  299. package/dist/o-node/src/router/o-node.routing-policy.d.ts.map +0 -1
  300. package/dist/o-node/src/router/o-node.routing-policy.js +0 -57
  301. package/dist/o-node/src/router/o-node.transport.d.ts +0 -11
  302. package/dist/o-node/src/router/o-node.transport.d.ts.map +0 -1
  303. package/dist/o-node/src/router/o-node.transport.js +0 -18
  304. package/dist/o-node/src/router/resolvers/index.d.ts +0 -4
  305. package/dist/o-node/src/router/resolvers/index.d.ts.map +0 -1
  306. package/dist/o-node/src/router/resolvers/index.js +0 -3
  307. package/dist/o-node/src/router/resolvers/o-node.leader-resolver-fallback.d.ts +0 -8
  308. package/dist/o-node/src/router/resolvers/o-node.leader-resolver-fallback.d.ts.map +0 -1
  309. package/dist/o-node/src/router/resolvers/o-node.leader-resolver-fallback.js +0 -35
  310. package/dist/o-node/src/router/resolvers/o-node.resolver.d.ts +0 -11
  311. package/dist/o-node/src/router/resolvers/o-node.resolver.d.ts.map +0 -1
  312. package/dist/o-node/src/router/resolvers/o-node.resolver.js +0 -45
  313. package/dist/o-node/src/router/resolvers/o-node.search-resolver.d.ts +0 -170
  314. package/dist/o-node/src/router/resolvers/o-node.search-resolver.d.ts.map +0 -1
  315. package/dist/o-node/src/router/resolvers/o-node.search-resolver.js +0 -285
  316. package/dist/o-node/src/router/route.request.d.ts +0 -14
  317. package/dist/o-node/src/router/route.request.d.ts.map +0 -1
  318. package/dist/o-node/src/router/route.request.js +0 -1
  319. package/dist/o-node/src/streaming/index.d.ts +0 -10
  320. package/dist/o-node/src/streaming/index.d.ts.map +0 -1
  321. package/dist/o-node/src/streaming/index.js +0 -12
  322. package/dist/o-node/src/streaming/libp2p-stream-transport.d.ts +0 -50
  323. package/dist/o-node/src/streaming/libp2p-stream-transport.d.ts.map +0 -1
  324. package/dist/o-node/src/streaming/libp2p-stream-transport.js +0 -137
  325. package/dist/o-node/src/streaming/node-stream-handler.d.ts +0 -65
  326. package/dist/o-node/src/streaming/node-stream-handler.d.ts.map +0 -1
  327. package/dist/o-node/src/streaming/node-stream-handler.js +0 -101
  328. package/dist/o-node/src/ui/index.d.ts +0 -3
  329. package/dist/o-node/src/ui/index.d.ts.map +0 -1
  330. package/dist/o-node/src/ui/index.js +0 -2
  331. package/dist/o-node/src/ui/types.d.ts +0 -110
  332. package/dist/o-node/src/ui/types.d.ts.map +0 -1
  333. package/dist/o-node/src/ui/types.js +0 -17
  334. package/dist/o-node/src/ui/ui-graph.manager.d.ts +0 -70
  335. package/dist/o-node/src/ui/ui-graph.manager.d.ts.map +0 -1
  336. package/dist/o-node/src/ui/ui-graph.manager.js +0 -274
  337. package/dist/o-node/src/utils/circuit-breaker.d.ts +0 -107
  338. package/dist/o-node/src/utils/circuit-breaker.d.ts.map +0 -1
  339. package/dist/o-node/src/utils/circuit-breaker.js +0 -175
  340. package/dist/o-node/src/utils/index.d.ts +0 -3
  341. package/dist/o-node/src/utils/index.d.ts.map +0 -1
  342. package/dist/o-node/src/utils/index.js +0 -2
  343. package/dist/o-node/src/utils/leader-request-wrapper.d.ts +0 -66
  344. package/dist/o-node/src/utils/leader-request-wrapper.d.ts.map +0 -1
  345. package/dist/o-node/src/utils/leader-request-wrapper.js +0 -160
  346. package/dist/o-node/src/utils/network.utils.d.ts +0 -20
  347. package/dist/o-node/src/utils/network.utils.d.ts.map +0 -1
  348. package/dist/o-node/src/utils/network.utils.js +0 -74
  349. package/dist/o-node/src/utils/stream.utils.d.ts +0 -6
  350. package/dist/o-node/src/utils/stream.utils.d.ts.map +0 -1
  351. package/dist/o-node/src/utils/stream.utils.js +0 -31
  352. package/dist/o-node/test/circuit-breaker.test.d.ts +0 -2
  353. package/dist/o-node/test/circuit-breaker.test.d.ts.map +0 -1
  354. package/dist/o-node/test/circuit-breaker.test.js +0 -262
  355. package/dist/o-node/test/helpers/test-node.tool.d.ts +0 -15
  356. package/dist/o-node/test/helpers/test-node.tool.d.ts.map +0 -1
  357. package/dist/o-node/test/helpers/test-node.tool.js +0 -27
  358. package/dist/o-node/test/leader-request-wrapper.test.d.ts +0 -1
  359. package/dist/o-node/test/leader-request-wrapper.test.d.ts.map +0 -1
  360. package/dist/o-node/test/leader-request-wrapper.test.js +0 -246
  361. package/dist/o-node/test/o-node.spec.d.ts +0 -2
  362. package/dist/o-node/test/o-node.spec.d.ts.map +0 -1
  363. package/dist/o-node/test/o-node.spec.js +0 -20
  364. package/dist/o-node/test/search-resolver.spec.d.ts +0 -2
  365. package/dist/o-node/test/search-resolver.spec.d.ts.map +0 -1
  366. package/dist/o-node/test/search-resolver.spec.js +0 -693
  367. package/dist/src/streaming/index.d.ts +0 -10
  368. package/dist/src/streaming/index.d.ts.map +0 -1
  369. package/dist/src/streaming/index.js +0 -12
  370. package/dist/src/streaming/libp2p-stream-transport.d.ts +0 -50
  371. package/dist/src/streaming/libp2p-stream-transport.d.ts.map +0 -1
  372. package/dist/src/streaming/libp2p-stream-transport.js +0 -137
  373. package/dist/src/streaming/node-stream-handler.d.ts +0 -65
  374. package/dist/src/streaming/node-stream-handler.d.ts.map +0 -1
  375. package/dist/src/streaming/node-stream-handler.js +0 -101
  376. package/dist/src/streaming/o-node-streaming-client.d.ts +0 -33
  377. package/dist/src/streaming/o-node-streaming-client.d.ts.map +0 -1
  378. package/dist/src/streaming/o-node-streaming-client.js +0 -130
  379. package/dist/src/utils/circuit-breaker.d.ts +0 -107
  380. package/dist/src/utils/circuit-breaker.d.ts.map +0 -1
  381. package/dist/src/utils/circuit-breaker.js +0 -175
  382. package/dist/src/utils/circuit-breaker.test.d.ts +0 -2
  383. package/dist/src/utils/circuit-breaker.test.d.ts.map +0 -1
  384. package/dist/src/utils/circuit-breaker.test.js +0 -262
  385. package/dist/src/utils/leader-request-wrapper.d.ts +0 -66
  386. package/dist/src/utils/leader-request-wrapper.d.ts.map +0 -1
  387. package/dist/src/utils/leader-request-wrapper.js +0 -160
  388. package/dist/src/utils/leader-request-wrapper.test.d.ts +0 -1
  389. package/dist/src/utils/leader-request-wrapper.test.d.ts.map +0 -1
  390. package/dist/src/utils/leader-request-wrapper.test.js +0 -246
  391. package/dist/test/circuit-breaker.test.d.ts +0 -2
  392. package/dist/test/circuit-breaker.test.d.ts.map +0 -1
  393. package/dist/test/circuit-breaker.test.js +0 -262
  394. package/dist/test/leader-request-wrapper.test.d.ts +0 -1
  395. package/dist/test/leader-request-wrapper.test.d.ts.map +0 -1
  396. package/dist/test/leader-request-wrapper.test.js +0 -246
@@ -1,693 +0,0 @@
1
- import { expect } from 'chai';
2
- import { oSearchResolver } from '../src/router/resolvers/o-node.search-resolver.js';
3
- import { oAddress, RestrictedAddresses, NodeState, TransportType, } from '@olane/o-core';
4
- import { oNodeTransport } from '../src/router/o-node.transport.js';
5
- import { oNodeAddress } from '../src/router/o-node.address.js';
6
- import { oProtocolMethods } from '@olane/o-protocol';
7
- describe('oSearchResolver', () => {
8
- let resolver;
9
- let mockNode;
10
- const testAddress = new oNodeAddress('o://test-node');
11
- // Helper to create a proper oRouterRequest
12
- const createRouterRequest = () => ({
13
- method: oProtocolMethods.ROUTE,
14
- params: {
15
- _connectionId: 'test-connection',
16
- _requestMethod: 'test',
17
- address: 'o://test',
18
- payload: {},
19
- },
20
- jsonrpc: '2.0',
21
- id: '1',
22
- state: {},
23
- connectionId: 'test-connection',
24
- toJSON: () => ({}),
25
- setState: () => { },
26
- logger: {},
27
- });
28
- // Helper to create a proper oResponse
29
- const createResponse = (result) => ({
30
- jsonrpc: '2.0',
31
- id: '1',
32
- result,
33
- });
34
- beforeEach(() => {
35
- resolver = new oSearchResolver(testAddress);
36
- // Create mock node with necessary properties
37
- mockNode = {
38
- address: testAddress,
39
- state: NodeState.RUNNING,
40
- leader: new oNodeAddress(RestrictedAddresses.LEADER, [
41
- new oNodeTransport('/ip4/127.0.0.1/tcp/4001'),
42
- ]),
43
- hierarchyManager: {
44
- getChild: (address) => null,
45
- },
46
- use: async (address, request) => {
47
- // Mock registry search response
48
- return createResponse({
49
- data: [],
50
- });
51
- },
52
- };
53
- });
54
- describe('Basic resolver configuration', () => {
55
- it('should have custom transport for /search', () => {
56
- const transports = resolver.customTransports;
57
- expect(transports).to.have.lengthOf(1);
58
- expect(transports[0].value).to.equal('/search');
59
- });
60
- it('should use registry as default search target', () => {
61
- const registryAddress = resolver.getRegistryAddress();
62
- expect(registryAddress.value).to.equal(RestrictedAddresses.REGISTRY);
63
- });
64
- it('should use "search" as default method', () => {
65
- const method = resolver.getSearchMethod();
66
- expect(method).to.equal('search');
67
- });
68
- });
69
- describe('resolve() - Basic flow', () => {
70
- it('should skip search if address already has transports', async () => {
71
- const addressWithTransports = new oNodeAddress('o://test', [
72
- new oNodeTransport('/ip4/127.0.0.1/tcp/5001'),
73
- ]);
74
- const result = await resolver.resolve({
75
- address: addressWithTransports,
76
- targetAddress: addressWithTransports,
77
- node: mockNode,
78
- request: createRouterRequest(),
79
- });
80
- expect(result.nextHopAddress.value).to.equal('o://test');
81
- expect(result.nextHopAddress.transports).to.have.lengthOf(1);
82
- });
83
- it('should return original address when no search results found', async () => {
84
- const address = new oNodeAddress('o://unknown-service');
85
- mockNode.use = async () => createResponse({ data: [] });
86
- const result = await resolver.resolve({
87
- address,
88
- targetAddress: address,
89
- node: mockNode,
90
- request: createRouterRequest(),
91
- });
92
- expect(result.nextHopAddress.value).to.equal('o://unknown-service');
93
- });
94
- it('should resolve address using registry search results', async () => {
95
- const address = new oNodeAddress('o://embeddings-text');
96
- mockNode.use = async () => createResponse({
97
- data: [
98
- {
99
- address: 'o://leader/services/embeddings',
100
- staticAddress: 'o://embeddings-text',
101
- transports: [
102
- {
103
- value: '/ip4/127.0.0.1/tcp/6001',
104
- type: TransportType.LIBP2P,
105
- },
106
- ],
107
- },
108
- ],
109
- });
110
- const result = await resolver.resolve({
111
- address,
112
- targetAddress: address,
113
- node: mockNode,
114
- request: createRouterRequest(),
115
- });
116
- expect(result.targetAddress.value).to.equal('o://leader/services/embeddings');
117
- expect(result.targetAddress.transports).to.have.lengthOf(1);
118
- });
119
- it('should preserve extra path parameters in resolved address', async () => {
120
- const address = new oNodeAddress('o://embeddings-text/method/params');
121
- mockNode.use = async () => createResponse({
122
- data: [
123
- {
124
- address: 'o://leader/services/embeddings',
125
- staticAddress: 'o://embeddings-text',
126
- transports: [
127
- {
128
- value: '/ip4/127.0.0.1/tcp/6001',
129
- type: TransportType.LIBP2P,
130
- },
131
- ],
132
- },
133
- ],
134
- });
135
- const result = await resolver.resolve({
136
- address,
137
- targetAddress: address,
138
- node: mockNode,
139
- request: createRouterRequest(),
140
- });
141
- expect(result.targetAddress.value).to.equal('o://leader/services/embeddings/method/params');
142
- });
143
- it('should handle hierarchical address resolution', async () => {
144
- const address = new oNodeAddress('o://leader/services/embeddings-text');
145
- mockNode.use = async () => createResponse({
146
- data: [
147
- {
148
- address: 'o://leader/services/embeddings-text',
149
- transports: [
150
- {
151
- value: '/ip4/127.0.0.1/tcp/6001',
152
- type: TransportType.LIBP2P,
153
- },
154
- ],
155
- },
156
- ],
157
- });
158
- const result = await resolver.resolve({
159
- address,
160
- targetAddress: address,
161
- node: mockNode,
162
- request: createRouterRequest(),
163
- });
164
- expect(result.targetAddress.transports).to.have.lengthOf(1);
165
- });
166
- });
167
- describe('buildSearchParams()', () => {
168
- it('should include both staticAddress and address', () => {
169
- const address = new oNodeAddress('o://leader/services/embeddings-text');
170
- const params = resolver.buildSearchParams(address);
171
- expect(params.staticAddress).to.equal('o://leader');
172
- expect(params.address).to.equal('o://leader/services/embeddings-text');
173
- });
174
- it('should use root address for staticAddress', () => {
175
- const address = new oNodeAddress('o://leader/deep/nested/path');
176
- const params = resolver.buildSearchParams(address);
177
- expect(params.staticAddress).to.equal('o://leader');
178
- expect(params.address).to.equal('o://leader/deep/nested/path');
179
- });
180
- it('should handle static addresses', () => {
181
- const address = new oNodeAddress('o://embeddings-text');
182
- const params = resolver.buildSearchParams(address);
183
- expect(params.staticAddress).to.equal('o://embeddings-text');
184
- expect(params.address).to.equal('o://embeddings-text');
185
- });
186
- });
187
- describe('filterSearchResults()', () => {
188
- it('should filter out registry address to prevent loops', () => {
189
- const results = [
190
- {
191
- staticAddress: RestrictedAddresses.REGISTRY,
192
- address: 'o://registry',
193
- },
194
- { staticAddress: 'o://service', address: 'o://service' },
195
- ];
196
- const filtered = resolver.filterSearchResults(results, mockNode);
197
- expect(filtered).to.have.lengthOf(1);
198
- expect(filtered[0].staticAddress).to.equal('o://service');
199
- });
200
- it('should filter out self address to prevent loops', () => {
201
- const results = [
202
- { address: 'o://test-node', staticAddress: 'o://test' },
203
- { address: 'o://other-node', staticAddress: 'o://other' },
204
- ];
205
- const filtered = resolver.filterSearchResults(results, mockNode);
206
- expect(filtered).to.have.lengthOf(1);
207
- expect(filtered[0].address).to.equal('o://other-node');
208
- });
209
- it('should allow all valid results', () => {
210
- const results = [
211
- { address: 'o://service-1', staticAddress: 'o://s1' },
212
- { address: 'o://service-2', staticAddress: 'o://s2' },
213
- { address: 'o://service-3', staticAddress: 'o://s3' },
214
- ];
215
- const filtered = resolver.filterSearchResults(results, mockNode);
216
- expect(filtered).to.have.lengthOf(3);
217
- });
218
- it('should handle empty results array', () => {
219
- const filtered = resolver.filterSearchResults([], mockNode);
220
- expect(filtered).to.be.an('array').that.is.empty;
221
- });
222
- });
223
- describe('selectResult()', () => {
224
- it('should select first result from multiple options', () => {
225
- const results = [
226
- { address: 'o://service-1', peerId: 'peer-1' },
227
- { address: 'o://service-2', peerId: 'peer-2' },
228
- { address: 'o://service-3', peerId: 'peer-3' },
229
- ];
230
- const selected = resolver.selectResult(results);
231
- expect(selected).to.equal(results[0]);
232
- expect(selected.peerId).to.equal('peer-1');
233
- });
234
- it('should return null for empty results', () => {
235
- const selected = resolver.selectResult([]);
236
- expect(selected).to.be.null;
237
- });
238
- it('should return single result', () => {
239
- const results = [{ address: 'o://only-service', peerId: 'only-peer' }];
240
- const selected = resolver.selectResult(results);
241
- expect(selected).to.equal(results[0]);
242
- });
243
- });
244
- describe('mapTransports()', () => {
245
- it('should map transport objects to oNodeTransport instances', () => {
246
- const result = {
247
- transports: [
248
- { value: '/ip4/127.0.0.1/tcp/4001', type: TransportType.LIBP2P },
249
- { value: '/ip4/192.168.1.1/tcp/4002', type: TransportType.LIBP2P },
250
- ],
251
- };
252
- const transports = resolver.mapTransports(result);
253
- expect(transports).to.have.lengthOf(2);
254
- expect(transports[0]).to.be.instanceOf(oNodeTransport);
255
- expect(transports[0].value).to.equal('/ip4/127.0.0.1/tcp/4001');
256
- expect(transports[1].value).to.equal('/ip4/192.168.1.1/tcp/4002');
257
- });
258
- it('should handle empty transports array', () => {
259
- const result = { transports: [] };
260
- const transports = resolver.mapTransports(result);
261
- expect(transports).to.be.an('array').that.is.empty;
262
- });
263
- it('should handle single transport', () => {
264
- const result = {
265
- transports: [{ value: '/memory', type: TransportType.CUSTOM }],
266
- };
267
- const transports = resolver.mapTransports(result);
268
- expect(transports).to.have.lengthOf(1);
269
- expect(transports[0].value).to.equal('/memory');
270
- });
271
- });
272
- describe('resolveNextHopTransports()', () => {
273
- it('should use leader transports when next hop is leader', () => {
274
- const nextHop = new oNodeAddress(RestrictedAddresses.LEADER);
275
- const targetTransports = [
276
- new oNodeTransport('/ip4/192.168.1.1/tcp/9999'),
277
- ];
278
- const resolved = resolver.resolveNextHopTransports(nextHop, targetTransports, mockNode);
279
- expect(resolved).to.have.lengthOf(1);
280
- expect(resolved[0].value).to.equal('/ip4/127.0.0.1/tcp/4001'); // Leader transport from mock
281
- });
282
- it('should use child transports when next hop is known child', () => {
283
- const childAddress = new oNodeAddress('o://known-child', [
284
- new oNodeTransport('/ip4/10.0.0.1/tcp/7001'),
285
- ]);
286
- mockNode.hierarchyManager = {
287
- getChild: (address) => {
288
- if (address.value === 'o://known-child') {
289
- return childAddress;
290
- }
291
- return null;
292
- },
293
- };
294
- const nextHop = new oNodeAddress('o://known-child');
295
- const targetTransports = [
296
- new oNodeTransport('/ip4/192.168.1.1/tcp/9999'),
297
- ];
298
- const resolved = resolver.resolveNextHopTransports(nextHop, targetTransports, mockNode);
299
- expect(resolved).to.have.lengthOf(1);
300
- expect(resolved[0].value).to.equal('/ip4/10.0.0.1/tcp/7001');
301
- });
302
- it('should use target transports for unknown next hop', () => {
303
- const nextHop = new oNodeAddress('o://unknown-node');
304
- const targetTransports = [
305
- new oNodeTransport('/ip4/192.168.1.1/tcp/8001'),
306
- ];
307
- const resolved = resolver.resolveNextHopTransports(nextHop, targetTransports, mockNode);
308
- expect(resolved).to.have.lengthOf(1);
309
- expect(resolved[0].value).to.equal('/ip4/192.168.1.1/tcp/8001');
310
- });
311
- it('should return empty array when leader has no transports', () => {
312
- // Create a new mock node with leader that has no transports
313
- const mockNodeNoLeaderTransports = {
314
- ...mockNode,
315
- leader: new oNodeAddress(RestrictedAddresses.LEADER, []),
316
- };
317
- const nextHop = new oNodeAddress(RestrictedAddresses.LEADER);
318
- const targetTransports = [
319
- new oNodeTransport('/ip4/192.168.1.1/tcp/9999'),
320
- ];
321
- const resolved = resolver.resolveNextHopTransports(nextHop, targetTransports, mockNodeNoLeaderTransports);
322
- expect(resolved).to.be.an('array').that.is.empty;
323
- });
324
- });
325
- describe('determineNextHop()', () => {
326
- it('should use oAddress.next() for hierarchy routing', async () => {
327
- const resolvedTarget = new oNodeAddress('o://leader/services/embeddings');
328
- const searchResult = {
329
- transports: [
330
- { value: '/ip4/127.0.0.1/tcp/6001', type: TransportType.LIBP2P },
331
- ],
332
- };
333
- mockNode.address = new oNodeAddress(RestrictedAddresses.LEADER);
334
- const nextHop = resolver.determineNextHop(mockNode, resolvedTarget, searchResult);
335
- // From leader to o://leader/services/embeddings, next hop should be o://leader/services
336
- expect(nextHop.value).to.equal('o://leader/services');
337
- expect(nextHop.transports).to.not.be.empty;
338
- });
339
- it('should set transports on next hop address', async () => {
340
- const resolvedTarget = new oNodeAddress('o://leader/services');
341
- const searchResult = {
342
- transports: [
343
- { value: '/ip4/127.0.0.1/tcp/6001', type: TransportType.LIBP2P },
344
- ],
345
- };
346
- mockNode.address = new oNodeAddress(RestrictedAddresses.LEADER);
347
- const nextHop = resolver.determineNextHop(mockNode, resolvedTarget, searchResult);
348
- expect(nextHop.transports).to.not.be.undefined;
349
- expect(nextHop.transports).to.not.be.empty;
350
- });
351
- it('should handle routing to immediate child', async () => {
352
- const resolvedTarget = new oNodeAddress('o://leader/services');
353
- const searchResult = {
354
- transports: [
355
- { value: '/ip4/127.0.0.1/tcp/6001', type: TransportType.LIBP2P },
356
- ],
357
- };
358
- mockNode.address = new oNodeAddress(RestrictedAddresses.LEADER);
359
- const nextHop = resolver.determineNextHop(mockNode, resolvedTarget, searchResult);
360
- expect(nextHop.value).to.equal('o://leader/services');
361
- });
362
- });
363
- describe('Custom resolver subclassing', () => {
364
- it('should allow overriding getRegistryAddress()', () => {
365
- class CustomRegistryResolver extends oSearchResolver {
366
- getRegistryAddress() {
367
- return new oAddress('o://custom-registry');
368
- }
369
- }
370
- const customResolver = new CustomRegistryResolver(testAddress);
371
- const registryAddress = customResolver.getRegistryAddress();
372
- expect(registryAddress.value).to.equal('o://custom-registry');
373
- });
374
- it('should allow overriding getSearchMethod()', () => {
375
- class CustomMethodResolver extends oSearchResolver {
376
- getSearchMethod() {
377
- return 'custom_search';
378
- }
379
- }
380
- const customResolver = new CustomMethodResolver(testAddress);
381
- const method = customResolver.getSearchMethod();
382
- expect(method).to.equal('custom_search');
383
- });
384
- it('should allow custom result selection (e.g., round-robin)', () => {
385
- class RoundRobinResolver extends oSearchResolver {
386
- constructor() {
387
- super(...arguments);
388
- this.currentIndex = 0;
389
- }
390
- selectResult(results) {
391
- if (results.length === 0)
392
- return null;
393
- const result = results[this.currentIndex % results.length];
394
- this.currentIndex++;
395
- return result;
396
- }
397
- }
398
- const customResolver = new RoundRobinResolver(testAddress);
399
- const results = [
400
- { address: 'o://service-1' },
401
- { address: 'o://service-2' },
402
- { address: 'o://service-3' },
403
- ];
404
- // First call
405
- let selected = customResolver.selectResult(results);
406
- expect(selected.address).to.equal('o://service-1');
407
- // Second call
408
- selected = customResolver.selectResult(results);
409
- expect(selected.address).to.equal('o://service-2');
410
- // Third call
411
- selected = customResolver.selectResult(results);
412
- expect(selected.address).to.equal('o://service-3');
413
- // Fourth call - wraps around
414
- selected = customResolver.selectResult(results);
415
- expect(selected.address).to.equal('o://service-1');
416
- });
417
- it('should allow custom filtering logic', () => {
418
- class StatusFilterResolver extends oSearchResolver {
419
- filterSearchResults(results, node) {
420
- // First apply parent filtering
421
- const filtered = super.filterSearchResults(results, node);
422
- // Then apply custom filtering
423
- return filtered.filter((result) => result.status === 'active');
424
- }
425
- }
426
- const customResolver = new StatusFilterResolver(testAddress);
427
- const results = [
428
- { address: 'o://service-1', status: 'active', staticAddress: 'o://s1' },
429
- {
430
- address: 'o://service-2',
431
- status: 'inactive',
432
- staticAddress: 'o://s2',
433
- },
434
- { address: 'o://service-3', status: 'active', staticAddress: 'o://s3' },
435
- ];
436
- const filtered = customResolver.filterSearchResults(results, mockNode);
437
- expect(filtered).to.have.lengthOf(2);
438
- expect(filtered.every((r) => r.status === 'active')).to.be.true;
439
- });
440
- it('should allow direct routing by overriding determineNextHop()', () => {
441
- class DirectRoutingResolver extends oSearchResolver {
442
- determineNextHop(node, resolvedTargetAddress, searchResult) {
443
- // Always route directly to target, bypassing hierarchy
444
- const targetTransports = this.mapTransports(searchResult);
445
- resolvedTargetAddress.setTransports(targetTransports);
446
- return resolvedTargetAddress;
447
- }
448
- }
449
- const customResolver = new DirectRoutingResolver(testAddress);
450
- const resolvedTarget = new oNodeAddress('o://leader/services/embeddings');
451
- const searchResult = {
452
- transports: [
453
- { value: '/ip4/127.0.0.1/tcp/6001', type: TransportType.LIBP2P },
454
- ],
455
- };
456
- mockNode.address = new oNodeAddress(RestrictedAddresses.LEADER);
457
- const nextHop = customResolver.determineNextHop(mockNode, resolvedTarget, searchResult);
458
- // Direct routing: next hop is the target itself
459
- expect(nextHop.value).to.equal('o://leader/services/embeddings');
460
- expect(nextHop.transports).to.have.lengthOf(1);
461
- });
462
- });
463
- describe('Integration with registry calls', () => {
464
- it('should call node.use() with correct registry address', async () => {
465
- const address = new oNodeAddress('o://test-service');
466
- let capturedAddress;
467
- let capturedRequest;
468
- mockNode.use = async (addr, req) => {
469
- capturedAddress = addr;
470
- capturedRequest = req;
471
- return createResponse({ data: [] });
472
- };
473
- await resolver.resolve({
474
- address,
475
- targetAddress: address,
476
- node: mockNode,
477
- request: createRouterRequest(),
478
- });
479
- expect(capturedAddress?.value).to.equal(RestrictedAddresses.REGISTRY);
480
- expect(capturedRequest.method).to.equal('search');
481
- });
482
- it('should pass correct search parameters to registry', async () => {
483
- const address = new oNodeAddress('o://leader/services/embeddings');
484
- let capturedParams;
485
- mockNode.use = async (addr, req) => {
486
- capturedParams = req.params;
487
- return createResponse({ data: [] });
488
- };
489
- await resolver.resolve({
490
- address,
491
- targetAddress: address,
492
- node: mockNode,
493
- request: createRouterRequest(),
494
- });
495
- expect(capturedParams.staticAddress).to.equal('o://leader');
496
- expect(capturedParams.address).to.equal('o://leader/services/embeddings');
497
- });
498
- it('should handle registry errors gracefully', async () => {
499
- const address = new oNodeAddress('o://test-service');
500
- mockNode.use = async () => {
501
- throw new Error('Registry unavailable');
502
- };
503
- // Should throw error since registry is unavailable
504
- try {
505
- await resolver.resolve({
506
- address,
507
- targetAddress: address,
508
- node: mockNode,
509
- request: createRouterRequest(),
510
- });
511
- expect.fail('Should have thrown error');
512
- }
513
- catch (error) {
514
- expect(error.message).to.equal('Registry unavailable');
515
- }
516
- });
517
- });
518
- describe('Address duplication bug fix', () => {
519
- it('should NOT duplicate path segments when registry returns full hierarchical address', async () => {
520
- // This test verifies the fix for the bug where o://services/embeddings-text
521
- // was being resolved to o://leader/services/embeddings-text/services/embeddings-text
522
- const address = new oNodeAddress('o://services/embeddings-text');
523
- mockNode.use = async () => createResponse({
524
- data: [
525
- {
526
- address: 'o://leader/services/embeddings-text',
527
- staticAddress: 'o://embeddings-text',
528
- transports: [
529
- {
530
- value: '/ip4/127.0.0.1/tcp/6001',
531
- type: TransportType.LIBP2P,
532
- },
533
- ],
534
- },
535
- ],
536
- });
537
- const result = await resolver.resolve({
538
- address,
539
- targetAddress: address,
540
- node: mockNode,
541
- request: createRouterRequest(),
542
- });
543
- // Should be o://leader/services/embeddings-text, NOT o://leader/services/embeddings-text/embeddings-text
544
- expect(result.targetAddress.value).to.equal('o://leader/services/embeddings-text');
545
- });
546
- it('should NOT duplicate when calling via static address', async () => {
547
- const address = new oNodeAddress('o://embeddings-text');
548
- mockNode.use = async () => createResponse({
549
- data: [
550
- {
551
- address: 'o://leader/services/embeddings-text',
552
- staticAddress: 'o://embeddings-text',
553
- transports: [
554
- {
555
- value: '/ip4/127.0.0.1/tcp/6001',
556
- type: TransportType.LIBP2P,
557
- },
558
- ],
559
- },
560
- ],
561
- });
562
- const result = await resolver.resolve({
563
- address,
564
- targetAddress: address,
565
- node: mockNode,
566
- request: createRouterRequest(),
567
- });
568
- expect(result.targetAddress.value).to.equal('o://leader/services/embeddings-text');
569
- });
570
- it('should still append legitimate extra params beyond the service name', async () => {
571
- // If someone calls o://embeddings-text/custom/path, we should preserve /custom/path
572
- const address = new oNodeAddress('o://embeddings-text/custom/path');
573
- mockNode.use = async () => createResponse({
574
- data: [
575
- {
576
- address: 'o://leader/services/embeddings-text',
577
- staticAddress: 'o://embeddings-text',
578
- transports: [
579
- {
580
- value: '/ip4/127.0.0.1/tcp/6001',
581
- type: TransportType.LIBP2P,
582
- },
583
- ],
584
- },
585
- ],
586
- });
587
- const result = await resolver.resolve({
588
- address,
589
- targetAddress: address,
590
- node: mockNode,
591
- request: createRouterRequest(),
592
- });
593
- // Should append the extra /custom/path
594
- expect(result.targetAddress.value).to.equal('o://leader/services/embeddings-text/custom/path');
595
- });
596
- });
597
- describe('Edge cases', () => {
598
- it('should handle address with long nested paths', async () => {
599
- const address = new oNodeAddress('o://leader/a/b/c/d/e/f');
600
- mockNode.use = async () => createResponse({
601
- data: [
602
- {
603
- address: 'o://leader/a/b/c/d/e/f',
604
- transports: [{ value: '/memory', type: TransportType.CUSTOM }],
605
- },
606
- ],
607
- });
608
- const result = await resolver.resolve({
609
- address,
610
- targetAddress: address,
611
- node: mockNode,
612
- request: createRouterRequest(),
613
- });
614
- expect(result.targetAddress.value).to.equal('o://leader/a/b/c/d/e/f');
615
- });
616
- it('should handle static addresses correctly', async () => {
617
- const address = new oNodeAddress('o://embeddings-text');
618
- mockNode.use = async () => createResponse({
619
- data: [
620
- {
621
- address: 'o://leader/services/embeddings',
622
- staticAddress: 'o://embeddings-text',
623
- transports: [
624
- {
625
- value: '/ip4/127.0.0.1/tcp/6001',
626
- type: TransportType.LIBP2P,
627
- },
628
- ],
629
- },
630
- ],
631
- });
632
- const result = await resolver.resolve({
633
- address,
634
- targetAddress: address,
635
- node: mockNode,
636
- request: createRouterRequest(),
637
- });
638
- expect(result.targetAddress.value).to.equal('o://leader/services/embeddings');
639
- });
640
- it('should handle when leader is undefined', async () => {
641
- const address = new oNodeAddress('o://test');
642
- // Create a new mock node with undefined leader
643
- const mockNodeNoLeader = {
644
- ...mockNode,
645
- leader: undefined,
646
- };
647
- mockNodeNoLeader.use = async () => createResponse({
648
- data: [
649
- {
650
- address: 'o://test',
651
- transports: [{ value: '/memory', type: TransportType.CUSTOM }],
652
- },
653
- ],
654
- });
655
- const result = await resolver.resolve({
656
- address,
657
- targetAddress: address,
658
- node: mockNodeNoLeader,
659
- request: createRouterRequest(),
660
- });
661
- // Should still work, just won't have leader transports
662
- expect(result.targetAddress.value).to.equal('o://test');
663
- });
664
- it('should handle multiple transports in search result', async () => {
665
- const address = new oNodeAddress('o://multi-transport');
666
- mockNode.use = async () => createResponse({
667
- data: [
668
- {
669
- address: 'o://multi-transport',
670
- transports: [
671
- {
672
- value: '/ip4/127.0.0.1/tcp/4001',
673
- type: TransportType.LIBP2P,
674
- },
675
- {
676
- value: '/ip4/192.168.1.1/tcp/4002',
677
- type: TransportType.LIBP2P,
678
- },
679
- { value: '/memory', type: TransportType.CUSTOM },
680
- ],
681
- },
682
- ],
683
- });
684
- const result = await resolver.resolve({
685
- address,
686
- targetAddress: address,
687
- node: mockNode,
688
- request: createRouterRequest(),
689
- });
690
- expect(result.targetAddress.transports).to.have.lengthOf(3);
691
- });
692
- });
693
- });