UNPKG

@dpkit/table

Version:

Data Package implementation in TypeScript.

65 lines 9.48 kB
import { col, lit, when } from "nodejs-polars"; import { parseArrayField } from "./types/array.js"; import { parseBooleanField } from "./types/boolean.js"; import { parseDateField } from "./types/date.js"; import { parseDatetimeField } from "./types/datetime.js"; import { parseDurationField } from "./types/duration.js"; import { parseGeojsonField } from "./types/geojson.js"; import { parseGeopointField } from "./types/geopoint.js"; import { parseIntegerField } from "./types/integer.js"; import { parseListField } from "./types/list.js"; import { parseNumberField } from "./types/number.js"; import { parseObjectField } from "./types/object.js"; import { parseStringField } from "./types/string.js"; import { parseTimeField } from "./types/time.js"; import { parseYearField } from "./types/year.js"; import { parseYearmonthField } from "./types/yearmonth.js"; const DEFAULT_MISSING_VALUES = [""]; export function parseField(field, options) { let expr = options?.expr ?? col(field.name); const missingValues = field.missingValues ?? options?.schema?.missingValues ?? DEFAULT_MISSING_VALUES; const flattenMissingValues = missingValues.map(item => typeof item === "string" ? item : item.value); if (flattenMissingValues.length) { expr = when(expr.isIn(flattenMissingValues)) .then(lit(null)) .otherwise(expr) .alias(field.name); } switch (field.type) { case "string": return parseStringField(field, expr); case "integer": return parseIntegerField(field, expr); case "number": return parseNumberField(field, expr); case "boolean": return parseBooleanField(field, expr); case "date": return parseDateField(field, expr); case "datetime": return parseDatetimeField(field, expr); case "time": return parseTimeField(field, expr); case "year": return parseYearField(field, expr); case "yearmonth": return parseYearmonthField(field, expr); case "list": return parseListField(field, expr); case "array": return parseArrayField(field, expr); case "geopoint": return parseGeopointField(field, expr); case "object": return parseObjectField(field, expr); case "geojson": return parseGeojsonField(field, expr); case "duration": return parseDurationField(field, expr); default: return expr; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9maWVsZC9wYXJzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUUxRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7QUFFbkMsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsS0FBWSxFQUNaLE9BQTBDO0lBRTFDLElBQUksSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUUzQyxNQUFNLGFBQWEsR0FDakIsS0FBSyxDQUFDLGFBQWE7UUFDbkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhO1FBQzlCLHNCQUFzQixDQUFBO0lBRXhCLE1BQU0sb0JBQW9CLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNwRCxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FDN0MsQ0FBQTtJQUVELElBQUksb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNmLFNBQVMsQ0FBQyxJQUFJLENBQUM7YUFDZixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3RCLENBQUM7SUFFRCxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixLQUFLLFFBQVE7WUFDWCxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN0QyxLQUFLLFNBQVM7WUFDWixPQUFPLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2QyxLQUFLLFFBQVE7WUFDWCxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN0QyxLQUFLLFNBQVM7WUFDWixPQUFPLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2QyxLQUFLLE1BQU07WUFDVCxPQUFPLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDcEMsS0FBSyxVQUFVO1lBQ2IsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDeEMsS0FBSyxNQUFNO1lBQ1QsT0FBTyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3BDLEtBQUssTUFBTTtZQUNULE9BQU8sY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNwQyxLQUFLLFdBQVc7WUFDZCxPQUFPLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN6QyxLQUFLLE1BQU07WUFDVCxPQUFPLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDcEMsS0FBSyxPQUFPO1lBQ1YsT0FBTyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3JDLEtBQUssVUFBVTtZQUNiLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3hDLEtBQUssUUFBUTtZQUNYLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3RDLEtBQUssU0FBUztZQUNaLE9BQU8saUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLEtBQUssVUFBVTtZQUNiLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3hDO1lBQ0UsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmllbGQsIFNjaGVtYSB9IGZyb20gXCJAZHBraXQvY29yZVwiXG5pbXBvcnQgeyBjb2wsIGxpdCwgd2hlbiB9IGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB0eXBlIHsgRXhwciB9IGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB7IHBhcnNlQXJyYXlGaWVsZCB9IGZyb20gXCIuL3R5cGVzL2FycmF5LnRzXCJcbmltcG9ydCB7IHBhcnNlQm9vbGVhbkZpZWxkIH0gZnJvbSBcIi4vdHlwZXMvYm9vbGVhbi50c1wiXG5pbXBvcnQgeyBwYXJzZURhdGVGaWVsZCB9IGZyb20gXCIuL3R5cGVzL2RhdGUudHNcIlxuaW1wb3J0IHsgcGFyc2VEYXRldGltZUZpZWxkIH0gZnJvbSBcIi4vdHlwZXMvZGF0ZXRpbWUudHNcIlxuaW1wb3J0IHsgcGFyc2VEdXJhdGlvbkZpZWxkIH0gZnJvbSBcIi4vdHlwZXMvZHVyYXRpb24udHNcIlxuaW1wb3J0IHsgcGFyc2VHZW9qc29uRmllbGQgfSBmcm9tIFwiLi90eXBlcy9nZW9qc29uLnRzXCJcbmltcG9ydCB7IHBhcnNlR2VvcG9pbnRGaWVsZCB9IGZyb20gXCIuL3R5cGVzL2dlb3BvaW50LnRzXCJcbmltcG9ydCB7IHBhcnNlSW50ZWdlckZpZWxkIH0gZnJvbSBcIi4vdHlwZXMvaW50ZWdlci50c1wiXG5pbXBvcnQgeyBwYXJzZUxpc3RGaWVsZCB9IGZyb20gXCIuL3R5cGVzL2xpc3QudHNcIlxuaW1wb3J0IHsgcGFyc2VOdW1iZXJGaWVsZCB9IGZyb20gXCIuL3R5cGVzL251bWJlci50c1wiXG5pbXBvcnQgeyBwYXJzZU9iamVjdEZpZWxkIH0gZnJvbSBcIi4vdHlwZXMvb2JqZWN0LnRzXCJcbmltcG9ydCB7IHBhcnNlU3RyaW5nRmllbGQgfSBmcm9tIFwiLi90eXBlcy9zdHJpbmcudHNcIlxuaW1wb3J0IHsgcGFyc2VUaW1lRmllbGQgfSBmcm9tIFwiLi90eXBlcy90aW1lLnRzXCJcbmltcG9ydCB7IHBhcnNlWWVhckZpZWxkIH0gZnJvbSBcIi4vdHlwZXMveWVhci50c1wiXG5pbXBvcnQgeyBwYXJzZVllYXJtb250aEZpZWxkIH0gZnJvbSBcIi4vdHlwZXMveWVhcm1vbnRoLnRzXCJcblxuY29uc3QgREVGQVVMVF9NSVNTSU5HX1ZBTFVFUyA9IFtcIlwiXVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGaWVsZChcbiAgZmllbGQ6IEZpZWxkLFxuICBvcHRpb25zPzogeyBleHByPzogRXhwcjsgc2NoZW1hPzogU2NoZW1hIH0sXG4pIHtcbiAgbGV0IGV4cHIgPSBvcHRpb25zPy5leHByID8/IGNvbChmaWVsZC5uYW1lKVxuXG4gIGNvbnN0IG1pc3NpbmdWYWx1ZXMgPVxuICAgIGZpZWxkLm1pc3NpbmdWYWx1ZXMgPz9cbiAgICBvcHRpb25zPy5zY2hlbWE/Lm1pc3NpbmdWYWx1ZXMgPz9cbiAgICBERUZBVUxUX01JU1NJTkdfVkFMVUVTXG5cbiAgY29uc3QgZmxhdHRlbk1pc3NpbmdWYWx1ZXMgPSBtaXNzaW5nVmFsdWVzLm1hcChpdGVtID0+XG4gICAgdHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIgPyBpdGVtIDogaXRlbS52YWx1ZSxcbiAgKVxuXG4gIGlmIChmbGF0dGVuTWlzc2luZ1ZhbHVlcy5sZW5ndGgpIHtcbiAgICBleHByID0gd2hlbihleHByLmlzSW4oZmxhdHRlbk1pc3NpbmdWYWx1ZXMpKVxuICAgICAgLnRoZW4obGl0KG51bGwpKVxuICAgICAgLm90aGVyd2lzZShleHByKVxuICAgICAgLmFsaWFzKGZpZWxkLm5hbWUpXG4gIH1cblxuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gcGFyc2VTdHJpbmdGaWVsZChmaWVsZCwgZXhwcilcbiAgICBjYXNlIFwiaW50ZWdlclwiOlxuICAgICAgcmV0dXJuIHBhcnNlSW50ZWdlckZpZWxkKGZpZWxkLCBleHByKVxuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIHJldHVybiBwYXJzZU51bWJlckZpZWxkKGZpZWxkLCBleHByKVxuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICByZXR1cm4gcGFyc2VCb29sZWFuRmllbGQoZmllbGQsIGV4cHIpXG4gICAgY2FzZSBcImRhdGVcIjpcbiAgICAgIHJldHVybiBwYXJzZURhdGVGaWVsZChmaWVsZCwgZXhwcilcbiAgICBjYXNlIFwiZGF0ZXRpbWVcIjpcbiAgICAgIHJldHVybiBwYXJzZURhdGV0aW1lRmllbGQoZmllbGQsIGV4cHIpXG4gICAgY2FzZSBcInRpbWVcIjpcbiAgICAgIHJldHVybiBwYXJzZVRpbWVGaWVsZChmaWVsZCwgZXhwcilcbiAgICBjYXNlIFwieWVhclwiOlxuICAgICAgcmV0dXJuIHBhcnNlWWVhckZpZWxkKGZpZWxkLCBleHByKVxuICAgIGNhc2UgXCJ5ZWFybW9udGhcIjpcbiAgICAgIHJldHVybiBwYXJzZVllYXJtb250aEZpZWxkKGZpZWxkLCBleHByKVxuICAgIGNhc2UgXCJsaXN0XCI6XG4gICAgICByZXR1cm4gcGFyc2VMaXN0RmllbGQoZmllbGQsIGV4cHIpXG4gICAgY2FzZSBcImFycmF5XCI6XG4gICAgICByZXR1cm4gcGFyc2VBcnJheUZpZWxkKGZpZWxkLCBleHByKVxuICAgIGNhc2UgXCJnZW9wb2ludFwiOlxuICAgICAgcmV0dXJuIHBhcnNlR2VvcG9pbnRGaWVsZChmaWVsZCwgZXhwcilcbiAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICByZXR1cm4gcGFyc2VPYmplY3RGaWVsZChmaWVsZCwgZXhwcilcbiAgICBjYXNlIFwiZ2VvanNvblwiOlxuICAgICAgcmV0dXJuIHBhcnNlR2VvanNvbkZpZWxkKGZpZWxkLCBleHByKVxuICAgIGNhc2UgXCJkdXJhdGlvblwiOlxuICAgICAgcmV0dXJuIHBhcnNlRHVyYXRpb25GaWVsZChmaWVsZCwgZXhwcilcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV4cHJcbiAgfVxufVxuIl19