@dpkit/table
Version:
Data Package implementation in TypeScript.
31 lines • 5.43 kB
JavaScript
import { col, lit } from "nodejs-polars";
export function checkCellMaximum(field, errorTable, options) {
if (field.type === "integer" || field.type === "number") {
const maximum = options?.isExclusive
? field.constraints?.exclusiveMaximum
: field.constraints?.maximum;
if (maximum !== undefined) {
const target = col(`target:${field.name}`);
const errorName = options?.isExclusive
? `error:cell/exclusiveMaximum:${field.name}`
: `error:cell/maximum:${field.name}`;
// TODO: Support numeric options (decimalChar, groupChar, etc)
const parser = field.type === "integer" ? Number.parseInt : Number.parseFloat;
try {
const parsedMaximum = typeof maximum === "string" ? parser(maximum) : maximum;
errorTable = errorTable
.withColumn(options?.isExclusive
? target.gtEq(parsedMaximum).alias(errorName)
: target.gt(parsedMaximum).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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4aW11bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpZWxkL2NoZWNrcy9tYXhpbXVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBR3hDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBWSxFQUNaLFVBQWlCLEVBQ2pCLE9BRUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDeEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLFdBQVc7WUFDbEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCO1lBQ3JDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQTtRQUU5QixJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUMxQyxNQUFNLFNBQVMsR0FBRyxPQUFPLEVBQUUsV0FBVztnQkFDcEMsQ0FBQyxDQUFDLCtCQUErQixLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUM3QyxDQUFDLENBQUMsc0JBQXNCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUV0Qyw4REFBOEQ7WUFDOUQsTUFBTSxNQUFNLEdBQ1YsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUE7WUFFaEUsSUFBSSxDQUFDO2dCQUNILE1BQU0sYUFBYSxHQUNqQixPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO2dCQUV6RCxVQUFVLEdBQUcsVUFBVTtxQkFDcEIsVUFBVSxDQUNULE9BQU8sRUFBRSxXQUFXO29CQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO29CQUM3QyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQzlDO3FCQUNBLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQy9ELENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLFVBQVUsR0FBRyxVQUFVO3FCQUNwQixVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDdEMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtZQUN6QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQTtBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGaWVsZCB9IGZyb20gXCJAZHBraXQvY29yZVwiXG5pbXBvcnQgeyBjb2wsIGxpdCB9IGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vdGFibGUvaW5kZXgudHNcIlxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDZWxsTWF4aW11bShcbiAgZmllbGQ6IEZpZWxkLFxuICBlcnJvclRhYmxlOiBUYWJsZSxcbiAgb3B0aW9ucz86IHtcbiAgICBpc0V4Y2x1c2l2ZT86IGJvb2xlYW5cbiAgfSxcbikge1xuICBpZiAoZmllbGQudHlwZSA9PT0gXCJpbnRlZ2VyXCIgfHwgZmllbGQudHlwZSA9PT0gXCJudW1iZXJcIikge1xuICAgIGNvbnN0IG1heGltdW0gPSBvcHRpb25zPy5pc0V4Y2x1c2l2ZVxuICAgICAgPyBmaWVsZC5jb25zdHJhaW50cz8uZXhjbHVzaXZlTWF4aW11bVxuICAgICAgOiBmaWVsZC5jb25zdHJhaW50cz8ubWF4aW11bVxuXG4gICAgaWYgKG1heGltdW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gY29sKGB0YXJnZXQ6JHtmaWVsZC5uYW1lfWApXG4gICAgICBjb25zdCBlcnJvck5hbWUgPSBvcHRpb25zPy5pc0V4Y2x1c2l2ZVxuICAgICAgICA/IGBlcnJvcjpjZWxsL2V4Y2x1c2l2ZU1heGltdW06JHtmaWVsZC5uYW1lfWBcbiAgICAgICAgOiBgZXJyb3I6Y2VsbC9tYXhpbXVtOiR7ZmllbGQubmFtZX1gXG5cbiAgICAgIC8vIFRPRE86IFN1cHBvcnQgbnVtZXJpYyBvcHRpb25zIChkZWNpbWFsQ2hhciwgZ3JvdXBDaGFyLCBldGMpXG4gICAgICBjb25zdCBwYXJzZXIgPVxuICAgICAgICBmaWVsZC50eXBlID09PSBcImludGVnZXJcIiA/IE51bWJlci5wYXJzZUludCA6IE51bWJlci5wYXJzZUZsb2F0XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZE1heGltdW0gPVxuICAgICAgICAgIHR5cGVvZiBtYXhpbXVtID09PSBcInN0cmluZ1wiID8gcGFyc2VyKG1heGltdW0pIDogbWF4aW11bVxuXG4gICAgICAgIGVycm9yVGFibGUgPSBlcnJvclRhYmxlXG4gICAgICAgICAgLndpdGhDb2x1bW4oXG4gICAgICAgICAgICBvcHRpb25zPy5pc0V4Y2x1c2l2ZVxuICAgICAgICAgICAgICA/IHRhcmdldC5ndEVxKHBhcnNlZE1heGltdW0pLmFsaWFzKGVycm9yTmFtZSlcbiAgICAgICAgICAgICAgOiB0YXJnZXQuZ3QocGFyc2VkTWF4aW11bSkuYWxpYXMoZXJyb3JOYW1lKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLndpdGhDb2x1bW4oY29sKFwiZXJyb3JcIikub3IoY29sKGVycm9yTmFtZSkpLmFsaWFzKFwiZXJyb3JcIikpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBlcnJvclRhYmxlID0gZXJyb3JUYWJsZVxuICAgICAgICAgIC53aXRoQ29sdW1uKGxpdCh0cnVlKS5hbGlhcyhlcnJvck5hbWUpKVxuICAgICAgICAgIC53aXRoQ29sdW1uKGxpdCh0cnVlKS5hbGlhcyhcImVycm9yXCIpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvclRhYmxlXG59XG4iXX0=