@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
22 lines • 3.31 kB
JavaScript
import { validateDescriptor } from "../general/index.js";
import { loadProfile } from "../general/index.js";
import { normalizeDialect } from "./process/normalize.js";
const DEFAULT_PROFILE = "https://datapackage.org/profiles/1.0/tabledialect.json";
/**
* Validate a Dialect descriptor (JSON Object) against its profile
*/
export async function validateDialect(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 dialect = undefined;
if (valid) {
// Validation + normalization = we can cast it
dialect = normalizeDialect(descriptor);
}
return { valid, errors, dialect };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9kaWFsZWN0L3ZhbGlkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFekQsTUFBTSxlQUFlLEdBQUcsd0RBQXdELENBQUE7QUFFaEY7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FBQyxNQUE0QjtJQUNoRSxNQUFNLFVBQVUsR0FBRyxNQUFvQixDQUFBO0lBRXZDLE1BQU0sT0FBTyxHQUNYLE9BQU8sVUFBVSxDQUFDLE9BQU8sS0FBSyxRQUFRO1FBQ3BDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztRQUNwQixDQUFDLENBQUMsZUFBZSxDQUFBO0lBRXJCLE1BQU0sT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBRTNFLElBQUksT0FBTyxHQUF3QixTQUFTLENBQUE7SUFDNUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLDhDQUE4QztRQUM5QyxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFZLENBQUE7SUFDbkQsQ0FBQztJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERlc2NyaXB0b3IsIHZhbGlkYXRlRGVzY3JpcHRvciB9IGZyb20gXCIuLi9nZW5lcmFsL2luZGV4LnRzXCJcbmltcG9ydCB7IGxvYWRQcm9maWxlIH0gZnJvbSBcIi4uL2dlbmVyYWwvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBEaWFsZWN0IH0gZnJvbSBcIi4vRGlhbGVjdC50c1wiXG5pbXBvcnQgeyBub3JtYWxpemVEaWFsZWN0IH0gZnJvbSBcIi4vcHJvY2Vzcy9ub3JtYWxpemUudHNcIlxuXG5jb25zdCBERUZBVUxUX1BST0ZJTEUgPSBcImh0dHBzOi8vZGF0YXBhY2thZ2Uub3JnL3Byb2ZpbGVzLzEuMC90YWJsZWRpYWxlY3QuanNvblwiXG5cbi8qKlxuICogVmFsaWRhdGUgYSBEaWFsZWN0IGRlc2NyaXB0b3IgKEpTT04gT2JqZWN0KSBhZ2FpbnN0IGl0cyBwcm9maWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZURpYWxlY3Qoc291cmNlOiBEZXNjcmlwdG9yIHwgRGlhbGVjdCkge1xuICBjb25zdCBkZXNjcmlwdG9yID0gc291cmNlIGFzIERlc2NyaXB0b3JcblxuICBjb25zdCAkc2NoZW1hID1cbiAgICB0eXBlb2YgZGVzY3JpcHRvci4kc2NoZW1hID09PSBcInN0cmluZ1wiXG4gICAgICA/IGRlc2NyaXB0b3IuJHNjaGVtYVxuICAgICAgOiBERUZBVUxUX1BST0ZJTEVcblxuICBjb25zdCBwcm9maWxlID0gYXdhaXQgbG9hZFByb2ZpbGUoJHNjaGVtYSlcbiAgY29uc3QgeyB2YWxpZCwgZXJyb3JzIH0gPSBhd2FpdCB2YWxpZGF0ZURlc2NyaXB0b3IoZGVzY3JpcHRvciwgeyBwcm9maWxlIH0pXG5cbiAgbGV0IGRpYWxlY3Q6IERpYWxlY3QgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbiAgaWYgKHZhbGlkKSB7XG4gICAgLy8gVmFsaWRhdGlvbiArIG5vcm1hbGl6YXRpb24gPSB3ZSBjYW4gY2FzdCBpdFxuICAgIGRpYWxlY3QgPSBub3JtYWxpemVEaWFsZWN0KGRlc2NyaXB0b3IpIGFzIERpYWxlY3RcbiAgfVxuXG4gIHJldHVybiB7IHZhbGlkLCBlcnJvcnMsIGRpYWxlY3QgfVxufVxuIl19