UNPKG

@dpkit/table

Version:

Data Package implementation in TypeScript.

31 lines 5.43 kB
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=