UNPKG

@withstudiocms/effect

Version:

Effect-TS Utilities for Astro

36 lines (35 loc) 1.01 kB
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 };