@olane/o-node 0.7.12-alpha.39 → 0.7.12-alpha.40

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 (231) 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 +1 -0
  29. package/dist/o-core/src/connection/o-response.d.ts.map +1 -1
  30. package/dist/o-core/src/connection/o-response.js +7 -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/index.d.ts +3 -0
  113. package/dist/o-core/src/error/index.d.ts.map +1 -0
  114. package/dist/o-core/src/error/index.js +2 -0
  115. package/dist/o-core/src/index.d.ts +8 -0
  116. package/dist/o-core/src/index.d.ts.map +1 -0
  117. package/dist/o-core/src/index.js +7 -0
  118. package/dist/o-core/src/response/index.d.ts +2 -0
  119. package/dist/o-core/src/response/index.d.ts.map +1 -0
  120. package/dist/o-core/src/response/index.js +1 -0
  121. package/dist/o-core/src/response/response-builder.d.ts +140 -0
  122. package/dist/o-core/src/response/response-builder.d.ts.map +1 -0
  123. package/dist/o-core/src/response/response-builder.js +190 -0
  124. package/dist/o-core/src/router/enums/restricted-addresses.enum.d.ts +8 -0
  125. package/dist/o-core/src/router/enums/restricted-addresses.enum.d.ts.map +1 -0
  126. package/dist/o-core/src/router/enums/restricted-addresses.enum.js +13 -0
  127. package/dist/o-core/src/router/index.d.ts +11 -0
  128. package/dist/o-core/src/router/index.d.ts.map +1 -0
  129. package/dist/o-core/src/router/index.js +10 -0
  130. package/dist/o-core/src/router/interfaces/resolve.request.d.ts +10 -0
  131. package/dist/o-core/src/router/interfaces/resolve.request.d.ts.map +1 -0
  132. package/dist/o-core/src/router/interfaces/resolve.request.js +1 -0
  133. package/dist/o-core/src/router/interfaces/route.response.d.ts +8 -0
  134. package/dist/o-core/src/router/interfaces/route.response.d.ts.map +1 -0
  135. package/dist/o-core/src/router/interfaces/route.response.js +1 -0
  136. package/dist/o-core/src/router/o-address-resolver.d.ts +14 -0
  137. package/dist/o-core/src/router/o-address-resolver.d.ts.map +1 -0
  138. package/dist/o-core/src/router/o-address-resolver.js +19 -0
  139. package/dist/o-core/src/router/o-address.d.ts +33 -0
  140. package/dist/o-core/src/router/o-address.d.ts.map +1 -0
  141. package/dist/o-core/src/router/o-address.js +114 -0
  142. package/dist/o-core/src/router/o-request-preparation.d.ts +37 -0
  143. package/dist/o-core/src/router/o-request-preparation.d.ts.map +1 -0
  144. package/dist/o-core/src/router/o-request-preparation.js +75 -0
  145. package/dist/o-core/src/router/o-request.router.d.ts +18 -0
  146. package/dist/o-core/src/router/o-request.router.d.ts.map +1 -0
  147. package/dist/o-core/src/router/o-request.router.js +12 -0
  148. package/dist/o-core/src/router/o-resolver-chain.d.ts +32 -0
  149. package/dist/o-core/src/router/o-resolver-chain.d.ts.map +1 -0
  150. package/dist/o-core/src/router/o-resolver-chain.js +62 -0
  151. package/dist/o-core/src/router/o-router.d.ts +19 -0
  152. package/dist/o-core/src/router/o-router.d.ts.map +1 -0
  153. package/dist/o-core/src/router/o-router.js +14 -0
  154. package/dist/o-core/src/router/o-routing-policy.d.ts +36 -0
  155. package/dist/o-core/src/router/o-routing-policy.d.ts.map +1 -0
  156. package/dist/o-core/src/router/o-routing-policy.js +19 -0
  157. package/dist/o-core/src/transports/custom.transport.d.ts +6 -0
  158. package/dist/o-core/src/transports/custom.transport.d.ts.map +1 -0
  159. package/dist/o-core/src/transports/custom.transport.js +10 -0
  160. package/dist/o-core/src/transports/index.d.ts +4 -0
  161. package/dist/o-core/src/transports/index.d.ts.map +1 -0
  162. package/dist/o-core/src/transports/index.js +3 -0
  163. package/dist/o-core/src/transports/interfaces/transport-type.enum.d.ts +5 -0
  164. package/dist/o-core/src/transports/interfaces/transport-type.enum.d.ts.map +1 -0
  165. package/dist/o-core/src/transports/interfaces/transport-type.enum.js +5 -0
  166. package/dist/o-core/src/transports/o-transport.d.ts +10 -0
  167. package/dist/o-core/src/transports/o-transport.d.ts.map +1 -0
  168. package/dist/o-core/src/transports/o-transport.js +16 -0
  169. package/dist/o-core/src/utils/core.utils.d.ts +34 -0
  170. package/dist/o-core/src/utils/core.utils.d.ts.map +1 -0
  171. package/dist/o-core/src/utils/core.utils.js +123 -0
  172. package/dist/o-core/src/utils/index.d.ts +6 -0
  173. package/dist/o-core/src/utils/index.d.ts.map +1 -0
  174. package/dist/o-core/src/utils/index.js +5 -0
  175. package/dist/o-core/src/utils/logger.d.ts +14 -0
  176. package/dist/o-core/src/utils/logger.d.ts.map +1 -0
  177. package/dist/o-core/src/utils/logger.js +31 -0
  178. package/dist/o-core/src/utils/object.utils.d.ts +5 -0
  179. package/dist/o-core/src/utils/object.utils.d.ts.map +1 -0
  180. package/dist/o-core/src/utils/object.utils.js +23 -0
  181. package/dist/o-core/src/utils/regex.utils.d.ts +4 -0
  182. package/dist/o-core/src/utils/regex.utils.d.ts.map +1 -0
  183. package/dist/o-core/src/utils/regex.utils.js +13 -0
  184. package/dist/o-core/src/utils/remote.utils.d.ts +4 -0
  185. package/dist/o-core/src/utils/remote.utils.d.ts.map +1 -0
  186. package/dist/o-core/src/utils/remote.utils.js +5 -0
  187. package/dist/o-node/src/connection/o-node-connection.d.ts +2 -2
  188. package/dist/o-node/src/connection/o-node-connection.d.ts.map +1 -1
  189. package/dist/o-node/src/connection/o-node-connection.js +36 -23
  190. package/dist/o-node/src/connection/o-node-connection.manager.d.ts.map +1 -1
  191. package/dist/o-node/src/connection/o-node-connection.manager.js +13 -41
  192. package/dist/o-node/src/index.d.ts +1 -0
  193. package/dist/o-node/src/index.d.ts.map +1 -1
  194. package/dist/o-node/src/index.js +1 -0
  195. package/dist/o-node/src/interfaces/o-node.config.d.ts +0 -17
  196. package/dist/o-node/src/interfaces/o-node.config.d.ts.map +1 -1
  197. package/dist/o-node/src/managers/o-connection-heartbeat.manager.d.ts +1 -0
  198. package/dist/o-node/src/managers/o-connection-heartbeat.manager.d.ts.map +1 -1
  199. package/dist/o-node/src/managers/o-connection-heartbeat.manager.js +17 -3
  200. package/dist/o-node/src/o-node.d.ts +11 -12
  201. package/dist/o-node/src/o-node.d.ts.map +1 -1
  202. package/dist/o-node/src/o-node.js +104 -25
  203. package/dist/o-node/src/o-node.notification-manager.js +4 -1
  204. package/dist/o-node/src/o-node.tool.d.ts.map +1 -1
  205. package/dist/o-node/src/o-node.tool.js +16 -23
  206. package/dist/o-node/src/router/o-node.router.d.ts +1 -0
  207. package/dist/o-node/src/router/o-node.router.d.ts.map +1 -1
  208. package/dist/o-node/src/router/o-node.router.js +53 -7
  209. package/dist/o-node/src/router/resolvers/o-node.resolver.d.ts.map +1 -1
  210. package/dist/o-node/src/router/resolvers/o-node.resolver.js +5 -1
  211. package/dist/o-node/src/ui/index.d.ts +3 -0
  212. package/dist/o-node/src/ui/index.d.ts.map +1 -0
  213. package/dist/o-node/src/ui/index.js +2 -0
  214. package/dist/o-node/src/ui/types.d.ts +110 -0
  215. package/dist/o-node/src/ui/types.d.ts.map +1 -0
  216. package/dist/o-node/src/ui/types.js +17 -0
  217. package/dist/o-node/src/ui/ui-graph.manager.d.ts +70 -0
  218. package/dist/o-node/src/ui/ui-graph.manager.d.ts.map +1 -0
  219. package/dist/o-node/src/ui/ui-graph.manager.js +274 -0
  220. package/dist/o-node/src/utils/index.d.ts +0 -2
  221. package/dist/o-node/src/utils/index.d.ts.map +1 -1
  222. package/dist/o-node/src/utils/index.js +0 -2
  223. package/dist/o-node/src/utils/stream.utils.d.ts.map +1 -1
  224. package/dist/o-node/src/utils/stream.utils.js +25 -21
  225. package/dist/o-node/test/helpers/test-node.tool.d.ts +15 -0
  226. package/dist/o-node/test/helpers/test-node.tool.d.ts.map +1 -0
  227. package/dist/o-node/test/helpers/test-node.tool.js +27 -0
  228. package/dist/src/connection/o-node-connection.manager.d.ts +14 -4
  229. package/dist/src/connection/o-node-connection.manager.d.ts.map +1 -1
  230. package/dist/src/connection/o-node-connection.manager.js +61 -29
  231. package/package.json +6 -6
@@ -0,0 +1,75 @@
1
+ import { oObject } from '../core/o-object.js';
2
+ import { oRouterRequest } from './o-request.router.js';
3
+ import { JSONRPC_VERSION, oProtocolMethods } from '@olane/o-protocol';
4
+ /**
5
+ * Handles request transformation and preparation for routing.
6
+ * Manages payload wrapping/unwrapping, parameter merging, and request envelope handling.
7
+ */
8
+ export class oRequestPreparation extends oObject {
9
+ /**
10
+ * Prepares a routing request by applying overrides and updating addresses.
11
+ * @param originalRequest The original router request
12
+ * @param requestOverride Optional request override from resolvers
13
+ * @param targetAddress The final target address
14
+ * @returns The prepared routing request
15
+ */
16
+ prepareRequest(originalRequest, requestOverride, targetAddress) {
17
+ const finalRequest = requestOverride || originalRequest;
18
+ const req = new oRouterRequest({
19
+ method: finalRequest.method,
20
+ params: finalRequest.params,
21
+ id: finalRequest.id,
22
+ jsonrpc: JSONRPC_VERSION,
23
+ stream: originalRequest.stream,
24
+ });
25
+ // Update target address in request
26
+ if (finalRequest && targetAddress) {
27
+ finalRequest.params.address = targetAddress.toString();
28
+ }
29
+ return req;
30
+ }
31
+ /**
32
+ * Applies handshake-specific transformations to a request.
33
+ * @param request The routing request to modify
34
+ * @param requestOverride The request override from resolvers
35
+ */
36
+ applyHandshakeTransform(request, requestOverride) {
37
+ const params = request.params.payload.params;
38
+ const { method } = request.params.payload;
39
+ try {
40
+ if (requestOverride) {
41
+ // This is likely a method resolver, so we need to override the method
42
+ // Let's specify the method in the request params to optimize on context window
43
+ params.tool = request.params?.payload?.method;
44
+ }
45
+ }
46
+ catch (e) {
47
+ this.logger.error('Error assigning tool to handshake: ', e);
48
+ }
49
+ // Update the method to be the handshake
50
+ request.params.payload.method = oProtocolMethods.HANDSHAKE;
51
+ return request;
52
+ }
53
+ /**
54
+ * Merges parameters from original payload and resolver overrides.
55
+ * @param request The routing request to modify
56
+ * @param originalPayload The original request payload
57
+ */
58
+ applyParameterMerge(request, originalPayload) {
59
+ const params = request.params.payload.params;
60
+ request.params.payload.params = {
61
+ ...originalPayload.params, // initial params
62
+ ...params, // overloaded params
63
+ };
64
+ return request;
65
+ }
66
+ /**
67
+ * Checks if the request is a handshake request.
68
+ * @param method The method to check
69
+ * @param handshakeMethod The handshake method constant
70
+ * @returns True if this is a handshake request
71
+ */
72
+ isHandshakeRequest(method, handshakeMethod) {
73
+ return method === handshakeMethod;
74
+ }
75
+ }
@@ -0,0 +1,18 @@
1
+ import { oProtocolMethods, RequestId, oRouterRequestInterface, RequestParams, JSONRPC_VERSION } from '@olane/o-protocol';
2
+ import { Stream } from '@olane/o-config';
3
+ import { oRequest } from '../connection/o-request.js';
4
+ export declare class oRouterRequest extends oRequest implements oRouterRequestInterface {
5
+ jsonrpc: typeof JSONRPC_VERSION;
6
+ method: oProtocolMethods.ROUTE;
7
+ stream?: Stream | undefined;
8
+ params: RequestParams & {
9
+ address: string;
10
+ payload: {
11
+ [key: string]: unknown;
12
+ };
13
+ };
14
+ constructor(config: oRouterRequestInterface & {
15
+ id: RequestId;
16
+ });
17
+ }
18
+ //# sourceMappingURL=o-request.router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-request.router.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/router/o-request.router.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,uBAAuB,EACvB,aAAa,EACb,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,qBAAa,cACX,SAAQ,QACR,YAAW,uBAAuB;IAElC,OAAO,EAAE,OAAO,eAAe,CAAC;IAChC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,aAAa,GAAG;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE;YACP,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;KACH,CAAC;gBACU,MAAM,EAAE,uBAAuB,GAAG;QAAE,EAAE,EAAE,SAAS,CAAA;KAAE;CAQhE"}
@@ -0,0 +1,12 @@
1
+ import { JSONRPC_VERSION, } from '@olane/o-protocol';
2
+ import { oRequest } from '../connection/o-request.js';
3
+ export class oRouterRequest extends oRequest {
4
+ constructor(config) {
5
+ super(config);
6
+ this.jsonrpc = JSONRPC_VERSION;
7
+ this.method = config.method;
8
+ this.params = config.params;
9
+ this.stream = config.stream;
10
+ this.id = config.id;
11
+ }
12
+ }
@@ -0,0 +1,32 @@
1
+ import { oAddress } from './o-address.js';
2
+ import { oAddressResolver } from './o-address-resolver.js';
3
+ import { oObject } from '../core/o-object.js';
4
+ import { RouteResponse } from './interfaces/route.response.js';
5
+ import { ResolveRequest } from './interfaces/resolve.request.js';
6
+ /**
7
+ * Manages a chain of address resolvers using the Chain of Responsibility pattern.
8
+ * Sequentially executes registered resolvers to transform addresses and routing requests.
9
+ */
10
+ export declare class oResolverChain extends oObject {
11
+ private readonly resolvers;
12
+ /**
13
+ * Registers a resolver in the chain.
14
+ * @param resolver The resolver to add
15
+ * @param isPriority If true, adds to the front of the chain; otherwise appends to the end
16
+ */
17
+ addResolver(resolver: oAddressResolver, isPriority?: boolean): void;
18
+ /**
19
+ * Checks if any resolver in the chain supports the given address.
20
+ * @param address The address to check
21
+ * @returns True if at least one resolver supports this address
22
+ */
23
+ supportsAddress(address: oAddress): boolean;
24
+ /**
25
+ * Executes the resolver chain to transform an address and request.
26
+ * Each resolver in sequence can modify the nextHopAddress, targetAddress, and request.
27
+ * @param request The resolve request containing address, node, and optional request override
28
+ * @returns The final route response after all resolvers have executed
29
+ */
30
+ resolve(request: ResolveRequest): Promise<RouteResponse>;
31
+ }
32
+ //# sourceMappingURL=o-resolver-chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-resolver-chain.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/router/o-resolver-chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGjE;;;GAGG;AACH,qBAAa,cAAe,SAAQ,OAAO;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IAEpD;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,UAAU,GAAE,OAAe;IAQnE;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO;IAQ3C;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CA+B/D"}
@@ -0,0 +1,62 @@
1
+ import { oAddress } from './o-address.js';
2
+ import { oObject } from '../core/o-object.js';
3
+ /**
4
+ * Manages a chain of address resolvers using the Chain of Responsibility pattern.
5
+ * Sequentially executes registered resolvers to transform addresses and routing requests.
6
+ */
7
+ export class oResolverChain extends oObject {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.resolvers = [];
11
+ }
12
+ /**
13
+ * Registers a resolver in the chain.
14
+ * @param resolver The resolver to add
15
+ * @param isPriority If true, adds to the front of the chain; otherwise appends to the end
16
+ */
17
+ addResolver(resolver, isPriority = false) {
18
+ if (isPriority) {
19
+ this.resolvers.unshift(resolver);
20
+ }
21
+ else {
22
+ this.resolvers.push(resolver);
23
+ }
24
+ }
25
+ /**
26
+ * Checks if any resolver in the chain supports the given address.
27
+ * @param address The address to check
28
+ * @returns True if at least one resolver supports this address
29
+ */
30
+ supportsAddress(address) {
31
+ return this.resolvers.some((r) => address.transports.some((t) => {
32
+ return r.transportTypes.some((r) => r === t.type);
33
+ }));
34
+ }
35
+ /**
36
+ * Executes the resolver chain to transform an address and request.
37
+ * Each resolver in sequence can modify the nextHopAddress, targetAddress, and request.
38
+ * @param request The resolve request containing address, node, and optional request override
39
+ * @returns The final route response after all resolvers have executed
40
+ */
41
+ async resolve(request) {
42
+ let resolvedAddress = new oAddress(request.address.toString(), request.address.transports);
43
+ let targetAddress = resolvedAddress;
44
+ let requestOverride = request.request;
45
+ for (const resolver of this.resolvers) {
46
+ const { nextHopAddress, targetAddress: resolverTargetAddress, requestOverride: resolverRequestOverride, } = await resolver.resolve({
47
+ address: resolvedAddress,
48
+ targetAddress: targetAddress,
49
+ node: request.node,
50
+ request: requestOverride,
51
+ });
52
+ requestOverride = resolverRequestOverride || requestOverride;
53
+ targetAddress = resolverTargetAddress || targetAddress;
54
+ resolvedAddress = nextHopAddress;
55
+ }
56
+ return {
57
+ nextHopAddress: resolvedAddress,
58
+ targetAddress: targetAddress,
59
+ requestOverride: requestOverride,
60
+ };
61
+ }
62
+ }
@@ -0,0 +1,19 @@
1
+ import { oAddress } from './o-address.js';
2
+ import { oObject } from '../core/o-object.js';
3
+ import { oResolverChain } from './o-resolver-chain.js';
4
+ import { oAddressResolver } from './o-address-resolver.js';
5
+ import { oRequest } from '../connection/o-request.js';
6
+ import type { oCore } from '../core/o-core.js';
7
+ import { RouteResponse } from './interfaces/route.response.js';
8
+ import { oRouterRequest } from './o-request.router.js';
9
+ export declare abstract class oRouter extends oObject {
10
+ addressResolution: oResolverChain;
11
+ constructor();
12
+ abstract translate(addressWithLeaderTransports: oAddress, node: oCore): Promise<RouteResponse>;
13
+ abstract isInternal(addressWithLeaderTransports: oAddress, node: oCore): boolean;
14
+ abstract route(request: oRouterRequest, node: oCore): Promise<RouteResponse>;
15
+ protected abstract forward(address: oAddress, request: oRequest | oRouterRequest, node: oCore): Promise<any>;
16
+ addResolver(resolver: oAddressResolver, isPriority?: boolean): void;
17
+ supportsAddress(address: oAddress): boolean;
18
+ }
19
+ //# sourceMappingURL=o-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-router.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/router/o-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,8BAAsB,OAAQ,SAAQ,OAAO;IACpC,iBAAiB,EAAG,cAAc,CAAC;;IAQ1C,QAAQ,CAAC,SAAS,CAChB,2BAA2B,EAAE,QAAQ,EACrC,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,aAAa,CAAC;IAGzB,QAAQ,CAAC,UAAU,CACjB,2BAA2B,EAAE,QAAQ,EACrC,IAAI,EAAE,KAAK,GACV,OAAO;IAKV,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;IAG5E,SAAS,CAAC,QAAQ,CAAC,OAAO,CACxB,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,QAAQ,GAAG,cAAc,EAClC,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,GAAG,CAAC;IAEf,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI;IAI1E,eAAe,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO;CAG5C"}
@@ -0,0 +1,14 @@
1
+ import { oObject } from '../core/o-object.js';
2
+ import { oResolverChain } from './o-resolver-chain.js';
3
+ export class oRouter extends oObject {
4
+ constructor() {
5
+ super();
6
+ this.addressResolution = new oResolverChain();
7
+ }
8
+ addResolver(resolver, isPriority = false) {
9
+ this.addressResolution.addResolver(resolver, isPriority);
10
+ }
11
+ supportsAddress(address) {
12
+ return this.addressResolution.supportsAddress(address);
13
+ }
14
+ }
@@ -0,0 +1,36 @@
1
+ import { oAddress } from './o-address.js';
2
+ import { oObject } from '../core/o-object.js';
3
+ import type { oCore } from '../core/o-core.js';
4
+ import { RouteResponse } from './interfaces/route.response.js';
5
+ /**
6
+ * Provides routing policy decisions based on network topology and address characteristics.
7
+ * Determines whether addresses are internal/external, when to route to leaders, etc.
8
+ *
9
+ * This layer separates network topology awareness from address resolution logic,
10
+ * making routing decisions testable without network calls.
11
+ */
12
+ export declare abstract class oRoutingPolicy extends oObject {
13
+ /**
14
+ * Determines if an address is internal to the current network/hierarchy.
15
+ * @param address The address to check
16
+ * @param node The current node context
17
+ * @returns True if the address is internal, false if external
18
+ */
19
+ abstract isInternalAddress(address: oAddress, node: oCore): boolean;
20
+ /**
21
+ * Determines if the given address points to the node itself.
22
+ * @param address The address to check
23
+ * @param node The current node context
24
+ * @returns True if this is a self-reference
25
+ */
26
+ isSelfAddress(address: oAddress, node: oCore): boolean;
27
+ /**
28
+ * Checks if an address should be routed to a leader node.
29
+ * Returns a RouteResponse if leader routing is required, null otherwise.
30
+ * @param address The address to evaluate
31
+ * @param node The current node context
32
+ * @returns RouteResponse for leader routing, or null if not applicable
33
+ */
34
+ abstract getExternalRoutingStrategy(address: oAddress, node: oCore): RouteResponse | null;
35
+ }
36
+ //# sourceMappingURL=o-routing-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-routing-policy.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/router/o-routing-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D;;;;;;GAMG;AACH,8BAAsB,cAAe,SAAQ,OAAO;IAClD;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO;IAEnE;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO;IAItD;;;;;;OAMG;IACH,QAAQ,CAAC,0BAA0B,CACjC,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,KAAK,GACV,aAAa,GAAG,IAAI;CACxB"}
@@ -0,0 +1,19 @@
1
+ import { oObject } from '../core/o-object.js';
2
+ /**
3
+ * Provides routing policy decisions based on network topology and address characteristics.
4
+ * Determines whether addresses are internal/external, when to route to leaders, etc.
5
+ *
6
+ * This layer separates network topology awareness from address resolution logic,
7
+ * making routing decisions testable without network calls.
8
+ */
9
+ export class oRoutingPolicy extends oObject {
10
+ /**
11
+ * Determines if the given address points to the node itself.
12
+ * @param address The address to check
13
+ * @param node The current node context
14
+ * @returns True if this is a self-reference
15
+ */
16
+ isSelfAddress(address, node) {
17
+ return node.address.equals(address);
18
+ }
19
+ }
@@ -0,0 +1,6 @@
1
+ import { oTransport } from './o-transport.js';
2
+ export declare class oCustomTransport extends oTransport {
3
+ constructor(value: string);
4
+ toString(): string;
5
+ }
6
+ //# sourceMappingURL=custom.transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom.transport.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/transports/custom.transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,qBAAa,gBAAiB,SAAQ,UAAU;gBAClC,KAAK,EAAE,MAAM;IAIzB,QAAQ,IAAI,MAAM;CAGnB"}
@@ -0,0 +1,10 @@
1
+ import { TransportType } from './interfaces/transport-type.enum.js';
2
+ import { oTransport } from './o-transport.js';
3
+ export class oCustomTransport extends oTransport {
4
+ constructor(value) {
5
+ super(value, TransportType.CUSTOM);
6
+ }
7
+ toString() {
8
+ return this.value.toString();
9
+ }
10
+ }
@@ -0,0 +1,4 @@
1
+ export * from './o-transport.js';
2
+ export * from './custom.transport.js';
3
+ export * from './interfaces/transport-type.enum.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qCAAqC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './o-transport.js';
2
+ export * from './custom.transport.js';
3
+ export * from './interfaces/transport-type.enum.js';
@@ -0,0 +1,5 @@
1
+ export declare enum TransportType {
2
+ LIBP2P = "libp2p",
3
+ CUSTOM = "custom"
4
+ }
5
+ //# sourceMappingURL=transport-type.enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-type.enum.d.ts","sourceRoot":"","sources":["../../../../../../o-core/src/transports/interfaces/transport-type.enum.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB"}
@@ -0,0 +1,5 @@
1
+ export var TransportType;
2
+ (function (TransportType) {
3
+ TransportType["LIBP2P"] = "libp2p";
4
+ TransportType["CUSTOM"] = "custom";
5
+ })(TransportType || (TransportType = {}));
@@ -0,0 +1,10 @@
1
+ import { oObject } from '../core/o-object.js';
2
+ import { TransportType } from './interfaces/transport-type.enum.js';
3
+ export declare abstract class oTransport extends oObject {
4
+ readonly value: any;
5
+ readonly type: TransportType;
6
+ constructor(value: any, type?: TransportType);
7
+ abstract toString(): string;
8
+ toJSON(): any;
9
+ }
10
+ //# sourceMappingURL=o-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-transport.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/transports/o-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,8BAAsB,UAAW,SAAQ,OAAO;IAC9C,SAAgB,KAAK,EAAE,GAAG,CAAC;IAC3B,SAAgB,IAAI,EAAE,aAAa,CAAwB;gBAE/C,KAAK,EAAE,GAAG,EAAE,IAAI,GAAE,aAAoC;IAMlE,QAAQ,CAAC,QAAQ,IAAI,MAAM;IAE3B,MAAM,IAAI,GAAG;CAMd"}
@@ -0,0 +1,16 @@
1
+ import { oObject } from '../core/o-object.js';
2
+ import { TransportType } from './interfaces/transport-type.enum.js';
3
+ export class oTransport extends oObject {
4
+ constructor(value, type = TransportType.LIBP2P) {
5
+ super();
6
+ this.type = TransportType.LIBP2P;
7
+ this.value = value;
8
+ this.type = type;
9
+ }
10
+ toJSON() {
11
+ return {
12
+ value: this.value,
13
+ type: this.type,
14
+ };
15
+ }
16
+ }
@@ -0,0 +1,34 @@
1
+ import { Stream } from '@olane/o-config';
2
+ import { oAddress } from '../router/o-address.js';
3
+ import { oResponse } from '../connection/o-response.js';
4
+ import { oRequest } from '../connection/o-request.js';
5
+ import { CID } from 'multiformats';
6
+ import { oObject } from '../core/o-object.js';
7
+ export declare class CoreUtils extends oObject {
8
+ static generatePeerId(): Promise<any>;
9
+ static doHealthCheck(address: oAddress, node: any): Promise<boolean>;
10
+ static healthCheck(config: {
11
+ type?: 'leader' | 'parent' | 'child';
12
+ address?: oAddress;
13
+ node: any;
14
+ timeout?: number;
15
+ }): Promise<boolean>;
16
+ static generatePrivateKey(seed: string): Promise<any>;
17
+ /**
18
+ * Convert any user phrase to exactly 32 bytes for Ed25519 key generation.
19
+ * This function uses SHA-256 hashing to ensure:
20
+ * - Deterministic: Same phrase always produces same seed
21
+ * - Uniform distribution: Good entropy even for weak phrases
22
+ * - Exactly 32 bytes: Meets Ed25519 cryptographic requirements
23
+ */
24
+ static phraseToSeedBytes(phrase: string): Uint8Array;
25
+ static phraseToSeed(phrase: string): string;
26
+ static childAddress(parentAddress: oAddress, childAddress: oAddress): oAddress;
27
+ static sendResponse(response: oResponse, stream: Stream): Promise<void>;
28
+ static sendStreamResponse(response: oResponse, stream: Stream): Promise<void>;
29
+ static processStream(event: any): Promise<any>;
30
+ static processStreamRequest(event: any): Promise<oRequest>;
31
+ static processStreamResponse(event: any): Promise<oResponse>;
32
+ static toCID(data: any): Promise<CID>;
33
+ }
34
+ //# sourceMappingURL=core.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.utils.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/utils/core.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAGP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,qBAAa,SAAU,SAAQ,OAAO;WACvB,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC;IAK3C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;WAkBvD,WAAW,CAAC,MAAM,EAAE;QAC/B,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;QACrC,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,IAAI,EAAE,GAAG,CAAC;QACV,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,OAAO,CAAC;WA4BP,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ3D;;;;;;OAMG;WACW,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;WAO7C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;WAOpC,YAAY,CACxB,aAAa,EAAE,QAAQ,EACvB,YAAY,EAAE,QAAQ,GACrB,QAAQ;WAIS,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;WAahD,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;WAgBtD,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;WAMvC,oBAAoB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;WAKnD,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;WAOrD,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAMnD"}
@@ -0,0 +1,123 @@
1
+ import { generateKeyPairFromSeed, createEd25519PeerId, Uint8ArrayList, } from '@olane/o-config';
2
+ import { createHash } from 'crypto';
3
+ import { oAddress } from '../router/o-address.js';
4
+ import { oResponse } from '../connection/o-response.js';
5
+ import { oRequest } from '../connection/o-request.js';
6
+ import { CID } from 'multiformats';
7
+ import * as json from 'multiformats/codecs/json';
8
+ import { sha256 } from 'multiformats/hashes/sha2';
9
+ import { oObject } from '../core/o-object.js';
10
+ export class CoreUtils extends oObject {
11
+ static async generatePeerId() {
12
+ const peerId = await createEd25519PeerId();
13
+ return peerId;
14
+ }
15
+ static doHealthCheck(address, node) {
16
+ return new Promise(async (resolve, reject) => {
17
+ const timer = setTimeout(() => {
18
+ reject(new Error('Health check timed out'));
19
+ }, 30000); // 30 seconds
20
+ const response = await node.use(new oAddress(address.toString() + '/ping', address.transports));
21
+ clearTimeout(timer);
22
+ if (response.result.error) {
23
+ reject(new Error('Health check failed'));
24
+ }
25
+ else {
26
+ resolve(true);
27
+ }
28
+ });
29
+ }
30
+ static async healthCheck(config) {
31
+ if (!config.node) {
32
+ throw new Error('Node is required');
33
+ }
34
+ const { type, address, node } = config;
35
+ if (type === 'leader') {
36
+ return CoreUtils.doHealthCheck(node.leader, node);
37
+ }
38
+ else if (type === 'parent') {
39
+ return CoreUtils.doHealthCheck(node.parent, node);
40
+ }
41
+ else if (type === 'child') {
42
+ const children = node.hierarchyManager.getChildren();
43
+ return (await Promise.all(children.map((child) => CoreUtils.doHealthCheck(child, node)))).every((result) => result === true);
44
+ }
45
+ if (address) {
46
+ return CoreUtils.doHealthCheck(address, node);
47
+ }
48
+ throw new Error('Address is required');
49
+ }
50
+ static async generatePrivateKey(seed) {
51
+ // Convert any user phrase to exactly 32 bytes using SHA-256
52
+ const seedBytes = CoreUtils.phraseToSeedBytes(seed);
53
+ const privateKey = await generateKeyPairFromSeed('Ed25519', seedBytes);
54
+ return privateKey;
55
+ }
56
+ /**
57
+ * Convert any user phrase to exactly 32 bytes for Ed25519 key generation.
58
+ * This function uses SHA-256 hashing to ensure:
59
+ * - Deterministic: Same phrase always produces same seed
60
+ * - Uniform distribution: Good entropy even for weak phrases
61
+ * - Exactly 32 bytes: Meets Ed25519 cryptographic requirements
62
+ */
63
+ static phraseToSeedBytes(phrase) {
64
+ // Use SHA-256 to create a consistent 32-byte hash
65
+ const hash = createHash('sha256').update(phrase, 'utf8').digest();
66
+ return new Uint8Array(hash);
67
+ }
68
+ // Legacy utility function to convert any phrase into a 32-character hex string
69
+ static phraseToSeed(phrase) {
70
+ // Use SHA-256 to create a consistent 32-byte hash
71
+ const hash = createHash('sha256').update(phrase).digest('hex');
72
+ // Take the first 32 characters of the hex string
73
+ return hash.substring(0, 32);
74
+ }
75
+ static childAddress(parentAddress, childAddress) {
76
+ return new oAddress(parentAddress.toString() + '/' + childAddress.paths);
77
+ }
78
+ static async sendResponse(response, stream) {
79
+ if (stream.status !== 'open') {
80
+ return;
81
+ }
82
+ try {
83
+ await stream.send(new TextEncoder().encode(response.toString()));
84
+ await stream.close();
85
+ }
86
+ catch (error) {
87
+ console.error('Error sending response: ', error);
88
+ }
89
+ }
90
+ static async sendStreamResponse(response, stream) {
91
+ const utils = new CoreUtils();
92
+ if (!stream || stream.status !== 'open') {
93
+ utils.logger.warn('Stream is not open. Status: ' + stream?.status || 'undefined');
94
+ return;
95
+ }
96
+ try {
97
+ await stream.send(new TextEncoder().encode(response.toString()));
98
+ }
99
+ catch (error) {
100
+ utils.logger.error('Error sending stream response: ', error);
101
+ }
102
+ }
103
+ static async processStream(event) {
104
+ const bytes = event.data instanceof Uint8ArrayList ? event.data.subarray() : event.data;
105
+ return JSON.parse(new TextDecoder().decode(bytes));
106
+ }
107
+ static async processStreamRequest(event) {
108
+ const req = await CoreUtils.processStream(event);
109
+ return new oRequest(req);
110
+ }
111
+ static async processStreamResponse(event) {
112
+ const res = await CoreUtils.processStream(event);
113
+ return new oResponse({
114
+ ...res.result,
115
+ });
116
+ }
117
+ static async toCID(data) {
118
+ const bytes = json.encode(data);
119
+ const hash = await sha256.digest(bytes);
120
+ const cid = CID.create(1, json.code, hash);
121
+ return cid;
122
+ }
123
+ }
@@ -0,0 +1,6 @@
1
+ export * from './object.utils.js';
2
+ export * from './regex.utils.js';
3
+ export * from './remote.utils.js';
4
+ export * from './logger.js';
5
+ export * from './core.utils.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './object.utils.js';
2
+ export * from './regex.utils.js';
3
+ export * from './remote.utils.js';
4
+ export * from './logger.js';
5
+ export * from './core.utils.js';
@@ -0,0 +1,14 @@
1
+ export declare class Logger {
2
+ private readonly name;
3
+ private log;
4
+ private suffix;
5
+ constructor(name: string);
6
+ setNamespace(name: string): void;
7
+ verbose(...args: any[]): void;
8
+ debug(...args: any[]): void;
9
+ info(...args: any[]): void;
10
+ warn(...args: any[]): void;
11
+ error(...args: any[]): void;
12
+ alert(...args: any[]): void;
13
+ }
14
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/utils/logger.ts"],"names":[],"mappings":"AAGA,qBAAa,MAAM;IAIL,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,MAAM,CAAc;gBAEC,IAAI,EAAE,MAAM;IAKzC,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAItB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAIpB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAInB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAInB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAIpB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;CAGrB"}
@@ -0,0 +1,31 @@
1
+ import debug from 'debug';
2
+ import chalk from 'chalk';
3
+ export class Logger {
4
+ constructor(name) {
5
+ this.name = name;
6
+ this.suffix = '';
7
+ this.suffix = process.env.LOG_ID ? process.env.LOG_ID + ':' : '';
8
+ this.log = debug('olane-os:' + this.suffix + name);
9
+ }
10
+ setNamespace(name) {
11
+ this.log = debug('olane-os:' + this.suffix + name);
12
+ }
13
+ verbose(...args) {
14
+ this.log(chalk.gray('[VERBOSE]'), ...args);
15
+ }
16
+ debug(...args) {
17
+ this.log(chalk.blue('[DEBUG]'), ...args);
18
+ }
19
+ info(...args) {
20
+ this.log(chalk.green('[INFO]'), ...args);
21
+ }
22
+ warn(...args) {
23
+ this.log(chalk.yellow('[WARN]'), ...args);
24
+ }
25
+ error(...args) {
26
+ this.log(chalk.red('[ERROR]'), ...args);
27
+ }
28
+ alert(...args) {
29
+ this.log(chalk.redBright('[ALERT]'), ...args);
30
+ }
31
+ }
@@ -0,0 +1,5 @@
1
+ export declare class ObjectUtils {
2
+ static isObject(obj: any): boolean;
3
+ static allKeyValues(obj: any, callback: (key: string, value: any) => Promise<any>): Promise<any>;
4
+ }
5
+ //# sourceMappingURL=object.utils.d.ts.map