UNPKG

@dpkit/core

Version:

Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames

15 lines 2.37 kB
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=