Fix formatting

This commit is contained in:
Ola Hungerford
2025-02-27 22:08:04 -07:00
parent 44982e6c97
commit 82bbe58a46
3 changed files with 20 additions and 8 deletions

View File

@@ -16,7 +16,14 @@ export type JsonValue =
| { [key: string]: JsonValue }; | { [key: string]: JsonValue };
export type JsonSchemaType = { export type JsonSchemaType = {
type: "string" | "number" | "integer" | "boolean" | "array" | "object" | "null"; type:
| "string"
| "number"
| "integer"
| "boolean"
| "array"
| "object"
| "null";
description?: string; description?: string;
required?: boolean; required?: boolean;
default?: JsonValue; default?: JsonValue;
@@ -261,11 +268,11 @@ const DynamicJsonForm = ({
size="sm" size="sm"
onClick={() => { onClick={() => {
const defaultValue = generateDefaultValue( const defaultValue = generateDefaultValue(
propSchema.items as JsonSchemaType propSchema.items as JsonSchemaType,
); );
handleFieldChange(path, [ handleFieldChange(path, [
...arrayValue, ...arrayValue,
defaultValue ?? null defaultValue ?? null,
]); ]);
}} }}
title={ title={

View File

@@ -19,7 +19,9 @@ describe("generateDefaultValue", () => {
}); });
test("generates default boolean", () => { test("generates default boolean", () => {
expect(generateDefaultValue({ type: "boolean", required: true })).toBe(false); expect(generateDefaultValue({ type: "boolean", required: true })).toBe(
false,
);
}); });
test("generates default array", () => { test("generates default array", () => {
@@ -27,12 +29,16 @@ describe("generateDefaultValue", () => {
}); });
test("generates default empty object", () => { test("generates default empty object", () => {
expect(generateDefaultValue({ type: "object", required: true })).toEqual({}); expect(generateDefaultValue({ type: "object", required: true })).toEqual(
{},
);
}); });
test("generates default null for unknown types", () => { test("generates default null for unknown types", () => {
// @ts-expect-error Testing with invalid type // @ts-expect-error Testing with invalid type
expect(generateDefaultValue({ type: "unknown", required: true })).toBe(null); expect(generateDefaultValue({ type: "unknown", required: true })).toBe(
null,
);
}); });
test("generates object with properties", () => { test("generates object with properties", () => {

View File

@@ -7,7 +7,6 @@ import { JsonObject } from "./jsonPathUtils";
* @returns A default value matching the schema type, or null for non-required fields * @returns A default value matching the schema type, or null for non-required fields
*/ */
export function generateDefaultValue(schema: JsonSchemaType): JsonValue { export function generateDefaultValue(schema: JsonSchemaType): JsonValue {
if ("default" in schema) { if ("default" in schema) {
// Ensure we don't return undefined even if schema.default is undefined // Ensure we don't return undefined even if schema.default is undefined
return schema.default === undefined ? null : schema.default; return schema.default === undefined ? null : schema.default;
@@ -29,7 +28,7 @@ export function generateDefaultValue(schema: JsonSchemaType): JsonValue {
return []; return [];
case "object": { case "object": {
if (!schema.properties) return {}; if (!schema.properties) return {};
const obj: JsonObject = {}; const obj: JsonObject = {};
Object.entries(schema.properties) Object.entries(schema.properties)
.filter(([, prop]) => prop.required) .filter(([, prop]) => prop.required)