/** * * Types for use when summarizing differences between versions of a table, with the * diff itself presented in tabular form. * */ /** * Pairs of before/after values of cells. Values, when present, are nested in a trivial * list since they can be literally anything - null, undefined, etc. Otherwise they * are either null, meaning non-existent, or "?", meaning unknown. Non-existent values * appear prior to a table/column being created, or after it has been destroyed. * Unknown values appear when they are omitted from summaries of bulk actions, and those * summaries are then merged with others. */ export type CellDelta = [[any]|"?"|null, [any]|"?"|null]; /** a special column indicating what changes happened on row (addition, update, removal) */ export type RowChangeType = string; /** differences for an individual table */ export interface TabularDiff { header: string[]; /** labels for columns */ cells: Array<[RowChangeType, number, CellDelta[]]>; // "number" is rowId } /** differences for a collection of tables */ export interface TabularDiffs { [tableId: string]: TabularDiff; }