refactor(browser): unify fill field normalization

This commit is contained in:
Peter Steinberger
2026-02-26 22:17:58 +01:00
parent 69b2f8cd8b
commit eaa9e1c661
6 changed files with 94 additions and 53 deletions

View File

@@ -1,5 +1,9 @@
import type { Command } from "commander";
import type { BrowserFormField } from "../../browser/client-actions-core.js";
import {
normalizeBrowserFormField,
normalizeBrowserFormFieldValue,
} from "../../browser/form-fields.js";
import { danger } from "../../globals.js";
import { defaultRuntime } from "../../runtime.js";
import { callBrowserRequest, type BrowserParentOpts } from "../browser-cli-shared.js";
@@ -68,21 +72,16 @@ export async function readFields(opts: {
throw new Error(`fields[${index}] must be an object`);
}
const rec = entry as Record<string, unknown>;
const ref = typeof rec.ref === "string" ? rec.ref.trim() : "";
const type = typeof rec.type === "string" ? rec.type.trim() : "";
if (!ref) {
const parsedField = normalizeBrowserFormField(rec);
if (!parsedField) {
throw new Error(`fields[${index}] must include ref`);
}
const resolvedType = type || "text";
if (
typeof rec.value === "string" ||
typeof rec.value === "number" ||
typeof rec.value === "boolean"
rec.value === undefined ||
rec.value === null ||
normalizeBrowserFormFieldValue(rec.value) !== undefined
) {
return { ref, type: resolvedType, value: rec.value };
}
if (rec.value === undefined || rec.value === null) {
return { ref, type: resolvedType };
return parsedField;
}
throw new Error(`fields[${index}].value must be string, number, boolean, or null`);
});