@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
22 lines • 3.35 kB
JavaScript
import { validateDescriptor } from "../general/index.js";
import { loadProfile } from "../general/index.js";
import { normalizeSchema } from "./process/normalize.js";
const DEFAULT_PROFILE = "https://datapackage.org/profiles/1.0/tableschema.json";
/**
* Validate a Schema descriptor (JSON Object) against its profile
*/
export async function validateSchema(descriptorOrSchema) {
const descriptor = descriptorOrSchema;
const $schema = typeof descriptor.$schema === "string"
? descriptor.$schema
: DEFAULT_PROFILE;
const profile = await loadProfile($schema);
const { valid, errors } = await validateDescriptor(descriptor, { profile });
let schema = undefined;
if (valid) {
// Validation + normalization = we can cast it
schema = normalizeSchema(descriptor);
}
return { valid, errors, schema };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zY2hlbWEvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFeEQsTUFBTSxlQUFlLEdBQUcsdURBQXVELENBQUE7QUFFL0U7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FBQyxrQkFBdUM7SUFDMUUsTUFBTSxVQUFVLEdBQUcsa0JBQWdDLENBQUE7SUFFbkQsTUFBTSxPQUFPLEdBQ1gsT0FBTyxVQUFVLENBQUMsT0FBTyxLQUFLLFFBQVE7UUFDcEMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPO1FBQ3BCLENBQUMsQ0FBQyxlQUFlLENBQUE7SUFFckIsTUFBTSxPQUFPLEdBQUcsTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDMUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFFM0UsSUFBSSxNQUFNLEdBQXVCLFNBQVMsQ0FBQTtJQUMxQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsOENBQThDO1FBQzlDLE1BQU0sR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFzQixDQUFBO0lBQzNELENBQUM7SUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQTtBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEZXNjcmlwdG9yLCB2YWxpZGF0ZURlc2NyaXB0b3IgfSBmcm9tIFwiLi4vZ2VuZXJhbC9pbmRleC5qc1wiXG5pbXBvcnQgeyBsb2FkUHJvZmlsZSB9IGZyb20gXCIuLi9nZW5lcmFsL2luZGV4LmpzXCJcbmltcG9ydCB0eXBlIHsgU2NoZW1hIH0gZnJvbSBcIi4vU2NoZW1hLmpzXCJcbmltcG9ydCB7IG5vcm1hbGl6ZVNjaGVtYSB9IGZyb20gXCIuL3Byb2Nlc3Mvbm9ybWFsaXplLmpzXCJcblxuY29uc3QgREVGQVVMVF9QUk9GSUxFID0gXCJodHRwczovL2RhdGFwYWNrYWdlLm9yZy9wcm9maWxlcy8xLjAvdGFibGVzY2hlbWEuanNvblwiXG5cbi8qKlxuICogVmFsaWRhdGUgYSBTY2hlbWEgZGVzY3JpcHRvciAoSlNPTiBPYmplY3QpIGFnYWluc3QgaXRzIHByb2ZpbGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlU2NoZW1hKGRlc2NyaXB0b3JPclNjaGVtYTogRGVzY3JpcHRvciB8IFNjaGVtYSkge1xuICBjb25zdCBkZXNjcmlwdG9yID0gZGVzY3JpcHRvck9yU2NoZW1hIGFzIERlc2NyaXB0b3JcblxuICBjb25zdCAkc2NoZW1hID1cbiAgICB0eXBlb2YgZGVzY3JpcHRvci4kc2NoZW1hID09PSBcInN0cmluZ1wiXG4gICAgICA/IGRlc2NyaXB0b3IuJHNjaGVtYVxuICAgICAgOiBERUZBVUxUX1BST0ZJTEVcblxuICBjb25zdCBwcm9maWxlID0gYXdhaXQgbG9hZFByb2ZpbGUoJHNjaGVtYSlcbiAgY29uc3QgeyB2YWxpZCwgZXJyb3JzIH0gPSBhd2FpdCB2YWxpZGF0ZURlc2NyaXB0b3IoZGVzY3JpcHRvciwgeyBwcm9maWxlIH0pXG5cbiAgbGV0IHNjaGVtYTogU2NoZW1hIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gIGlmICh2YWxpZCkge1xuICAgIC8vIFZhbGlkYXRpb24gKyBub3JtYWxpemF0aW9uID0gd2UgY2FuIGNhc3QgaXRcbiAgICBzY2hlbWEgPSBub3JtYWxpemVTY2hlbWEoZGVzY3JpcHRvcikgYXMgdW5rbm93biBhcyBTY2hlbWFcbiAgfVxuXG4gIHJldHVybiB7IHZhbGlkLCBlcnJvcnMsIHNjaGVtYSB9XG59XG4iXX0=