refactor(net): share FormData shape guard · openclaw/openclaw@a07d92f
vincentkoc
·
2026-06-23
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
|
| 1 | +export function isFormDataLike(value: unknown): value is FormData { |
| 2 | +return ( |
| 3 | +typeof value === "object" && |
| 4 | +value !== null && |
| 5 | +typeof (value as FormData).entries === "function" && |
| 6 | +(value as { [Symbol.toStringTag]?: unknown })[Symbol.toStringTag] === "FormData" |
| 7 | +); |
| 8 | +} |
| Original file line number | Diff line number | Diff line change |
|---|
@@ -3,6 +3,7 @@
|
3 | 3 | import { logWarn } from "../../logger.js"; |
4 | 4 | import { formatErrorMessage } from "../errors.js"; |
5 | 5 | import { normalizeHeadersInitForFetch } from "../fetch-headers.js"; |
| 6 | +import { isFormDataLike } from "./form-data.js"; |
6 | 7 | import { |
7 | 8 | addActiveManagedProxyTlsOptions, |
8 | 9 | resolveManagedEnvHttpProxyAgentOptions, |
@@ -15,15 +16,6 @@ type ProxyFetchWithMetadata = typeof fetch & {
|
15 | 16 | [PROXY_FETCH_PROXY_URL]?: string; |
16 | 17 | }; |
17 | 18 | |
18 | | -function isFormDataLike(value: unknown): value is FormData { |
19 | | -return ( |
20 | | -typeof value === "object" && |
21 | | -value !== null && |
22 | | -typeof (value as FormData).entries === "function" && |
23 | | -(value as { [Symbol.toStringTag]?: unknown })[Symbol.toStringTag] === "FormData" |
24 | | -); |
25 | | -} |
26 | | - |
27 | 19 | type UndiciFormDataCtor = NonNullable<UndiciRuntimeDeps["FormData"]>; |
28 | 20 | type UndiciFormDataInstance = InstanceType<UndiciFormDataCtor>; |
29 | 21 | |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -2,6 +2,7 @@
|
2 | 2 | // headers/FormData before calling the runtime fetch implementation. |
3 | 3 | import type { Dispatcher } from "undici"; |
4 | 4 | import { normalizeHeadersInitForFetch } from "../fetch-headers.js"; |
| 5 | +import { isFormDataLike } from "./form-data.js"; |
5 | 6 | import { loadUndiciRuntimeDeps, type UndiciRuntimeDeps } from "./undici-runtime.js"; |
6 | 7 | |
7 | 8 | export type DispatcherAwareRequestInit = RequestInit & { dispatcher?: Dispatcher }; |
@@ -12,15 +13,6 @@ type RuntimeFormDataCtor = NonNullable<UndiciRuntimeDeps["FormData"]>;
|
12 | 13 | |
13 | 14 | type FormDataEntryValueWithOptionalName = FormDataEntryValue & { name?: string }; |
14 | 15 | |
15 | | -function isFormDataLike(value: unknown): value is FormData { |
16 | | -return ( |
17 | | -typeof value === "object" && |
18 | | -value !== null && |
19 | | -typeof (value as FormData).entries === "function" && |
20 | | -(value as { [Symbol.toStringTag]?: unknown })[Symbol.toStringTag] === "FormData" |
21 | | -); |
22 | | -} |
23 | | - |
24 | 16 | function normalizeRuntimeFormData( |
25 | 17 | body: unknown, |
26 | 18 | RuntimeFormData: RuntimeFormDataCtor | undefined, |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。