Skip to main content

wrdn-effect-raw-fetch-boundary

Route HTTP through Effect boundaries instead of raw fetch. Use when lint flags executor/no-raw-fetch or when adding networked protocol/provider code.

Informações da origem

Repositório
UsefulSoftwareCo/executor
Última atividade na origem
6 de maio de 2026 às 19:13
Idioma detectado do SKILL.md
inglês
Estrelas
4.188
Forks
371

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
wrdn-effect-raw-fetch-boundary
description
Route HTTP through Effect boundaries instead of raw fetch. Use when lint flags executor/no-raw-fetch or when adding networked protocol/provider code.
allowed-tools
Read Grep Glob Bash
HTTP in core SDK and protocol plugins should go through Effect services so tests can replace real networks with local protocol fixtures or mock `HttpClient` layers. ## Fix Shape - Prefer `effect/unstable/http` `HttpClient` and `HttpClientRequest` for ordinary HTTP calls. - Accept a `Layer.Layer<HttpClient.HttpClient>` option on plugin/provider code when callers need to inject a test client. - In tests, use real local servers plus `FetchHttpClient.layer` or a captured `HttpClient` service from the test layer. - Do not add fetch-shaped abstractions in SDK or plugin seams. If a third-party library truly only accepts `fetch`, keep the adapter in the owning package, name the forced boundary explicitly, and delegate internally to Effect `HttpClient`. - Do not type new protocol/plugin seams as `typeof globalThis.fetch`; keep the ambient runtime boundary out of domain and test APIs. - Do not patch `globalThis.fetch`. Replace those tests with a local server, `HttpClient` layer, or the approved Effect-backed adapter. - Do not add a broad allowlist entry unless the file is a platform entrypoint or a temporary migration target. ## Approved Boundaries - Worker/handler objects whose public API must expose a `fetch` method. - Test calls to a worker or Miniflare binding's `.fetch(...)` method. - Small adapters for libraries that only accept `fetch`, if the implementation delegates to Effect `HttpClient`. - Browser UI event handlers may remain raw only until app-side boundaries are classified; prefer SDK/client APIs where available. ## Bad ```ts const response = await fetch(url); ``` ```ts const fetchImpl = options.fetch ?? globalThis.fetch; ``` ## Good ```ts const client = yield * HttpClient.HttpClient; const response = yield * client.execute(HttpClientRequest.get(url)); ``` ```ts const plugin = graphqlPlugin({ httpClientLayer: testHttpClientLayer }); ```
Ver no GitHub