@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
22 lines • 3.29 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(source) {
const descriptor = source;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zY2hlbWEvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFeEQsTUFBTSxlQUFlLEdBQUcsdURBQXVELENBQUE7QUFFL0U7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FBQyxNQUEyQjtJQUM5RCxNQUFNLFVBQVUsR0FBRyxNQUFvQixDQUFBO0lBRXZDLE1BQU0sT0FBTyxHQUNYLE9BQU8sVUFBVSxDQUFDLE9BQU8sS0FBSyxRQUFRO1FBQ3BDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztRQUNwQixDQUFDLENBQUMsZUFBZSxDQUFBO0lBRXJCLE1BQU0sT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBRTNFLElBQUksTUFBTSxHQUF1QixTQUFTLENBQUE7SUFDMUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLDhDQUE4QztRQUM5QyxNQUFNLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBc0IsQ0FBQTtJQUMzRCxDQUFDO0lBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUE7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGVzY3JpcHRvciwgdmFsaWRhdGVEZXNjcmlwdG9yIH0gZnJvbSBcIi4uL2dlbmVyYWwvaW5kZXgudHNcIlxuaW1wb3J0IHsgbG9hZFByb2ZpbGUgfSBmcm9tIFwiLi4vZ2VuZXJhbC9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IFNjaGVtYSB9IGZyb20gXCIuL1NjaGVtYS50c1wiXG5pbXBvcnQgeyBub3JtYWxpemVTY2hlbWEgfSBmcm9tIFwiLi9wcm9jZXNzL25vcm1hbGl6ZS50c1wiXG5cbmNvbnN0IERFRkFVTFRfUFJPRklMRSA9IFwiaHR0cHM6Ly9kYXRhcGFja2FnZS5vcmcvcHJvZmlsZXMvMS4wL3RhYmxlc2NoZW1hLmpzb25cIlxuXG4vKipcbiAqIFZhbGlkYXRlIGEgU2NoZW1hIGRlc2NyaXB0b3IgKEpTT04gT2JqZWN0KSBhZ2FpbnN0IGl0cyBwcm9maWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZVNjaGVtYShzb3VyY2U6IERlc2NyaXB0b3IgfCBTY2hlbWEpIHtcbiAgY29uc3QgZGVzY3JpcHRvciA9IHNvdXJjZSBhcyBEZXNjcmlwdG9yXG5cbiAgY29uc3QgJHNjaGVtYSA9XG4gICAgdHlwZW9mIGRlc2NyaXB0b3IuJHNjaGVtYSA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBkZXNjcmlwdG9yLiRzY2hlbWFcbiAgICAgIDogREVGQVVMVF9QUk9GSUxFXG5cbiAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IGxvYWRQcm9maWxlKCRzY2hlbWEpXG4gIGNvbnN0IHsgdmFsaWQsIGVycm9ycyB9ID0gYXdhaXQgdmFsaWRhdGVEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIHsgcHJvZmlsZSB9KVxuXG4gIGxldCBzY2hlbWE6IFNjaGVtYSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICBpZiAodmFsaWQpIHtcbiAgICAvLyBWYWxpZGF0aW9uICsgbm9ybWFsaXphdGlvbiA9IHdlIGNhbiBjYXN0IGl0XG4gICAgc2NoZW1hID0gbm9ybWFsaXplU2NoZW1hKGRlc2NyaXB0b3IpIGFzIHVua25vd24gYXMgU2NoZW1hXG4gIH1cblxuICByZXR1cm4geyB2YWxpZCwgZXJyb3JzLCBzY2hlbWEgfVxufVxuIl19