@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
32 lines • 4.41 kB
JavaScript
import { normalizeResource } from "../resource/index.js";
export function normalizePackage(descriptor, options) {
descriptor = globalThis.structuredClone(descriptor);
normalizeProfile(descriptor);
normalizeResources(descriptor, options);
normalizeContributors(descriptor);
return descriptor;
}
function normalizeProfile(descriptor) {
descriptor.$schema = descriptor.$schema ?? descriptor.profile;
}
function normalizeResources(descriptor, options) {
if (Array.isArray(descriptor.resources)) {
descriptor.resources = descriptor.resources.map((resource) => normalizeResource(resource, { basepath: options.basepath }));
}
}
function normalizeContributors(descriptor) {
const contributors = descriptor.contributors;
if (!contributors) {
return;
}
if (Array.isArray(contributors)) {
for (const contributor of contributors) {
const role = contributor.role;
if (role) {
contributor.roles = [role];
contributor.role = undefined;
}
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcGFja2FnZS9ub3JtYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFeEQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixVQUFzQixFQUN0QixPQUVDO0lBRUQsVUFBVSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUE7SUFFbkQsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDNUIsa0JBQWtCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRWpDLE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFVBQXNCO0lBQzlDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFBO0FBQy9ELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUN6QixVQUFzQixFQUN0QixPQUVDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3hDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFvQixFQUFFLEVBQUUsQ0FDdkUsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUM1RCxDQUFBO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLFVBQXNCO0lBQ25ELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUE7SUFDNUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDaEMsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFBO1lBQzdCLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUMxQixXQUFXLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQTtZQUM5QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEZXNjcmlwdG9yIH0gZnJvbSBcIi4uL2dlbmVyYWwvaW5kZXgudHNcIlxuaW1wb3J0IHsgbm9ybWFsaXplUmVzb3VyY2UgfSBmcm9tIFwiLi4vcmVzb3VyY2UvaW5kZXgudHNcIlxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUGFja2FnZShcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgb3B0aW9uczoge1xuICAgIGJhc2VwYXRoPzogc3RyaW5nXG4gIH0sXG4pIHtcbiAgZGVzY3JpcHRvciA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lKGRlc2NyaXB0b3IpXG5cbiAgbm9ybWFsaXplUHJvZmlsZShkZXNjcmlwdG9yKVxuICBub3JtYWxpemVSZXNvdXJjZXMoZGVzY3JpcHRvciwgb3B0aW9ucylcbiAgbm9ybWFsaXplQ29udHJpYnV0b3JzKGRlc2NyaXB0b3IpXG5cbiAgcmV0dXJuIGRlc2NyaXB0b3Jcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplUHJvZmlsZShkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSB7XG4gIGRlc2NyaXB0b3IuJHNjaGVtYSA9IGRlc2NyaXB0b3IuJHNjaGVtYSA/PyBkZXNjcmlwdG9yLnByb2ZpbGVcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplUmVzb3VyY2VzKFxuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLFxuICBvcHRpb25zOiB7XG4gICAgYmFzZXBhdGg/OiBzdHJpbmdcbiAgfSxcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShkZXNjcmlwdG9yLnJlc291cmNlcykpIHtcbiAgICBkZXNjcmlwdG9yLnJlc291cmNlcyA9IGRlc2NyaXB0b3IucmVzb3VyY2VzLm1hcCgocmVzb3VyY2U6IERlc2NyaXB0b3IpID0+XG4gICAgICBub3JtYWxpemVSZXNvdXJjZShyZXNvdXJjZSwgeyBiYXNlcGF0aDogb3B0aW9ucy5iYXNlcGF0aCB9KSxcbiAgICApXG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplQ29udHJpYnV0b3JzKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpIHtcbiAgY29uc3QgY29udHJpYnV0b3JzID0gZGVzY3JpcHRvci5jb250cmlidXRvcnNcbiAgaWYgKCFjb250cmlidXRvcnMpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGNvbnRyaWJ1dG9ycykpIHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyaWJ1dG9yIG9mIGNvbnRyaWJ1dG9ycykge1xuICAgICAgY29uc3Qgcm9sZSA9IGNvbnRyaWJ1dG9yLnJvbGVcbiAgICAgIGlmIChyb2xlKSB7XG4gICAgICAgIGNvbnRyaWJ1dG9yLnJvbGVzID0gW3JvbGVdXG4gICAgICAgIGNvbnRyaWJ1dG9yLnJvbGUgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==