UNPKG

@dpkit/core

Version:

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

22 lines 3.29 kB
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