@dpkit/table
Version:
Data Package implementation in TypeScript.
79 lines • 10.7 kB
JavaScript
import { checkCellEnum } from "./checks/enum.js";
import { checkCellMaxLength } from "./checks/maxLength.js";
import { checkCellMaximum } from "./checks/maximum.js";
import { checkCellMinLength } from "./checks/minLength.js";
import { checkCellMinimum } from "./checks/minimum.js";
import { checkCellPattern } from "./checks/pattern.js";
import { checkCellRequired } from "./checks/required.js";
import { checkCellType } from "./checks/type.js";
import { checkCellUnique } from "./checks/unique.js";
export function inspectField(field, options) {
const { polarsField } = options;
const errors = [];
const nameErrors = inspectName(field, polarsField);
errors.push(...nameErrors);
const typeErrors = inspectType(field, polarsField);
errors.push(...typeErrors);
const errorTable = !typeErrors.length
? inspectCells(field, options.errorTable)
: options.errorTable;
return { errors, errorTable };
}
function inspectName(field, polarsField) {
const errors = [];
if (field.name !== polarsField.name) {
errors.push({
type: "field/name",
fieldName: field.name,
actualFieldName: polarsField.name,
});
}
return errors;
}
function inspectType(field, polarsField) {
const errors = [];
const mapping = {
Bool: "boolean",
Date: "date",
Datetime: "datetime",
Float32: "number",
Float64: "number",
Int16: "integer",
Int32: "integer",
Int64: "integer",
Int8: "integer",
List: "list",
String: "string",
Time: "time",
UInt16: "integer",
UInt32: "integer",
UInt64: "integer",
UInt8: "integer",
Utf8: "string",
};
const actualFieldType = mapping[polarsField.type.variant];
if (actualFieldType !== field.type && actualFieldType !== "string") {
errors.push({
type: "field/type",
fieldName: field.name,
fieldType: field.type,
actualFieldType,
});
}
return errors;
}
function inspectCells(field, errorTable) {
errorTable = checkCellType(field, errorTable);
errorTable = checkCellRequired(field, errorTable);
errorTable = checkCellPattern(field, errorTable);
errorTable = checkCellEnum(field, errorTable);
errorTable = checkCellMinimum(field, errorTable);
errorTable = checkCellMaximum(field, errorTable);
errorTable = checkCellMinimum(field, errorTable, { isExclusive: true });
errorTable = checkCellMaximum(field, errorTable, { isExclusive: true });
errorTable = checkCellMinLength(field, errorTable);
errorTable = checkCellMaxLength(field, errorTable);
errorTable = checkCellUnique(field, errorTable);
return errorTable;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zcGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2ZpZWxkL2luc3BlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFcEQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsS0FBWSxFQUNaLE9BR0M7SUFFRCxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBQy9CLE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUE7SUFFL0IsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUE7SUFFMUIsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUE7SUFFMUIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTTtRQUNuQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFB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QUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUMvQyxPQUFPLFVBQVUsQ0FBQTtBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGaWVsZCB9IGZyb20gXCJAZHBraXQvY29yZVwiXG5pbXBvcnQgdHlwZSB7IFRhYmxlRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBUYWJsZSB9IGZyb20gXCIuLi90YWJsZS9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IFBvbGFyc0ZpZWxkIH0gZnJvbSBcIi4vRmllbGQudHNcIlxuaW1wb3J0IHsgY2hlY2tDZWxsRW51bSB9IGZyb20gXCIuL2NoZWNrcy9lbnVtLnRzXCJcbmltcG9ydCB7IGNoZWNrQ2VsbE1heExlbmd0aCB9IGZyb20gXCIuL2NoZWNrcy9tYXhMZW5ndGgudHNcIlxuaW1wb3J0IHsgY2hlY2tDZWxsTWF4aW11bSB9IGZyb20gXCIuL2NoZWNrcy9tYXhpbXVtLnRzXCJcbmltcG9ydCB7IGNoZWNrQ2VsbE1pbkxlbmd0aCB9IGZyb20gXCIuL2NoZWNrcy9taW5MZW5ndGgudHNcIlxuaW1wb3J0IHsgY2hlY2tDZWxsTWluaW11bSB9IGZyb20gXCIuL2NoZWNrcy9taW5pbXVtLnRzXCJcbmltcG9ydCB7IGNoZWNrQ2VsbFBhdHRlcm4gfSBmcm9tIFwiLi9jaGVja3MvcGF0dGVybi50c1wiXG5pbXBvcnQgeyBjaGVja0NlbGxSZXF1aXJlZCB9IGZyb20gXCIuL2NoZWNrcy9yZXF1aXJlZC50c1wiXG5pbXBvcnQgeyBjaGVja0NlbGxUeXBlIH0gZnJvbSBcIi4vY2hlY2tzL3R5cGUudHNcIlxuaW1wb3J0IHsgY2hlY2tDZWxsVW5pcXVlIH0gZnJvbSBcIi4vY2hlY2tzL3VuaXF1ZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0RmllbGQoXG4gIGZpZWxkOiBGaWVsZCxcbiAgb3B0aW9uczoge1xuICAgIGVycm9yVGFibGU6IFRhYmxlXG4gICAgcG9sYXJzRmllbGQ6IFBvbGFyc0ZpZWxkXG4gIH0sXG4pIHtcbiAgY29uc3QgeyBwb2xhcnNGaWVsZCB9ID0gb3B0aW9uc1xuICBjb25zdCBlcnJvcnM6IFRhYmxlRXJyb3JbXSA9IFtdXG5cbiAgY29uc3QgbmFtZUVycm9ycyA9IGluc3BlY3ROYW1lKGZpZWxkLCBwb2xhcnNGaWVsZClcbiAgZXJyb3JzLnB1c2goLi4ubmFtZUVycm9ycylcblxuICBjb25zdCB0eXBlRXJyb3JzID0gaW5zcGVjdFR5cGUoZmllbGQsIHBvbGFyc0ZpZWxkKVxuICBlcnJvcnMucHVzaCguLi50eXBlRXJyb3JzKVxuXG4gIGNvbnN0IGVycm9yVGFibGUgPSAhdHlwZUVycm9ycy5sZW5ndGhcbiAgICA/IGluc3BlY3RDZWxscyhmaWVsZCwgb3B0aW9ucy5lcnJvclRhYmxlKVxuICAgIDogb3B0aW9ucy5lcnJvclRhYmxlXG5cbiAgcmV0dXJuIHsgZXJyb3JzLCBlcnJvclRhYmxlIH1cbn1cblxuZnVuY3Rpb24gaW5zcGVjdE5hbWUoZmllbGQ6IEZpZWxkLCBwb2xhcnNGaWVsZDogUG9sYXJzRmllbGQpIHtcbiAgY29uc3QgZXJyb3JzOiBUYWJsZUVycm9yW10gPSBbXVxuXG4gIGlmIChmaWVsZC5uYW1lICE9PSBwb2xhcnNGaWVsZC5uYW1lKSB7XG4gICAgZXJyb3JzLnB1c2goe1xuICAgICAgdHlwZTogXCJmaWVsZC9uYW1lXCIsXG4gICAgICBmaWVsZE5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICBhY3R1YWxGaWVsZE5hbWU6IHBvbGFyc0ZpZWxkLm5hbWUsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBlcnJvcnNcbn1cblxuZnVuY3Rpb24gaW5zcGVjdFR5cGUoZmllbGQ6IEZpZWxkLCBwb2xhcnNGaWVsZDogUG9sYXJzRmllbGQpIHtcbiAgY29uc3QgZXJyb3JzOiBUYWJsZUVycm9yW10gPSBbXVxuXG4gIGNvbnN0IG1hcHBpbmc6IFJlY29yZDxzdHJpbmcsIEZpZWxkW1widHlwZVwiXT4gPSB7XG4gICAgQm9vbDogXCJib29sZWFuXCIsXG4gICAgRGF0ZTogXCJkYXRlXCIsXG4gICAgRGF0ZXRpbWU6IFwiZGF0ZXRpbWVcIixcbiAgICBGbG9hdDMyOiBcIm51bWJlclwiLFxuICAgIEZsb2F0NjQ6IFwibnVtYmVyXCIsXG4gICAgSW50MTY6IFwiaW50ZWdlclwiLFxuICAgIEludDMyOiBcImludGVnZXJcIixcbiAgICBJbnQ2NDogXCJpbnRlZ2VyXCIsXG4gICAgSW50ODogXCJpbnRlZ2VyXCIsXG4gICAgTGlzdDogXCJsaXN0XCIsXG4gICAgU3RyaW5nOiBcInN0cmluZ1wiLFxuICAgIFRpbWU6IFwidGltZVwiLFxuICAgIFVJbnQxNjogXCJpbnRlZ2VyXCIsXG4gICAgVUludDMyOiBcImludGVnZXJcIixcbiAgICBVSW50NjQ6IFwiaW50ZWdlclwiLFxuICAgIFVJbnQ4OiBcImludGVnZXJcIixcbiAgICBVdGY4OiBcInN0cmluZ1wiLFxuICB9XG5cbiAgY29uc3QgYWN0dWFsRmllbGRUeXBlID0gbWFwcGluZ1twb2xhcnNGaWVsZC50eXBlLnZhcmlhbnRdXG5cbiAgaWYgKGFjdHVhbEZpZWxkVHlwZSAhPT0gZmllbGQudHlwZSAmJiBhY3R1YWxGaWVsZFR5cGUgIT09IFwic3RyaW5nXCIpIHtcbiAgICBlcnJvcnMucHVzaCh7XG4gICAgICB0eXBlOiBcImZpZWxkL3R5cGVcIixcbiAgICAgIGZpZWxkTmFtZTogZmllbGQubmFtZSxcbiAgICAgIGZpZWxkVHlwZTogZmllbGQudHlwZSxcbiAgICAgIGFjdHVhbEZpZWxkVHlwZSxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGVycm9yc1xufVxuXG5mdW5jdGlvbiBpbnNwZWN0Q2VsbHMoZmllbGQ6IEZpZWxkLCBlcnJvclRhYmxlOiBUYWJsZSkge1xuICBlcnJvclRhYmxlID0gY2hlY2tDZWxsVHlwZShmaWVsZCwgZXJyb3JUYWJsZSlcbiAgZXJyb3JUYWJsZSA9IGNoZWNrQ2VsbFJlcXVpcmVkKGZpZWxkLCBlcnJvclRhYmxlKVxuICBlcnJvclRhYmxlID0gY2hlY2tDZWxsUGF0dGVybihmaWVsZCwgZXJyb3JUYWJsZSlcbiAgZXJyb3JUYWJsZSA9IGNoZWNrQ2VsbEVudW0oZmllbGQsIGVycm9yVGFibGUpXG4gIGVycm9yVGFibGUgPSBjaGVja0NlbGxNaW5pbXVtKGZpZWxkLCBlcnJvclRhYmxlKVxuICBlcnJvclRhYmxlID0gY2hlY2tDZWxsTWF4aW11bShmaWVsZCwgZXJyb3JUYWJsZSlcbiAgZXJyb3JUYWJsZSA9IGNoZWNrQ2VsbE1pbmltdW0oZmllbGQsIGVycm9yVGFibGUsIHsgaXNFeGNsdXNpdmU6IHRydWUgfSlcbiAgZXJyb3JUYWJsZSA9IGNoZWNrQ2VsbE1heGltdW0oZmllbGQsIGVycm9yVGFibGUsIHsgaXNFeGNsdXNpdmU6IHRydWUgfSlcbiAgZXJyb3JUYWJsZSA9IGNoZWNrQ2VsbE1pbkxlbmd0aChmaWVsZCwgZXJyb3JUYWJsZSlcbiAgZXJyb3JUYWJsZSA9IGNoZWNrQ2VsbE1heExlbmd0aChmaWVsZCwgZXJyb3JUYWJsZSlcbiAgZXJyb3JUYWJsZSA9IGNoZWNrQ2VsbFVuaXF1ZShmaWVsZCwgZXJyb3JUYWJsZSlcbiAgcmV0dXJuIGVycm9yVGFibGVcbn1cbiJdfQ==