UNPKG

@1771technologies/lytenyte-pro

Version:

Blazingly fast headless React data grid with 100s of features.

30 lines (29 loc) 975 B
function toDate(value) { if (value instanceof Date) return value; if (typeof value === "string" || typeof value === "number") { const d = new Date(value); return isNaN(d.getTime()) ? null : d; } return null; } export function createDateIdentifierPlugin(options) { const identifierSet = new Set(options.identifiers); return { name: "date-identifier", evaluate: (node, context) => { if (node.type !== "Identifier") return null; if (!identifierSet.has(node.name)) return null; const raw = context[node.name]; const date = toDate(raw); if (date === null) { if (raw === undefined || raw === null) return { value: null }; throw new Error(`Context value for "${node.name}" cannot be coerced to a Date`); } return { value: date }; }, }; }