Skip to content

Commit 05744f1

Browse files
committed
fix(fmodata): tighten defect guard and header merge
1 parent 58b19c6 commit 05744f1

2 files changed

Lines changed: 8 additions & 9 deletions

File tree

packages/fmodata/src/client/update-builder.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,15 @@ export class ExecutableUpdateBuilder<
176176
this.table && shouldUseIds ? transformFieldNamesToIds(validatedData, this.table) : validatedData;
177177

178178
// Step 3: Make PATCH request via DI
179+
const requestHeaders = new Headers(callerHeaders);
180+
for (const [key, value] of Object.entries(headers)) {
181+
requestHeaders.set(key, value);
182+
}
183+
179184
const response = yield* requestFromService(url, {
180185
...requestOptions,
181186
method: "PATCH",
182-
headers: {
183-
...(callerHeaders || {}),
184-
...headers,
185-
},
187+
headers: requestHeaders,
186188
body: JSON.stringify(transformedData),
187189
});
188190

packages/fmodata/src/effect.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import type { FFetchOptions } from "@fetchkit/ffetch";
1212
import { Effect, Schedule } from "effect";
1313
import type { FMODataErrorType } from "./errors";
14-
import { BuilderInvariantError, isTransientError } from "./errors";
14+
import { BuilderInvariantError, isFMODataError, isTransientError } from "./errors";
1515
import type {
1616
FMODataLayer,
1717
HttpClient as HttpClientService,
@@ -63,10 +63,7 @@ export function runAsResult<T>(effect: Effect.Effect<T, FMODataErrorType>): Prom
6363
),
6464
).catch((defect) => ({
6565
data: undefined,
66-
error:
67-
defect instanceof Error
68-
? (defect as FMODataErrorType)
69-
: (new BuilderInvariantError("runAsResult", String(defect)) as FMODataErrorType),
66+
error: isFMODataError(defect) ? defect : new BuilderInvariantError("runAsResult", String(defect)),
7067
}));
7168
}
7269

0 commit comments

Comments
 (0)