UNPKG

@dpkit/table

Version:

Data Package implementation in TypeScript.

30 lines 5.24 kB
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