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