@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
61 lines • 7.18 kB
JavaScript
export function normalizeField(descriptor) {
descriptor = globalThis.structuredClone(descriptor);
normalizeFieldFormat(descriptor);
normalizeFieldMissingValues(descriptor);
normalizeFieldCategories(descriptor);
normalizeFieldCategoriesOrdered(descriptor);
normalizeFieldJsonschema(descriptor);
return descriptor;
}
function normalizeFieldFormat(descriptor) {
const format = descriptor.format;
if (!format) {
return;
}
if (typeof format === "string") {
if (format.startsWith("fmt:")) {
descriptor.format = format.slice(4);
}
}
}
function normalizeFieldMissingValues(descriptor) {
const missingValues = descriptor.missingValues;
if (!missingValues) {
return;
}
if (!Array.isArray(missingValues)) {
descriptor.missingValues = undefined;
console.warn(`Ignoring v2.0 incompatible missingValues: ${missingValues}`);
}
}
function normalizeFieldCategories(descriptor) {
const categories = descriptor.categories;
if (!categories) {
return;
}
if (categories && !Array.isArray(categories)) {
descriptor.categories = undefined;
console.warn(`Ignoring v2.0 incompatible categories: ${categories}`);
}
}
function normalizeFieldCategoriesOrdered(descriptor) {
const categoriesOrdered = descriptor.categoriesOrdered;
if (!categoriesOrdered) {
return;
}
if (typeof categoriesOrdered !== "boolean") {
descriptor.categoriesOrdered = undefined;
console.warn(`Ignoring v2.0 incompatible categoriesOrdered: ${categoriesOrdered}`);
}
}
function normalizeFieldJsonschema(descriptor) {
const jsonschema = descriptor.jsonschema;
if (!jsonschema) {
return;
}
if (typeof jsonschema !== "object") {
descriptor.jsonschema = undefined;
console.warn(`Ignoring v2.0 incompatible jsonschema: ${jsonschema}`);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmllbGQvcHJvY2Vzcy9ub3JtYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLGNBQWMsQ0FBQyxVQUFzQjtJQUNuRCxVQUFVLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUVuRCxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNoQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN2Qyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNwQywrQkFBK0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUMzQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUVwQyxPQUFPLFVBQVUsQ0FBQTtBQUNuQixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxVQUFzQjtJQUNsRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFBO0lBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMvQixJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM5QixVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDckMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUywyQkFBMkIsQ0FBQyxVQUFzQjtJQUN6RCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFBO0lBQzlDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQixPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDbEMsVUFBVSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7UUFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUM1RSxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQUMsVUFBc0I7SUFDdEQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQTtJQUN4QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxVQUFVLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQTtRQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQ3RFLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUywrQkFBK0IsQ0FBQyxVQUFzQjtJQUM3RCxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQTtJQUN0RCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN2QixPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksT0FBTyxpQkFBaUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMzQyxVQUFVLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFBO1FBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsaURBQWlELGlCQUFpQixFQUFFLENBQ3JFLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQUMsVUFBc0I7SUFDdEQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQTtJQUN4QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLFVBQVUsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO1FBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsMENBQTBDLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFDdEUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERlc2NyaXB0b3IgfSBmcm9tIFwiLi4vLi4vZ2VuZXJhbC9pbmRleC50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVGaWVsZChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSB7XG4gIGRlc2NyaXB0b3IgPSBnbG9iYWxUaGlzLnN0cnVjdHVyZWRDbG9uZShkZXNjcmlwdG9yKVxuXG4gIG5vcm1hbGl6ZUZpZWxkRm9ybWF0KGRlc2NyaXB0b3IpXG4gIG5vcm1hbGl6ZUZpZWxkTWlzc2luZ1ZhbHVlcyhkZXNjcmlwdG9yKVxuICBub3JtYWxpemVGaWVsZENhdGVnb3JpZXMoZGVzY3JpcHRvcilcbiAgbm9ybWFsaXplRmllbGRDYXRlZ29yaWVzT3JkZXJlZChkZXNjcmlwdG9yKVxuICBub3JtYWxpemVGaWVsZEpzb25zY2hlbWEoZGVzY3JpcHRvcilcblxuICByZXR1cm4gZGVzY3JpcHRvclxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVGaWVsZEZvcm1hdChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSB7XG4gIGNvbnN0IGZvcm1hdCA9IGRlc2NyaXB0b3IuZm9ybWF0XG4gIGlmICghZm9ybWF0KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAodHlwZW9mIGZvcm1hdCA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmIChmb3JtYXQuc3RhcnRzV2l0aChcImZtdDpcIikpIHtcbiAgICAgIGRlc2NyaXB0b3IuZm9ybWF0ID0gZm9ybWF0LnNsaWNlKDQpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUZpZWxkTWlzc2luZ1ZhbHVlcyhkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSB7XG4gIGNvbnN0IG1pc3NpbmdWYWx1ZXMgPSBkZXNjcmlwdG9yLm1pc3NpbmdWYWx1ZXNcbiAgaWYgKCFtaXNzaW5nVmFsdWVzKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkobWlzc2luZ1ZhbHVlcykpIHtcbiAgICBkZXNjcmlwdG9yLm1pc3NpbmdWYWx1ZXMgPSB1bmRlZmluZWRcbiAgICBjb25zb2xlLndhcm4oYElnbm9yaW5nIHYyLjAgaW5jb21wYXRpYmxlIG1pc3NpbmdWYWx1ZXM6ICR7bWlzc2luZ1ZhbHVlc31gKVxuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUZpZWxkQ2F0ZWdvcmllcyhkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSB7XG4gIGNvbnN0IGNhdGVnb3JpZXMgPSBkZXNjcmlwdG9yLmNhdGVnb3JpZXNcbiAgaWYgKCFjYXRlZ29yaWVzKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoY2F0ZWdvcmllcyAmJiAhQXJyYXkuaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgIGRlc2NyaXB0b3IuY2F0ZWdvcmllcyA9IHVuZGVmaW5lZFxuICAgIGNvbnNvbGUud2FybihgSWdub3JpbmcgdjIuMCBpbmNvbXBhdGlibGUgY2F0ZWdvcmllczogJHtjYXRlZ29yaWVzfWApXG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplRmllbGRDYXRlZ29yaWVzT3JkZXJlZChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSB7XG4gIGNvbnN0IGNhdGVnb3JpZXNPcmRlcmVkID0gZGVzY3JpcHRvci5jYXRlZ29yaWVzT3JkZXJlZFxuICBpZiAoIWNhdGVnb3JpZXNPcmRlcmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAodHlwZW9mIGNhdGVnb3JpZXNPcmRlcmVkICE9PSBcImJvb2xlYW5cIikge1xuICAgIGRlc2NyaXB0b3IuY2F0ZWdvcmllc09yZGVyZWQgPSB1bmRlZmluZWRcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgSWdub3JpbmcgdjIuMCBpbmNvbXBhdGlibGUgY2F0ZWdvcmllc09yZGVyZWQ6ICR7Y2F0ZWdvcmllc09yZGVyZWR9YCxcbiAgICApXG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplRmllbGRKc29uc2NoZW1hKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpIHtcbiAgY29uc3QganNvbnNjaGVtYSA9IGRlc2NyaXB0b3IuanNvbnNjaGVtYVxuICBpZiAoIWpzb25zY2hlbWEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICh0eXBlb2YganNvbnNjaGVtYSAhPT0gXCJvYmplY3RcIikge1xuICAgIGRlc2NyaXB0b3IuanNvbnNjaGVtYSA9IHVuZGVmaW5lZFxuICAgIGNvbnNvbGUud2FybihgSWdub3JpbmcgdjIuMCBpbmNvbXBhdGlibGUganNvbnNjaGVtYTogJHtqc29uc2NoZW1hfWApXG4gIH1cbn1cbiJdfQ==