opencode-agent[bot] 3 mesiacov pred
rodič
commit
6039b894c5

+ 2 - 2
packages/http-recorder/README.md

@@ -196,8 +196,8 @@ type RecordReplayOptions = {
 
 ## Layout
 
-| File           | Purpose                                                                          |
-| -------------- | -------------------------------------------------------------------------------- |
+| File           | Purpose                                                                     |
+| -------------- | --------------------------------------------------------------------------- |
 | `effect.ts`    | `cassetteLayer` / `recordingLayer` — the `HttpClient` adapter.              |
 | `websocket.ts` | `makeWebSocketExecutor` — WebSocket record/replay.                          |
 | `cassette.ts`  | `Cassette.Service` — `fileSystem` / `memory` adapters, error types.         |

+ 6 - 1
packages/http-recorder/src/cassette.ts

@@ -120,7 +120,12 @@ export const fileSystem = (
             Effect.map((files) =>
               files
                 .filter((file) => file.endsWith(".json"))
-                .map((file) => path.relative(directory, file).replace(/\\/g, "/").replace(/\.json$/, ""))
+                .map((file) =>
+                  path
+                    .relative(directory, file)
+                    .replace(/\\/g, "/")
+                    .replace(/\.json$/, ""),
+                )
                 .toSorted((a, b) => a.localeCompare(b)),
             ),
           ),

+ 3 - 1
packages/http-recorder/src/effect.ts

@@ -102,7 +102,9 @@ export const recordingLayer = (
             }
             yield* cassetteService
               .append(name, interaction, options.metadata)
-              .pipe(Effect.catchTag("UnsafeCassetteError", (error) => Effect.fail(transportError(request, error.message))))
+              .pipe(
+                Effect.catchTag("UnsafeCassetteError", (error) => Effect.fail(transportError(request, error.message))),
+              )
             return HttpClientResponse.fromWeb(
               request,
               new Response(decodeResponseBody(interaction.response), interaction.response),

+ 17 - 4
packages/http-recorder/test/record-replay.test.ts

@@ -326,7 +326,10 @@ describe("http-recorder", () => {
 
   test("auto mode records to disk when the cassette is missing", async () => {
     const directory = fs.mkdtempSync(path.join(os.tmpdir(), "http-recorder-auto-record-"))
-    using server = Bun.serve({ port: 0, fetch: () => new Response('{"reply":"recorded"}', { headers: { "content-type": "application/json" } }) })
+    using server = Bun.serve({
+      port: 0,
+      fetch: () => new Response('{"reply":"recorded"}', { headers: { "content-type": "application/json" } }),
+    })
     const url = `http://127.0.0.1:${server.port}/echo`
     // CI=true forces replay; clear it so we exercise the local-dev auto-record path.
     const previous = process.env.CI
@@ -370,10 +373,18 @@ describe("http-recorder", () => {
   test("Cassette.list enumerates recorded cassette names", async () => {
     const directory = fs.mkdtempSync(path.join(os.tmpdir(), "http-recorder-list-"))
     await seedCassetteDirectory(directory, "alpha/one", [
-      { transport: "http", request: { method: "GET", url: "https://x.test/a", headers: {}, body: "" }, response: { status: 200, headers: {}, body: "a" } },
+      {
+        transport: "http",
+        request: { method: "GET", url: "https://x.test/a", headers: {}, body: "" },
+        response: { status: 200, headers: {}, body: "a" },
+      },
     ])
     await seedCassetteDirectory(directory, "beta", [
-      { transport: "http", request: { method: "GET", url: "https://x.test/b", headers: {}, body: "" }, response: { status: 200, headers: {}, body: "b" } },
+      {
+        transport: "http",
+        request: { method: "GET", url: "https://x.test/b", headers: {}, body: "" },
+        response: { status: 200, headers: {}, body: "b" },
+      },
     ])
 
     const names = await Effect.runPromise(
@@ -415,7 +426,9 @@ describe("http-recorder", () => {
                   transport: "websocket",
                   open: { url: "wss://example.test/binary", headers: {} },
                   client: [],
-                  server: [{ kind: "binary", body: Buffer.from(binaryServer).toString("base64"), bodyEncoding: "base64" }],
+                  server: [
+                    { kind: "binary", body: Buffer.from(binaryServer).toString("base64"), bodyEncoding: "base64" },
+                  ],
                 },
               ],
             }),