@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
24 lines • 3.7 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(descriptorOrPackage, options) {
const descriptor = descriptorOrPackage;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wYWNrYWdlL3ZhbGlkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFekQsTUFBTSxlQUFlLEdBQUcsdURBQXVELENBQUE7QUFFL0U7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHlCQUF5QixDQUM3QyxtQkFBeUMsRUFDekMsT0FFQztJQUVELE1BQU0sVUFBVSxHQUFHLG1CQUFpQyxDQUFBO0lBRXBELE1BQU0sT0FBTyxHQUNYLE9BQU8sVUFBVSxDQUFDLE9BQU8sS0FBSyxRQUFRO1FBQ3BDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztRQUNwQixDQUFDLENBQUMsZUFBZSxDQUFBO0lBRXJCLE1BQU0sT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBRTNFLElBQUksV0FBVyxHQUF3QixTQUFTLENBQUE7SUFDaEQsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLDhDQUE4QztRQUM5QyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQ3pDLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUTtTQUM1QixDQUF1QixDQUFBO0lBQzFCLENBQUM7SUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQTtBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEZXNjcmlwdG9yLCB2YWxpZGF0ZURlc2NyaXB0b3IgfSBmcm9tIFwiLi4vZ2VuZXJhbC9pbmRleC5qc1wiXG5pbXBvcnQgeyBsb2FkUHJvZmlsZSB9IGZyb20gXCIuLi9nZW5lcmFsL2luZGV4LmpzXCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZSB9IGZyb20gXCIuL1BhY2thZ2UuanNcIlxuaW1wb3J0IHsgbm9ybWFsaXplUGFja2FnZSB9IGZyb20gXCIuL3Byb2Nlc3Mvbm9ybWFsaXplLmpzXCJcblxuY29uc3QgREVGQVVMVF9QUk9GSUxFID0gXCJodHRwczovL2RhdGFwYWNrYWdlLm9yZy9wcm9maWxlcy8xLjAvZGF0YXBhY2thZ2UuanNvblwiXG5cbi8qKlxuICogVmFsaWRhdGUgYSBQYWNrYWdlIGRlc2NyaXB0b3IgKEpTT04gT2JqZWN0KSBhZ2FpbnN0IGl0cyBwcm9maWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZVBhY2thZ2VEZXNjcmlwdG9yKFxuICBkZXNjcmlwdG9yT3JQYWNrYWdlOiBEZXNjcmlwdG9yIHwgUGFja2FnZSxcbiAgb3B0aW9ucz86IHtcbiAgICBiYXNlcGF0aD86IHN0cmluZ1xuICB9LFxuKSB7XG4gIGNvbnN0IGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yT3JQYWNrYWdlIGFzIERlc2NyaXB0b3JcblxuICBjb25zdCAkc2NoZW1hID1cbiAgICB0eXBlb2YgZGVzY3JpcHRvci4kc2NoZW1hID09PSBcInN0cmluZ1wiXG4gICAgICA/IGRlc2NyaXB0b3IuJHNjaGVtYVxuICAgICAgOiBERUZBVUxUX1BST0ZJTEVcblxuICBjb25zdCBwcm9maWxlID0gYXdhaXQgbG9hZFByb2ZpbGUoJHNjaGVtYSlcbiAgY29uc3QgeyB2YWxpZCwgZXJyb3JzIH0gPSBhd2FpdCB2YWxpZGF0ZURlc2NyaXB0b3IoZGVzY3JpcHRvciwgeyBwcm9maWxlIH0pXG5cbiAgbGV0IGRhdGFQYWNrYWdlOiBQYWNrYWdlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gIGlmICh2YWxpZCkge1xuICAgIC8vIFZhbGlkYXRpb24gKyBub3JtYWxpemF0aW9uID0gd2UgY2FuIGNhc3QgaXRcbiAgICBkYXRhUGFja2FnZSA9IG5vcm1hbGl6ZVBhY2thZ2UoZGVzY3JpcHRvciwge1xuICAgICAgYmFzZXBhdGg6IG9wdGlvbnM/LmJhc2VwYXRoLFxuICAgIH0pIGFzIHVua25vd24gYXMgUGFja2FnZVxuICB9XG5cbiAgcmV0dXJuIHsgdmFsaWQsIGVycm9ycywgZGF0YVBhY2thZ2UgfVxufVxuIl19