@withstudiocms/effect
Version:
Effect-TS Utilities for Astro
36 lines (35 loc) • 1.01 kB
JavaScript
import * as Cli from "@effect/cli";
import * as Platform from "@effect/platform";
import * as PlatformNode from "@effect/platform-node";
export * from "effect";
import { dual } from "effect/Function";
import { FetchHttpClient, HttpClient } from "@effect/platform";
import { Effect, Schedule } from "effect";
import { dual as dual2 } from "effect/Function";
const runEffect = async (effect) => await Effect.runPromise(effect);
const appendSearchParamsToUrl = dual2(3, (url, name, value) => {
url.searchParams.append(name, value);
return url;
});
class HTTPClient extends Effect.Service()("HTTPClient", {
dependencies: [FetchHttpClient.layer],
effect: Effect.gen(function* () {
const baseHttpClient = (yield* HttpClient.HttpClient).pipe(
HttpClient.retryTransient({
times: 3,
schedule: Schedule.spaced("3 second")
})
);
return baseHttpClient;
})
}) {
}
export {
Cli,
HTTPClient,
Platform,
PlatformNode,
appendSearchParamsToUrl,
dual,
runEffect
};