@antv/g2plot
Version:
An interactive and responsive charting library
50 lines (44 loc) • 1.02 kB
text/typescript
/**
* Simplified from https://github.com/zertosh/invariant.
*/
export enum LEVEL {
ERROR = 'error',
WARN = 'warn',
INFO = 'log',
}
const BRAND = 'AntV/G2Plot';
/**
* 获取错误消息
* @param format
* @param args
*/
function getMessage(format: string, ...args: any[]): string {
let argIndex = 0;
return `${BRAND}: ${format.replace(/%s/g, (): string => `${args[argIndex++]}`)}`;
}
/**
* invariant error
* @param condition
* @param format
* @param args
*/
export function invariant(condition: boolean, format: string, ...args: any[]): void {
if (!condition) {
const error = new Error(getMessage(format, ...args));
error.name = BRAND;
// error.framesToPop = 1; // we don't care about invariant's own frame
throw error;
}
}
/**
* 打印语句
* @param level
* @param condition
* @param format
* @param args
*/
export function log(level: LEVEL, condition: boolean, format, ...args: any[]): void {
if (!condition) {
console[level](getMessage(format, ...args));
}
}