From f0d33b9b21b3c739ab20d8e2b60c39694350321a Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Wed, 6 Mar 2024 12:14:10 -0300 Subject: src/hero.mjs: Add makeLineEmitter() --- src/hero.mjs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src') diff --git a/src/hero.mjs b/src/hero.mjs index 6b6fa77..8cbbe36 100644 --- a/src/hero.mjs +++ b/src/hero.mjs @@ -338,6 +338,25 @@ export const rmIf = path => { export const mkfifo = path => child_process.execFileSync("mkfifo", [path]); +export const makeLineEmitter = fn => { + let data = ""; + return chunk => { + const segments = chunk.split("\n"); + assert.ok(segments.length > 0); + + if (segments.length === 1) { + data += segments[0]; + return; + } + + [ + data + u.first(segments), + ...u.butlast(u.rest(segments)), + ].forEach(fn); + data = u.last(segments); + }; +}; + export const buildRoutes = (routes, globalInterceptors = []) => routes.reduce( (acc, [methods, path, handlerFn, interceptors = []]) => -- cgit v1.2.3