UNPKG

klog.js

Version:

A JavaScript implementation of the Klog time tracking file format

49 lines (48 loc) 1.23 kB
import { RangeDashFormat } from "./range.js"; import { DayShift, TimeFormat } from "./time.js"; export type Sign = "" | "+" | "-"; export type Indentation = " " | " " | " " | "\t"; export interface FileNode { type: "file"; records: RecordNode[]; } export interface RecordNode { type: "record"; date: Date; shouldTotal: number | null; summary: string | null; entries: EntryNode[]; } export interface EntryNode { type: "entry"; summary: string | null; value: TimeRangeNode | DurationNode; } export interface OpenTimeRangeNode { type: "timeRange"; open: true; placeholderCount: number; format: RangeDashFormat; start: TimeNode; } export interface ClosedTimeRangeNode { type: "timeRange"; open: false; format: RangeDashFormat; start: TimeNode; end: TimeNode; } export type TimeRangeNode = OpenTimeRangeNode | ClosedTimeRangeNode; export interface TimeNode { type: "time"; shift: DayShift; hour: number; minute: number; format: TimeFormat; } export interface DurationNode { type: "duration"; value: number; sign: Sign; } export type KlogNode = FileNode | RecordNode | EntryNode | TimeRangeNode | TimeNode | DurationNode;