UNPKG

@dpkit/table

Version:

Data Package implementation in TypeScript.

79 lines 10.7 kB
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==