Add convenience functions to produce CheckSchemaResult values

This commit is contained in:
Michael B. Gale
2026-07-10 13:18:45 +01:00
parent e4752e74e1
commit 8d8f054dfa
2 changed files with 42 additions and 10 deletions

22
lib/entry-points.js generated
View File

@@ -144527,7 +144527,7 @@ function array(validator) {
return {
validate,
check: (val, path29) => {
const result = { valid: true, unknownKeys: [] };
const result = successfulCheckSchema();
if (!isArray(val)) {
result.valid = false;
return result;
@@ -144554,7 +144554,7 @@ function object(schema) {
},
check: (val, path29) => {
if (!isObject(val)) {
return { valid: false, unknownKeys: [] };
return invalidCheckSchema();
}
return checkSchema(schema, val, {}, path29);
},
@@ -144568,7 +144568,7 @@ function optionalOrNull(validator) {
},
check: (val, path29) => {
if (val === void 0 || val === null) {
return { valid: true, unknownKeys: [] };
return successfulCheckSchema();
}
return validator.check(val, path29);
},
@@ -144582,7 +144582,7 @@ function optional(validator) {
},
check: (val, path29) => {
if (val === void 0) {
return { valid: true, unknownKeys: [] };
return successfulCheckSchema();
}
return validator.check(val, path29);
},
@@ -144593,8 +144593,20 @@ function validateSchema(schema, obj) {
const result = checkSchema(schema, obj, { failFast: true });
return result.valid;
}
function successfulCheckSchema() {
return {
valid: true,
unknownKeys: []
};
}
function invalidCheckSchema() {
return {
valid: false,
unknownKeys: []
};
}
function checkSchema(schema, obj, options = {}, path29 = "") {
const result = { valid: true, unknownKeys: [] };
const result = successfulCheckSchema();
const inputKeys = new Set(Object.keys(obj));
for (const [key, validator] of Object.entries(schema)) {
const hasKey = key in obj;

View File

@@ -86,7 +86,7 @@ export function array<T>(validator: Validator<T>) {
return {
validate,
check: (val: unknown, path: string) => {
const result: CheckSchemaResult = { valid: true, unknownKeys: [] };
const result: CheckSchemaResult = successfulCheckSchema();
if (!isArray(val)) {
result.valid = false;
@@ -123,7 +123,7 @@ export function object<
},
check: (val, path) => {
if (!isObject(val)) {
return { valid: false, unknownKeys: [] };
return invalidCheckSchema();
}
return checkSchema(schema, val, {}, path);
},
@@ -142,7 +142,7 @@ export function optionalOrNull<T>(validator: Validator<T>) {
},
check: (val, path) => {
if (val === undefined || val === null) {
return { valid: true, unknownKeys: [] };
return successfulCheckSchema();
}
return validator.check(val, path);
},
@@ -161,7 +161,7 @@ export function optional<T>(validator: Validator<T>) {
},
check: (val, path) => {
if (val === undefined) {
return { valid: true, unknownKeys: [] };
return successfulCheckSchema();
}
return validator.check(val, path);
},
@@ -214,13 +214,33 @@ export interface CheckSchemaResult {
unknownKeys: string[];
}
/**
* Convenience function to produce a `CheckSchemaResult` where `valid: true`.
*/
function successfulCheckSchema(): CheckSchemaResult {
return {
valid: true,
unknownKeys: [],
};
}
/**
* Convenience function to produce a `CheckSchemaResult` where `valid: false`.
*/
function invalidCheckSchema(): CheckSchemaResult {
return {
valid: false,
unknownKeys: [],
};
}
export function checkSchema<S extends Schema>(
schema: S,
obj: UnvalidatedObject<any>,
options: CheckSchemaOptions = {},
path: string = "",
): CheckSchemaResult {
const result: CheckSchemaResult = { valid: true, unknownKeys: [] };
const result: CheckSchemaResult = successfulCheckSchema();
const inputKeys = new Set(Object.keys(obj));
for (const [key, validator] of Object.entries(schema)) {