UNPKG

@dpkit/core

Version:

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

24 lines 3.64 kB
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=