mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-28 09:33:06 +00:00
fix(config): support uri formats in schema validation
This commit is contained in:
@@ -5,6 +5,15 @@ import { sanitizeTerminalText } from "../terminal/safe-text.js";
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
type AjvLike = {
|
||||
addFormat: (
|
||||
name: string,
|
||||
format:
|
||||
| RegExp
|
||||
| {
|
||||
type?: string;
|
||||
validate: (value: string) => boolean;
|
||||
},
|
||||
) => AjvLike;
|
||||
compile: (schema: Record<string, unknown>) => ValidateFunction;
|
||||
};
|
||||
const ajvSingletons = new Map<"default" | "defaults", AjvLike>();
|
||||
@@ -25,6 +34,19 @@ function getAjv(mode: "default" | "defaults"): AjvLike {
|
||||
removeAdditional: false,
|
||||
...(mode === "defaults" ? { useDefaults: true } : {}),
|
||||
});
|
||||
instance.addFormat("uri", {
|
||||
type: "string",
|
||||
validate: (value: string) => {
|
||||
try {
|
||||
// Accept absolute URIs so generated config schemas can keep JSON Schema
|
||||
// `format: "uri"` without noisy AJV warnings during validation/build.
|
||||
new URL(value);
|
||||
return true;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
});
|
||||
ajvSingletons.set(mode, instance);
|
||||
return instance;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user