diff --git a/NodeKit/NodeKit/Chains/ChainBuilder.swift b/NodeKit/NodeKit/Chains/ChainBuilder.swift index 15898ab8..fdd2488c 100644 --- a/NodeKit/NodeKit/Chains/ChainBuilder.swift +++ b/NodeKit/NodeKit/Chains/ChainBuilder.swift @@ -114,7 +114,7 @@ open class URLChainBuilder: ChainConfigBuilder, ChainBu /// - Parameter root: The chain to which nodes will be added open func metadataConnectorChain( root: any AsyncNode - ) -> some AsyncNode { + ) -> any AsyncNode { let urlRequestEncodingNode = URLJsonRequestEncodingNode(next: root) let urlRequestTrasformatorNode = URLRequestTrasformatorNode(next: urlRequestEncodingNode, method: method) let requestEncoderNode = RequestEncoderNode(next: urlRequestTrasformatorNode, encoding: encoding) diff --git a/NodeKit/NodeKit/Core/Node/Combine/Subscription/AsyncNodeSubscription.swift b/NodeKit/NodeKit/Core/Node/Combine/Subscription/AsyncNodeSubscription.swift index 51f0bb42..7a471c3a 100644 --- a/NodeKit/NodeKit/Core/Node/Combine/Subscription/AsyncNodeSubscription.swift +++ b/NodeKit/NodeKit/Core/Node/Combine/Subscription/AsyncNodeSubscription.swift @@ -8,6 +8,7 @@ /// Combine subscription for ``AsyncNode``. /// Contains base implementation, inheriting from `BaseSubscription`. +/// - Warning: There is small delay between `subscriber.receive(_ input` and `subscriber.receive(completion:` to make sure that input will be published in publisher before completion. final class AsyncNodeSubscription>: BaseSubscription, S> { @@ -30,6 +31,7 @@ final class AsyncNodeSubscription>: return Task { let result = await node.process(input, logContext: logContext) _ = subscriber.receive(result) + try? await Task.sleep(nanoseconds: 1_000_000) subscriber.receive(completion: .finished) } } diff --git a/NodeKit/NodeKit/Layers/InputProcessingLayer/VoidIONode.swift b/NodeKit/NodeKit/Layers/InputProcessingLayer/VoidIONode.swift index 90be5da4..a877e7ef 100644 --- a/NodeKit/NodeKit/Layers/InputProcessingLayer/VoidIONode.swift +++ b/NodeKit/NodeKit/Layers/InputProcessingLayer/VoidIONode.swift @@ -12,7 +12,7 @@ open class VoidIONode: AsyncNode { let next: any AsyncNode - init(next: some AsyncNode) { + public init(next: some AsyncNode) { self.next = next } diff --git a/NodeKit/NodeKit/Layers/InputProcessingLayer/VoidOutputNode.swift b/NodeKit/NodeKit/Layers/InputProcessingLayer/VoidOutputNode.swift index 42f0e6dc..d2b6b75b 100644 --- a/NodeKit/NodeKit/Layers/InputProcessingLayer/VoidOutputNode.swift +++ b/NodeKit/NodeKit/Layers/InputProcessingLayer/VoidOutputNode.swift @@ -12,7 +12,7 @@ open class VoidOutputNode: AsyncNode where Input: DTOEncodable, Input.DTO let next: any AsyncNode - init(next: some AsyncNode) { + public init(next: some AsyncNode) { self.next = next } diff --git a/NodeKit/NodeKit/Layers/ResponseProcessingLayer/ResponseDataParserNode.swift b/NodeKit/NodeKit/Layers/ResponseProcessingLayer/ResponseDataParserNode.swift index 2f2359d1..be8b4d4c 100644 --- a/NodeKit/NodeKit/Layers/ResponseProcessingLayer/ResponseDataParserNode.swift +++ b/NodeKit/NodeKit/Layers/ResponseProcessingLayer/ResponseDataParserNode.swift @@ -41,7 +41,7 @@ open class ResponseDataParserNode: AsyncNode { await parse(with: data, logContext: logContext) .asyncFlatMap { json, logMessage in let logMsg = logMessage + .lineTabDeilimeter - var log = LogChain(logMsg, id: objectName, logType: .info, order: LogOrder.responseDataParserNode) + let log = LogChain(logMsg, id: objectName, logType: .info, order: LogOrder.responseDataParserNode) guard let next = next else { await logContext.add(log)