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.

معلومات المصدر

المستودع
UsefulSoftwareCo/executor
آخر نشاط في المصدر
٦ مايو ٢٠٢٦ في ١٩:١٣
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٤٬١٨٨
التفرعات
٣٧١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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 }); ```
عرض على GitHub