DenisFrezzato / hyper-ts

Type safe middleware architecture for HTTP servers
https://denisfrezzato.github.io/hyper-ts/
MIT License
391 stars 18 forks source link

`pipeStream`: use `never` as default for type parameter `E` #94

Open OliverJAsh opened 5 months ago

OliverJAsh commented 5 months ago

This fixes the following type error:

import * as H from 'hyper-ts';
import * as HRM from 'hyper-ts/ReaderMiddleware';

import { pipe } from 'shared/facades/function';

type Deps = {};

declare const stream: NodeJS.ReadableStream;
declare const onError: (reason: unknown) => ReaderIO<Deps, void>;

declare const a: HRM.ReaderMiddleware<
  Deps,
  H.StatusOpen,
  H.BodyOpen,
  number,
  void
>;

// Type 'ReaderMiddleware<Deps, StatusOpen, ResponseEnded, unknown, void>' is not assignable to type 'ReaderMiddleware<Deps, StatusOpen, ResponseEnded, number, void>'.
//   Type 'unknown' is not assignable to type 'number'.
const b: HRM.ReaderMiddleware<
  Deps,
  H.StatusOpen,
  H.ResponseEnded,
  number,
  void
> = pipe(
  a,
  HRM.ichainW(() => HRM.pipeStream(stream, onError)),
);

/cc @mlegenhausen