mirror of
https://github.com/Snigdha-OS/documentation.git
synced 2025-12-18 06:23:51 +01:00
25 lines
671 B
TypeScript
25 lines
671 B
TypeScript
import type {MacroKeywordDefinition} from "ajv"
|
|
import type {GetDefinition} from "./_types"
|
|
|
|
type RequiredKwd = "anyRequired" | "oneRequired"
|
|
|
|
export default function getRequiredDef(
|
|
keyword: RequiredKwd
|
|
): GetDefinition<MacroKeywordDefinition> {
|
|
return () => ({
|
|
keyword,
|
|
type: "object",
|
|
schemaType: "array",
|
|
macro(schema: string[]) {
|
|
if (schema.length === 0) return true
|
|
if (schema.length === 1) return {required: schema}
|
|
const comb = keyword === "anyRequired" ? "anyOf" : "oneOf"
|
|
return {[comb]: schema.map((p) => ({required: [p]}))}
|
|
},
|
|
metaSchema: {
|
|
type: "array",
|
|
items: {type: "string"},
|
|
},
|
|
})
|
|
}
|