@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
15 lines • 2.37 kB
JavaScript
import { ajv } from "../profile/ajv.js";
/**
* 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, options) {
const validate = await ajv.compileAsync(options.profile);
const valid = validate(descriptor);
const errors = validate.errors
? validate.errors?.map(error => ({ ...error, type: "metadata" }))
: [];
return { valid, errors };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9nZW5lcmFsL2Rlc2NyaXB0b3IvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR3ZDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUN0QyxVQUFzQixFQUN0QixPQUVDO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN4RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7SUFFbEMsTUFBTSxNQUFNLEdBQW9CLFFBQVEsQ0FBQyxNQUFNO1FBQzdDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsRUFBRSxDQUFBO0lBRU4sT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQTtBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXRhZGF0YUVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL2luZGV4LnRzXCJcbmltcG9ydCB7IGFqdiB9IGZyb20gXCIuLi9wcm9maWxlL2Fqdi50c1wiXG5pbXBvcnQgdHlwZSB7IERlc2NyaXB0b3IgfSBmcm9tIFwiLi9EZXNjcmlwdG9yLnRzXCJcblxuLyoqXG4gKiBWYWxpZGF0ZSBhIGRlc2NyaXB0b3IgKEpTT04gT2JqZWN0KSBhZ2FpbnN0IGEgSlNPTiBTY2hlbWFcbiAqIEl0IHVzZXMgQWp2IGZvciBKU09OIFNjaGVtYSB2YWxpZGF0aW9uIHVuZGVyIHRoZSBob29kXG4gKiBJdCByZXR1cm5zIGEgbGlzdCBvZiBlcnJvcnMgKGVtcHR5IGlmIHZhbGlkKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVEZXNjcmlwdG9yKFxuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLFxuICBvcHRpb25zOiB7XG4gICAgcHJvZmlsZTogRGVzY3JpcHRvclxuICB9LFxuKSB7XG4gIGNvbnN0IHZhbGlkYXRlID0gYXdhaXQgYWp2LmNvbXBpbGVBc3luYyhvcHRpb25zLnByb2ZpbGUpXG4gIGNvbnN0IHZhbGlkID0gdmFsaWRhdGUoZGVzY3JpcHRvcilcblxuICBjb25zdCBlcnJvcnM6IE1ldGFkYXRhRXJyb3JbXSA9IHZhbGlkYXRlLmVycm9yc1xuICAgID8gdmFsaWRhdGUuZXJyb3JzPy5tYXAoZXJyb3IgPT4gKHsgLi4uZXJyb3IsIHR5cGU6IFwibWV0YWRhdGFcIiB9KSlcbiAgICA6IFtdXG5cbiAgcmV0dXJuIHsgdmFsaWQsIGVycm9ycyB9XG59XG4iXX0=