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