Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

http-kit

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

http-kit - npm Package Compare versions

Comparing version
0.3.0
to
0.3.1
+5
-3
dist/executor/mod.js

@@ -7,2 +7,3 @@ import { pipe } from "@effect/data/Function";

return E.gen(function* (s) {
var _a;
let mutable_request = request;

@@ -17,5 +18,6 @@ let request_response = request;

const run = interceptor.request.bind(interceptor);
const result = yield* s(E.logDebug("Executing interceptor"), E.flatMap(() => run(mutable_request)), E.tap(() => E.logDebug("Exiting interceptor")), E.annotateLogs("interceptor", name), E.annotateLogs("type", "Request"), E.withLogSpan("ms"));
const result = yield* s(E.logDebug("Interceptor ->"), E.annotateLogs("type", "Request"), E.annotateLogs("interceptor", name), E.flatMap(() => run(mutable_request)), E.tap(() => E.logDebug("<- Interceptor")), E.withLogSpan("ms"));
if (interpreter.isResponse(result)) {
request_response = result;
yield* s(E.logDebug("Request -> Response"));
break;

@@ -31,3 +33,3 @@ }

? request_response
: yield* s(E.logDebug("Executing request"), E.flatMap(() => interpreter.execute(mutable_request)), E.tap(() => E.logDebug("Request done")), E.withLogSpan("ms"));
: yield* s(E.logDebug("-> Request"), E.annotateLogs("url", mutable_request.url), E.annotateLogs("method", (_a = mutable_request.init.method) !== null && _a !== void 0 ? _a : "GET"), E.flatMap(() => interpreter.execute(mutable_request)), E.tap(() => E.logDebug("Response <-")), E.withLogSpan("ms"));
if (interceptors) {

@@ -39,3 +41,3 @@ for (const interceptor of interceptors) {

const run = interceptor.response.bind(interceptor);
mutable_response = yield* s(E.logDebug("Executing interceptor"), E.flatMap(() => run(mutable_response, mutable_request)), E.tap(() => E.logDebug("Exiting interceptor")), E.annotateLogs("interceptor", name), E.annotateLogs("type", "Response"), E.withLogSpan("ms"));
mutable_response = yield* s(E.logDebug("Interceptor ->"), E.annotateLogs("type", "Response"), E.annotateLogs("interceptor", name), E.flatMap(() => run(mutable_response, mutable_request)), E.tap(() => E.logDebug("<- Interceptor")), E.withLogSpan("ms"));
}

@@ -42,0 +44,0 @@ }

{
"name": "http-kit",
"version": "0.3.0",
"version": "0.3.1",
"type": "module",

@@ -5,0 +5,0 @@ "description": "Platform agnostic fetch kit for the Effect package",

@@ -5,8 +5,50 @@ # Http Kit

- Supports Request and Response interceptors
- Supports interceptors
- Uses Native Web Platform APIs
- Type safety, correctly typed responses and errors
- Cross platform i.e Deno, Node etc
- Inversion of control i.e Dependency injection
- Extendable using adapters
- Request and Response utilities
- Cross platform i.e Deno, Node etc using adapters
## Getting started
```bash
npm i http-kit @http-kit/client
npm i @effect/io @effect/data
```
```ts
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](playground/basic)