http-kit

0.5.0 • Public • Published

Http Kit

Features

  • Supports interceptors
  • Uses Native Web Platform APIs
  • Type safety, correctly typed responses and errors
  • Cross platform i.e Deno, Node etc using adapters

Getting started

npm i http-kit @http-kit/client
npm i @effect/io @effect/data
import * as Http from "http-kit";
import * as HttpClient from "@http-kit/client";
import * as FetchAdapter from "http-kit/fetch";

const client = new HttpClient.Builder()
  .setBaseUrl("https://reqres.in/api")
  .setAdapter(FetchAdapter.adapter)
  .build();

const getUser = Effect.gen(function* (_) {
  const http = yield* _(HttpClient.HttpClient);

  return yield* _(
    http.get("/users/2"),
    Http.filterStatusOk,
    Http.toJson,
    Effect.map((_) => _.data),
    Effect.flatMap(S.parse(User))
  );
}).pipe(
  Effect.tap((data) => Effect.sync(() => console.log(data))),
  Effect.tapErrorCause((error) => Effect.sync(() => console.error(error)))
);

Effect.runFork(
  pipe(
    getUser,
    Effect.provideLayer(client.makeLayer()),
    Logger.withMinimumLogLevel(LoggerLevel.Debug)
  )
);

Examples

link

Package Sidebar

Install

npm i http-kit

Weekly Downloads

1

Version

0.5.0

License

MIT

Unpacked Size

19.7 kB

Total Files

39

Last publish

Collaborators

  • joshamaju