@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,8 @@
|
|
|
1
|
+
export * from './connection/index.js';
|
|
2
|
+
export * from './core/index.js';
|
|
3
|
+
export * from './error/index.js';
|
|
4
|
+
export * from './response/index.js';
|
|
5
|
+
export * from './router/index.js';
|
|
6
|
+
export * from './transports/index.js';
|
|
7
|
+
export * from './utils/index.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../o-core/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/response/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ResponseBuilder, DefaultMetricsTracker, } from './response-builder.js';
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { oRequest } from '../connection/o-request.js';
|
|
2
|
+
import { oResponse } from '../connection/o-response.js';
|
|
3
|
+
import { oError } from '../error/o-error.js';
|
|
4
|
+
/**
|
|
5
|
+
* Response context for building responses with proper metadata
|
|
6
|
+
*/
|
|
7
|
+
export interface ResponseContext {
|
|
8
|
+
/** Whether this is a streaming response */
|
|
9
|
+
isStream?: boolean;
|
|
10
|
+
/** Whether this is the last chunk in a stream */
|
|
11
|
+
isLast?: boolean;
|
|
12
|
+
/** Whether the operation was successful */
|
|
13
|
+
success?: boolean;
|
|
14
|
+
/** Request ID for correlation */
|
|
15
|
+
requestId?: string | number;
|
|
16
|
+
/** Connection ID from the request */
|
|
17
|
+
connectionId?: string | number;
|
|
18
|
+
/** Request method for tracking */
|
|
19
|
+
requestMethod?: string | number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Middleware function that can intercept and transform responses
|
|
23
|
+
*/
|
|
24
|
+
export type ResponseMiddleware = (response: oResponse, context: ResponseContext) => oResponse | Promise<oResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* Metrics tracker interface for extensible metrics tracking
|
|
27
|
+
*/
|
|
28
|
+
export interface MetricsTracker {
|
|
29
|
+
trackSuccess(context: ResponseContext): void;
|
|
30
|
+
trackError(context: ResponseContext, error: oError): void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Default metrics tracker that increments counters
|
|
34
|
+
*/
|
|
35
|
+
export declare class DefaultMetricsTracker implements MetricsTracker {
|
|
36
|
+
private metrics;
|
|
37
|
+
constructor(metrics: {
|
|
38
|
+
successCount: number;
|
|
39
|
+
errorCount: number;
|
|
40
|
+
});
|
|
41
|
+
trackSuccess(context: ResponseContext): void;
|
|
42
|
+
trackError(context: ResponseContext, error: oError): void;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* ResponseBuilder - Unified response generation for all Olane routing paths
|
|
46
|
+
*
|
|
47
|
+
* This class provides a single source of truth for creating responses across:
|
|
48
|
+
* - Local execution (useSelf)
|
|
49
|
+
* - Remote execution (use, useChild)
|
|
50
|
+
* - Router forwarding (forward, executeSelfRouting)
|
|
51
|
+
* - Streaming responses
|
|
52
|
+
*
|
|
53
|
+
* Features:
|
|
54
|
+
* - Consistent error normalization
|
|
55
|
+
* - Automatic metrics tracking
|
|
56
|
+
* - Context-aware response building (streaming, success/error states)
|
|
57
|
+
* - Extensible middleware system
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const builder = new ResponseBuilder()
|
|
62
|
+
* .withMetrics(node.metrics)
|
|
63
|
+
* .use(loggingMiddleware);
|
|
64
|
+
*
|
|
65
|
+
* const response = await builder.build(request, result, error);
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare class ResponseBuilder {
|
|
69
|
+
private middlewares;
|
|
70
|
+
private metricsTracker?;
|
|
71
|
+
/**
|
|
72
|
+
* Add a middleware function to intercept responses
|
|
73
|
+
*/
|
|
74
|
+
use(middleware: ResponseMiddleware): this;
|
|
75
|
+
/**
|
|
76
|
+
* Configure metrics tracking
|
|
77
|
+
* @param metrics The metrics object to track success/error counts
|
|
78
|
+
*/
|
|
79
|
+
withMetrics(metrics: {
|
|
80
|
+
successCount: number;
|
|
81
|
+
errorCount: number;
|
|
82
|
+
}): this;
|
|
83
|
+
/**
|
|
84
|
+
* Configure custom metrics tracker
|
|
85
|
+
* @param tracker Custom metrics tracker implementation
|
|
86
|
+
*/
|
|
87
|
+
withCustomMetrics(tracker: MetricsTracker): this;
|
|
88
|
+
/**
|
|
89
|
+
* Normalize any error into an oError instance
|
|
90
|
+
* @param error The error to normalize
|
|
91
|
+
* @returns An oError instance
|
|
92
|
+
*/
|
|
93
|
+
normalizeError(error: any): oError;
|
|
94
|
+
/**
|
|
95
|
+
* Build a complete response from a request and result
|
|
96
|
+
* @param request The original request
|
|
97
|
+
* @param result The result data (or error object)
|
|
98
|
+
* @param error Optional error object
|
|
99
|
+
* @param context Additional response context
|
|
100
|
+
* @returns An oResponse instance
|
|
101
|
+
*/
|
|
102
|
+
build(request: oRequest, result: any, error?: any, context?: Partial<ResponseContext>): Promise<oResponse>;
|
|
103
|
+
/**
|
|
104
|
+
* Build a streaming chunk response
|
|
105
|
+
* @param request The original request
|
|
106
|
+
* @param chunkData The chunk data
|
|
107
|
+
* @param context Additional response context
|
|
108
|
+
* @returns An oResponse instance with _last: false
|
|
109
|
+
*/
|
|
110
|
+
buildChunk(request: oRequest, chunkData: any, context?: Partial<ResponseContext>): Promise<oResponse>;
|
|
111
|
+
/**
|
|
112
|
+
* Build the final chunk in a stream
|
|
113
|
+
* @param request The original request
|
|
114
|
+
* @param context Additional response context
|
|
115
|
+
* @returns An oResponse instance with _last: true
|
|
116
|
+
*/
|
|
117
|
+
buildFinalChunk(request: oRequest, context?: Partial<ResponseContext>): Promise<oResponse>;
|
|
118
|
+
/**
|
|
119
|
+
* Build an error response
|
|
120
|
+
* @param request The original request
|
|
121
|
+
* @param error The error that occurred
|
|
122
|
+
* @param context Additional response context
|
|
123
|
+
* @returns An oResponse instance with error details
|
|
124
|
+
*/
|
|
125
|
+
buildError(request: oRequest, error: any, context?: Partial<ResponseContext>): Promise<oResponse>;
|
|
126
|
+
/**
|
|
127
|
+
* Execute a function and automatically build a response based on the outcome
|
|
128
|
+
* @param request The request being executed
|
|
129
|
+
* @param executor The function to execute
|
|
130
|
+
* @param context Additional response context
|
|
131
|
+
* @returns An oResponse instance
|
|
132
|
+
*/
|
|
133
|
+
execute(request: oRequest, executor: () => Promise<any>, context?: Partial<ResponseContext>): Promise<oResponse>;
|
|
134
|
+
/**
|
|
135
|
+
* Create a new ResponseBuilder instance (for chaining)
|
|
136
|
+
* @returns A new ResponseBuilder instance
|
|
137
|
+
*/
|
|
138
|
+
static create(): ResponseBuilder;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=response-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-builder.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/response/response-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,eAAe,KACrB,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3D;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,OAAO,CAA+C;gBAElD,OAAO,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAIjE,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI5C,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAG1D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAAC,CAAiB;IAExC;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAKzC;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKxE;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAKhD;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAWlC;;;;;;;OAOG;IACG,KAAK,CACT,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,GAAG,EACX,KAAK,CAAC,EAAE,GAAG,EACX,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC;IAiDrB;;;;;;OAMG;IACG,UAAU,CACd,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,GAAG,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC;IASrB;;;;;OAKG;IACG,eAAe,CACnB,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC;IAcrB;;;;;;OAMG;IACG,UAAU,CACd,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC;IAUrB;;;;;;OAMG;IACG,OAAO,CACX,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC;IASrB;;;OAGG;IACH,MAAM,CAAC,MAAM,IAAI,eAAe;CAGjC"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { oResponse } from '../connection/o-response.js';
|
|
2
|
+
import { oError } from '../error/o-error.js';
|
|
3
|
+
import { oErrorCodes } from '../error/enums/codes.error.js';
|
|
4
|
+
/**
|
|
5
|
+
* Default metrics tracker that increments counters
|
|
6
|
+
*/
|
|
7
|
+
export class DefaultMetricsTracker {
|
|
8
|
+
constructor(metrics) {
|
|
9
|
+
this.metrics = metrics;
|
|
10
|
+
}
|
|
11
|
+
trackSuccess(context) {
|
|
12
|
+
this.metrics.successCount++;
|
|
13
|
+
}
|
|
14
|
+
trackError(context, error) {
|
|
15
|
+
this.metrics.errorCount++;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* ResponseBuilder - Unified response generation for all Olane routing paths
|
|
20
|
+
*
|
|
21
|
+
* This class provides a single source of truth for creating responses across:
|
|
22
|
+
* - Local execution (useSelf)
|
|
23
|
+
* - Remote execution (use, useChild)
|
|
24
|
+
* - Router forwarding (forward, executeSelfRouting)
|
|
25
|
+
* - Streaming responses
|
|
26
|
+
*
|
|
27
|
+
* Features:
|
|
28
|
+
* - Consistent error normalization
|
|
29
|
+
* - Automatic metrics tracking
|
|
30
|
+
* - Context-aware response building (streaming, success/error states)
|
|
31
|
+
* - Extensible middleware system
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const builder = new ResponseBuilder()
|
|
36
|
+
* .withMetrics(node.metrics)
|
|
37
|
+
* .use(loggingMiddleware);
|
|
38
|
+
*
|
|
39
|
+
* const response = await builder.build(request, result, error);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export class ResponseBuilder {
|
|
43
|
+
constructor() {
|
|
44
|
+
this.middlewares = [];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Add a middleware function to intercept responses
|
|
48
|
+
*/
|
|
49
|
+
use(middleware) {
|
|
50
|
+
this.middlewares.push(middleware);
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Configure metrics tracking
|
|
55
|
+
* @param metrics The metrics object to track success/error counts
|
|
56
|
+
*/
|
|
57
|
+
withMetrics(metrics) {
|
|
58
|
+
this.metricsTracker = new DefaultMetricsTracker(metrics);
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Configure custom metrics tracker
|
|
63
|
+
* @param tracker Custom metrics tracker implementation
|
|
64
|
+
*/
|
|
65
|
+
withCustomMetrics(tracker) {
|
|
66
|
+
this.metricsTracker = tracker;
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Normalize any error into an oError instance
|
|
71
|
+
* @param error The error to normalize
|
|
72
|
+
* @returns An oError instance
|
|
73
|
+
*/
|
|
74
|
+
normalizeError(error) {
|
|
75
|
+
if (error instanceof oError) {
|
|
76
|
+
return error;
|
|
77
|
+
}
|
|
78
|
+
return new oError(oErrorCodes.UNKNOWN, error?.message || String(error), error?.stack);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Build a complete response from a request and result
|
|
82
|
+
* @param request The original request
|
|
83
|
+
* @param result The result data (or error object)
|
|
84
|
+
* @param error Optional error object
|
|
85
|
+
* @param context Additional response context
|
|
86
|
+
* @returns An oResponse instance
|
|
87
|
+
*/
|
|
88
|
+
async build(request, result, error, context) {
|
|
89
|
+
const isError = !!error;
|
|
90
|
+
const success = !isError;
|
|
91
|
+
// Build context
|
|
92
|
+
const responseContext = {
|
|
93
|
+
isStream: context?.isStream ?? false,
|
|
94
|
+
isLast: context?.isLast ?? true,
|
|
95
|
+
success,
|
|
96
|
+
requestId: request.id,
|
|
97
|
+
connectionId: request.params?._connectionId,
|
|
98
|
+
requestMethod: request.method,
|
|
99
|
+
...context,
|
|
100
|
+
};
|
|
101
|
+
// Create response
|
|
102
|
+
let response = new oResponse({
|
|
103
|
+
id: request.id,
|
|
104
|
+
data: result,
|
|
105
|
+
error: result?.error,
|
|
106
|
+
success,
|
|
107
|
+
_last: responseContext.isLast ?? true,
|
|
108
|
+
_isStreaming: responseContext.isStream ?? false,
|
|
109
|
+
_requestMethod: String(responseContext.requestMethod || request.method || ''),
|
|
110
|
+
_connectionId: String(responseContext.connectionId || ''),
|
|
111
|
+
});
|
|
112
|
+
// Apply middleware
|
|
113
|
+
for (const middleware of this.middlewares) {
|
|
114
|
+
response = await middleware(response, responseContext);
|
|
115
|
+
}
|
|
116
|
+
// Track metrics
|
|
117
|
+
if (this.metricsTracker) {
|
|
118
|
+
if (success) {
|
|
119
|
+
this.metricsTracker.trackSuccess(responseContext);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
this.metricsTracker.trackError(responseContext, this.normalizeError(error));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return response;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Build a streaming chunk response
|
|
129
|
+
* @param request The original request
|
|
130
|
+
* @param chunkData The chunk data
|
|
131
|
+
* @param context Additional response context
|
|
132
|
+
* @returns An oResponse instance with _last: false
|
|
133
|
+
*/
|
|
134
|
+
async buildChunk(request, chunkData, context) {
|
|
135
|
+
return this.build(request, chunkData, null, {
|
|
136
|
+
...context,
|
|
137
|
+
isStream: true,
|
|
138
|
+
isLast: false,
|
|
139
|
+
success: true,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Build the final chunk in a stream
|
|
144
|
+
* @param request The original request
|
|
145
|
+
* @param context Additional response context
|
|
146
|
+
* @returns An oResponse instance with _last: true
|
|
147
|
+
*/
|
|
148
|
+
async buildFinalChunk(request, context) {
|
|
149
|
+
return this.build(request, { success: true, response: 'Stream completed' }, null, {
|
|
150
|
+
...context,
|
|
151
|
+
isStream: true,
|
|
152
|
+
isLast: true,
|
|
153
|
+
success: true,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Build an error response
|
|
158
|
+
* @param request The original request
|
|
159
|
+
* @param error The error that occurred
|
|
160
|
+
* @param context Additional response context
|
|
161
|
+
* @returns An oResponse instance with error details
|
|
162
|
+
*/
|
|
163
|
+
async buildError(request, error, context) {
|
|
164
|
+
const normalizedError = this.normalizeError(error);
|
|
165
|
+
return this.build(request, { error: normalizedError.toJSON() }, normalizedError, context);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Execute a function and automatically build a response based on the outcome
|
|
169
|
+
* @param request The request being executed
|
|
170
|
+
* @param executor The function to execute
|
|
171
|
+
* @param context Additional response context
|
|
172
|
+
* @returns An oResponse instance
|
|
173
|
+
*/
|
|
174
|
+
async execute(request, executor, context) {
|
|
175
|
+
try {
|
|
176
|
+
const result = await executor();
|
|
177
|
+
return await this.build(request, result, null, context);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
return await this.buildError(request, error, context);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Create a new ResponseBuilder instance (for chaining)
|
|
185
|
+
* @returns A new ResponseBuilder instance
|
|
186
|
+
*/
|
|
187
|
+
static create() {
|
|
188
|
+
return new ResponseBuilder();
|
|
189
|
+
}
|
|
190
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare enum RestrictedAddresses {
|
|
2
|
+
REGISTRY = "o://registry",
|
|
3
|
+
LEADER = "o://leader",
|
|
4
|
+
LANE = "o://lane",
|
|
5
|
+
INTELLIGENCE = "o://intelligence"
|
|
6
|
+
}
|
|
7
|
+
export declare const RestrictedAddressesList: RestrictedAddresses[];
|
|
8
|
+
//# sourceMappingURL=restricted-addresses.enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restricted-addresses.enum.d.ts","sourceRoot":"","sources":["../../../../../../o-core/src/router/enums/restricted-addresses.enum.ts"],"names":[],"mappings":"AAAA,oBAAY,mBAAmB;IAC7B,QAAQ,iBAAiB;IACzB,MAAM,eAAe;IACrB,IAAI,aAAa;IACjB,YAAY,qBAAqB;CAClC;AAED,eAAO,MAAM,uBAAuB,uBAKnC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export var RestrictedAddresses;
|
|
2
|
+
(function (RestrictedAddresses) {
|
|
3
|
+
RestrictedAddresses["REGISTRY"] = "o://registry";
|
|
4
|
+
RestrictedAddresses["LEADER"] = "o://leader";
|
|
5
|
+
RestrictedAddresses["LANE"] = "o://lane";
|
|
6
|
+
RestrictedAddresses["INTELLIGENCE"] = "o://intelligence";
|
|
7
|
+
})(RestrictedAddresses || (RestrictedAddresses = {}));
|
|
8
|
+
export const RestrictedAddressesList = [
|
|
9
|
+
RestrictedAddresses.REGISTRY,
|
|
10
|
+
RestrictedAddresses.LEADER,
|
|
11
|
+
RestrictedAddresses.LANE,
|
|
12
|
+
RestrictedAddresses.INTELLIGENCE,
|
|
13
|
+
];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './o-router.js';
|
|
2
|
+
export * from './o-address.js';
|
|
3
|
+
export * from './interfaces/route.response.js';
|
|
4
|
+
export * from './enums/restricted-addresses.enum.js';
|
|
5
|
+
export * from './o-resolver-chain.js';
|
|
6
|
+
export * from './o-address-resolver.js';
|
|
7
|
+
export * from './o-routing-policy.js';
|
|
8
|
+
export * from './o-request-preparation.js';
|
|
9
|
+
export * from './interfaces/resolve.request.js';
|
|
10
|
+
export * from './o-request.router.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/router/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './o-router.js';
|
|
2
|
+
export * from './o-address.js';
|
|
3
|
+
export * from './interfaces/route.response.js';
|
|
4
|
+
export * from './enums/restricted-addresses.enum.js';
|
|
5
|
+
export * from './o-resolver-chain.js';
|
|
6
|
+
export * from './o-address-resolver.js';
|
|
7
|
+
export * from './o-routing-policy.js';
|
|
8
|
+
export * from './o-request-preparation.js';
|
|
9
|
+
export * from './interfaces/resolve.request.js';
|
|
10
|
+
export * from './o-request.router.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { oCore } from '../../core/o-core.js';
|
|
2
|
+
import { oAddress } from '../o-address.js';
|
|
3
|
+
import { oRouterRequest } from '../o-request.router.js';
|
|
4
|
+
export interface ResolveRequest {
|
|
5
|
+
address: oAddress;
|
|
6
|
+
targetAddress: oAddress;
|
|
7
|
+
node: oCore;
|
|
8
|
+
request?: oRouterRequest;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=resolve.request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.request.d.ts","sourceRoot":"","sources":["../../../../../../o-core/src/router/interfaces/resolve.request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,QAAQ,CAAC;IAClB,aAAa,EAAE,QAAQ,CAAC;IACxB,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { oAddress } from '../o-address.js';
|
|
2
|
+
import { oRouterRequest } from '../o-request.router.js';
|
|
3
|
+
export interface RouteResponse {
|
|
4
|
+
nextHopAddress: oAddress;
|
|
5
|
+
targetAddress: oAddress;
|
|
6
|
+
requestOverride?: oRouterRequest;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=route.response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.response.d.ts","sourceRoot":"","sources":["../../../../../../o-core/src/router/interfaces/route.response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,QAAQ,CAAC;IACzB,aAAa,EAAE,QAAQ,CAAC;IACxB,eAAe,CAAC,EAAE,cAAc,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { oAddress } from './o-address.js';
|
|
2
|
+
import { oObject } from '../core/o-object.js';
|
|
3
|
+
import { oTransport } from '../transports/o-transport.js';
|
|
4
|
+
import { TransportType } from '../transports/interfaces/transport-type.enum.js';
|
|
5
|
+
import { RouteResponse } from './interfaces/route.response.js';
|
|
6
|
+
import { ResolveRequest } from './interfaces/resolve.request.js';
|
|
7
|
+
export declare abstract class oAddressResolver extends oObject {
|
|
8
|
+
protected readonly address: oAddress;
|
|
9
|
+
constructor(address: oAddress);
|
|
10
|
+
get customTransports(): oTransport[];
|
|
11
|
+
get transportTypes(): TransportType[];
|
|
12
|
+
resolve(request: ResolveRequest): Promise<RouteResponse>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=o-address-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"o-address-resolver.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/router/o-address-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,8BAAsB,gBAAiB,SAAQ,OAAO;IACxC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ;gBAAjB,OAAO,EAAE,QAAQ;IAIhD,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAEnC;IAED,IAAI,cAAc,IAAI,aAAa,EAAE,CAEpC;IAEK,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAM/D"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { oObject } from '../core/o-object.js';
|
|
2
|
+
export class oAddressResolver extends oObject {
|
|
3
|
+
constructor(address) {
|
|
4
|
+
super();
|
|
5
|
+
this.address = address;
|
|
6
|
+
}
|
|
7
|
+
get customTransports() {
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
get transportTypes() {
|
|
11
|
+
return this.customTransports.map((transport) => transport.type);
|
|
12
|
+
}
|
|
13
|
+
async resolve(request) {
|
|
14
|
+
return {
|
|
15
|
+
nextHopAddress: request.address,
|
|
16
|
+
targetAddress: request.address,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CID } from 'multiformats';
|
|
2
|
+
import { oObject } from '../core/o-object.js';
|
|
3
|
+
import { oTransport } from '../transports/o-transport.js';
|
|
4
|
+
export declare class oAddress extends oObject {
|
|
5
|
+
readonly value: string;
|
|
6
|
+
transports: oTransport[];
|
|
7
|
+
constructor(value: string, transports?: oTransport[]);
|
|
8
|
+
get libp2pTransports(): oTransport[];
|
|
9
|
+
get customTransports(): oTransport[];
|
|
10
|
+
equals(other: oAddress): boolean;
|
|
11
|
+
transportsEqual(other: oAddress): boolean;
|
|
12
|
+
setTransports(transports: oTransport[]): void;
|
|
13
|
+
validate(): boolean;
|
|
14
|
+
get paths(): string;
|
|
15
|
+
get protocol(): string;
|
|
16
|
+
get root(): string;
|
|
17
|
+
toStaticAddress(): oAddress;
|
|
18
|
+
toRootAddress(): oAddress;
|
|
19
|
+
toString(): string;
|
|
20
|
+
toJSON(): {
|
|
21
|
+
value: string;
|
|
22
|
+
transports: string[];
|
|
23
|
+
};
|
|
24
|
+
supportsTransport(transport: oTransport): boolean;
|
|
25
|
+
toCID(): Promise<CID>;
|
|
26
|
+
static equals(a: oAddress, b: oAddress): boolean;
|
|
27
|
+
static leader(): oAddress;
|
|
28
|
+
static lane(): oAddress;
|
|
29
|
+
static registry(): oAddress;
|
|
30
|
+
static isStatic(address: oAddress): boolean;
|
|
31
|
+
static next(address: oAddress, targetAddress: oAddress): oAddress;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=o-address.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"o-address.d.ts","sourceRoot":"","sources":["../../../../../o-core/src/router/o-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI1D,qBAAa,QAAS,SAAQ,OAAO;aAIjB,KAAK,EAAE,MAAM;IAHxB,UAAU,EAAE,UAAU,EAAE,CAAC;gBAGd,KAAK,EAAE,MAAM,EAC7B,UAAU,GAAE,UAAU,EAAO;IAM/B,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAEnC;IAED,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAEnC;IAED,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIhC,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAMzC,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI;IAI7C,QAAQ,IAAI,OAAO;IAOnB,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,eAAe,IAAI,QAAQ;IAQ3B,aAAa,IAAI,QAAQ;IAQzB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI;QACR,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB;IAOD,iBAAiB,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO;IAI3C,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;IAI3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO;IAIhD,MAAM,CAAC,MAAM,IAAI,QAAQ;IAIzB,MAAM,CAAC,IAAI,IAAI,QAAQ;IAIvB,MAAM,CAAC,QAAQ,IAAI,QAAQ;IAI3B,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO;IAI3C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,GAAG,QAAQ;CAkClE"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { oObject } from '../core/o-object.js';
|
|
2
|
+
import { TransportType } from '../transports/index.js';
|
|
3
|
+
import { CoreUtils } from '../utils/core.utils.js';
|
|
4
|
+
import { RestrictedAddresses } from './enums/restricted-addresses.enum.js';
|
|
5
|
+
export class oAddress extends oObject {
|
|
6
|
+
constructor(value, transports = []) {
|
|
7
|
+
super(value);
|
|
8
|
+
this.value = value;
|
|
9
|
+
this.transports = transports;
|
|
10
|
+
}
|
|
11
|
+
get libp2pTransports() {
|
|
12
|
+
return this.transports.filter((t) => t.type === TransportType.LIBP2P) || [];
|
|
13
|
+
}
|
|
14
|
+
get customTransports() {
|
|
15
|
+
return this.transports.filter((t) => t.type === TransportType.CUSTOM) || [];
|
|
16
|
+
}
|
|
17
|
+
equals(other) {
|
|
18
|
+
return this.value === other.value && this.transportsEqual(other);
|
|
19
|
+
}
|
|
20
|
+
transportsEqual(other) {
|
|
21
|
+
return this.transports.every((t) => other.transports.some((t2) => t.toString() === t2.toString()));
|
|
22
|
+
}
|
|
23
|
+
setTransports(transports) {
|
|
24
|
+
this.transports = transports;
|
|
25
|
+
}
|
|
26
|
+
validate() {
|
|
27
|
+
if (!this.value?.startsWith('o://')) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
get paths() {
|
|
33
|
+
return this.value.replace('o://', '');
|
|
34
|
+
}
|
|
35
|
+
get protocol() {
|
|
36
|
+
return this.value.replace('o://', '/o/');
|
|
37
|
+
}
|
|
38
|
+
get root() {
|
|
39
|
+
return 'o://' + this.paths.split('/')[0];
|
|
40
|
+
}
|
|
41
|
+
toStaticAddress() {
|
|
42
|
+
const paths = this.paths.split('/');
|
|
43
|
+
if (paths.length === 0) {
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
return new oAddress(`o://${paths[paths.length - 1]}`, this.transports);
|
|
47
|
+
}
|
|
48
|
+
toRootAddress() {
|
|
49
|
+
const paths = this.paths.split('/');
|
|
50
|
+
if (paths.length === 0) {
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
return new oAddress(`o://${paths[0]}`);
|
|
54
|
+
}
|
|
55
|
+
toString() {
|
|
56
|
+
return this.value;
|
|
57
|
+
}
|
|
58
|
+
toJSON() {
|
|
59
|
+
return {
|
|
60
|
+
value: this.value,
|
|
61
|
+
transports: this.transports.map((t) => t.toString()),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
supportsTransport(transport) {
|
|
65
|
+
return this.transports.some((t) => t.type === transport.type);
|
|
66
|
+
}
|
|
67
|
+
async toCID() {
|
|
68
|
+
return await CoreUtils.toCID({ address: this.toString() });
|
|
69
|
+
}
|
|
70
|
+
static equals(a, b) {
|
|
71
|
+
return a.value === b.value;
|
|
72
|
+
}
|
|
73
|
+
static leader() {
|
|
74
|
+
return new oAddress(RestrictedAddresses.LEADER);
|
|
75
|
+
}
|
|
76
|
+
static lane() {
|
|
77
|
+
return new oAddress(RestrictedAddresses.LANE);
|
|
78
|
+
}
|
|
79
|
+
static registry() {
|
|
80
|
+
return new oAddress(RestrictedAddresses.REGISTRY);
|
|
81
|
+
}
|
|
82
|
+
static isStatic(address) {
|
|
83
|
+
return address.value.startsWith(RestrictedAddresses.LEADER) === false;
|
|
84
|
+
}
|
|
85
|
+
static next(address, targetAddress) {
|
|
86
|
+
const remainingPath = targetAddress.protocol.replace(address.protocol + '/', '');
|
|
87
|
+
// we are at the destination
|
|
88
|
+
if (remainingPath === '') {
|
|
89
|
+
return address;
|
|
90
|
+
}
|
|
91
|
+
// if remainingPath equals targetAddress.protocol, the replace didn't match
|
|
92
|
+
// this means we're either at destination (addresses are equal) or on different branch
|
|
93
|
+
if (remainingPath === targetAddress.protocol) {
|
|
94
|
+
// check if we're actually at the destination
|
|
95
|
+
if (address.value === targetAddress.value) {
|
|
96
|
+
return address;
|
|
97
|
+
}
|
|
98
|
+
// we're on a different branch, need to go back to leader for resolution
|
|
99
|
+
if (!address.equals(oAddress.leader())) {
|
|
100
|
+
return oAddress.leader();
|
|
101
|
+
}
|
|
102
|
+
// we ARE the leader, and we can't make progress - stay at leader for resolution
|
|
103
|
+
return address;
|
|
104
|
+
}
|
|
105
|
+
// do we need to go back to the leader?
|
|
106
|
+
if (!address.equals(oAddress.leader()) && // if we are a leader, do not got back to self
|
|
107
|
+
oAddress.isStatic(targetAddress)) {
|
|
108
|
+
return oAddress.leader();
|
|
109
|
+
}
|
|
110
|
+
// we need to go to the child address
|
|
111
|
+
const nextHop = remainingPath.replace('/o/', '').split('/').reverse().pop();
|
|
112
|
+
return new oAddress(address.value + '/' + nextHop);
|
|
113
|
+
}
|
|
114
|
+
}
|