@dpkit/table
Version:
Data Package implementation in TypeScript.
30 lines • 5.24 kB
JavaScript
import { col, lit } from "nodejs-polars";
export function checkCellMinimum(field, errorTable, options) {
if (field.type === "integer" || field.type === "number") {
const minimum = options?.isExclusive
? field.constraints?.exclusiveMinimum
: field.constraints?.minimum;
if (minimum !== undefined) {
const target = col(`target:${field.name}`);
const errorName = options?.isExclusive
? `error:cell/exclusiveMinimum:${field.name}`
: `error:cell/minimum:${field.name}`;
const parser = field.type === "integer" ? Number.parseInt : Number.parseFloat;
try {
const parsedMinimum = typeof minimum === "string" ? parser(minimum) : minimum;
errorTable = errorTable
.withColumn(options?.isExclusive
? target.ltEq(parsedMinimum).alias(errorName)
: target.lt(parsedMinimum).alias(errorName))
.withColumn(col("error").or(col(errorName)).alias("error"));
}
catch (error) {
errorTable = errorTable
.withColumn(lit(true).alias(errorName))
.withColumn(lit(true).alias("error"));
}
}
}
return errorTable;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW11bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpZWxkL2NoZWNrcy9taW5pbXVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBR3hDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBWSxFQUNaLFVBQWlCLEVBQ2pCLE9BRUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDeEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLFdBQVc7WUFDbEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCO1lBQ3JDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQTtRQUU5QixJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUMxQyxNQUFNLFNBQVMsR0FBRyxPQUFPLEVBQUUsV0FBVztnQkFDcEMsQ0FBQyxDQUFDLCtCQUErQixLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUM3QyxDQUFDLENBQUMsc0JBQXNCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUV0QyxNQUFNLE1BQU0sR0FDVixLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQTtZQUVoRSxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxhQUFhLEdBQ2pCLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUE7Z0JBRXpELFVBQVUsR0FBRyxVQUFVO3FCQUNwQixVQUFVLENBQ1QsT0FBTyxFQUFFLFdBQVc7b0JBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7b0JBQzdDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FDOUM7cUJBQ0EsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7WUFDL0QsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsVUFBVSxHQUFHLFVBQVU7cUJBQ3BCLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUN0QyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQ3pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpZWxkIH0gZnJvbSBcIkBkcGtpdC9jb3JlXCJcbmltcG9ydCB7IGNvbCwgbGl0IH0gZnJvbSBcIm5vZGVqcy1wb2xhcnNcIlxuaW1wb3J0IHR5cGUgeyBUYWJsZSB9IGZyb20gXCIuLi8uLi90YWJsZS9pbmRleC50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NlbGxNaW5pbXVtKFxuICBmaWVsZDogRmllbGQsXG4gIGVycm9yVGFibGU6IFRhYmxlLFxuICBvcHRpb25zPzoge1xuICAgIGlzRXhjbHVzaXZlPzogYm9vbGVhblxuICB9LFxuKSB7XG4gIGlmIChmaWVsZC50eXBlID09PSBcImludGVnZXJcIiB8fCBmaWVsZC50eXBlID09PSBcIm51bWJlclwiKSB7XG4gICAgY29uc3QgbWluaW11bSA9IG9wdGlvbnM/LmlzRXhjbHVzaXZlXG4gICAgICA/IGZpZWxkLmNvbnN0cmFpbnRzPy5leGNsdXNpdmVNaW5pbXVtXG4gICAgICA6IGZpZWxkLmNvbnN0cmFpbnRzPy5taW5pbXVtXG5cbiAgICBpZiAobWluaW11bSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBjb2woYHRhcmdldDoke2ZpZWxkLm5hbWV9YClcbiAgICAgIGNvbnN0IGVycm9yTmFtZSA9IG9wdGlvbnM/LmlzRXhjbHVzaXZlXG4gICAgICAgID8gYGVycm9yOmNlbGwvZXhjbHVzaXZlTWluaW11bToke2ZpZWxkLm5hbWV9YFxuICAgICAgICA6IGBlcnJvcjpjZWxsL21pbmltdW06JHtmaWVsZC5uYW1lfWBcblxuICAgICAgY29uc3QgcGFyc2VyID1cbiAgICAgICAgZmllbGQudHlwZSA9PT0gXCJpbnRlZ2VyXCIgPyBOdW1iZXIucGFyc2VJbnQgOiBOdW1iZXIucGFyc2VGbG9hdFxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJzZWRNaW5pbXVtID1cbiAgICAgICAgICB0eXBlb2YgbWluaW11bSA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlcihtaW5pbXVtKSA6IG1pbmltdW1cblxuICAgICAgICBlcnJvclRhYmxlID0gZXJyb3JUYWJsZVxuICAgICAgICAgIC53aXRoQ29sdW1uKFxuICAgICAgICAgICAgb3B0aW9ucz8uaXNFeGNsdXNpdmVcbiAgICAgICAgICAgICAgPyB0YXJnZXQubHRFcShwYXJzZWRNaW5pbXVtKS5hbGlhcyhlcnJvck5hbWUpXG4gICAgICAgICAgICAgIDogdGFyZ2V0Lmx0KHBhcnNlZE1pbmltdW0pLmFsaWFzKGVycm9yTmFtZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIC53aXRoQ29sdW1uKGNvbChcImVycm9yXCIpLm9yKGNvbChlcnJvck5hbWUpKS5hbGlhcyhcImVycm9yXCIpKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZXJyb3JUYWJsZSA9IGVycm9yVGFibGVcbiAgICAgICAgICAud2l0aENvbHVtbihsaXQodHJ1ZSkuYWxpYXMoZXJyb3JOYW1lKSlcbiAgICAgICAgICAud2l0aENvbHVtbihsaXQodHJ1ZSkuYWxpYXMoXCJlcnJvclwiKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyb3JUYWJsZVxufVxuIl19