@naturalcycles/scrubber-lib
Version:
Scrub data in JavaScript plain objects by using rules defined in a configuration object
24 lines (23 loc) • 856 B
TypeScript
import type { AnyObject, StringMap } from '@naturalcycles/js-lib/types';
export type ScrubberFn<T = any, PARAMS = AnyObject> = (value: T, params?: PARAMS) => T;
export type ScrubberSQLFn<PARAMS = AnyObject> = (params?: PARAMS) => string;
export interface ScrubberConfig {
fields: StringMap<ScrubberFieldConfig>;
/**
* Populated at runtime from any config keys with dots, key is last component (after last dot) and array contains
* preceeding components a.k.a "parents"
*/
splitFields?: StringMap<string[][]>;
throwOnError?: boolean;
preserveFalsy?: boolean;
}
export interface ScrubberFieldConfig {
scrubber: string;
params?: StringMap<any>;
}
export interface ScrubbersMap {
[scrubberName: string]: ScrubberFn<any, any>;
}
export interface ScrubbersSQLMap {
[scrubberName: string]: ScrubberSQLFn<any>;
}