@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
25 lines (21 loc) • 693 B
text/typescript
import type { MetadataError } from "../../error/index.ts"
import { ajv } from "../profile/ajv.ts"
import type { Descriptor } from "./Descriptor.ts"
/**
* Validate a descriptor (JSON Object) against a JSON Schema
* It uses Ajv for JSON Schema validation under the hood
* It returns a list of errors (empty if valid)
*/
export async function validateDescriptor(
descriptor: Descriptor,
options: {
profile: Descriptor
},
) {
const validate = await ajv.compileAsync(options.profile)
const valid = validate(descriptor)
const errors: MetadataError[] = validate.errors
? validate.errors?.map(error => ({ ...error, type: "metadata" }))
: []
return { valid, errors }
}