@waiting/log
Version:
Lightweight logging for browser
120 lines (115 loc) • 3.51 kB
JavaScript
import { defaultConfig } from './config'
import { LogLevel } from './model'
/** Whether the key of LocalStorage item is generated myself */
export function isLocalStorageKey(key, storagePrefix) {
const arr = key.split('-')
/* istanbul ignore else */
if (arr.length < 3) {
return false
}
const prefix = arr.shift()
const level = arr.shift()
const time = arr.join('-')
/* istanbul ignore else */
if (prefix !== storagePrefix) {
return false
}
/* istanbul ignore else */
if (!level) {
return false
}
if (!time) {
return false
}
else {
const dd = new Date(time)
/* istanbul ignore else */
if (typeof dd.getTime !== 'function' || Number.isNaN(dd.getTime())) {
return false
}
}
return true
}
/** Whether supress the log level if lower then the runLevel */
export function isSuppressLogLevel(runLevel, logLevel) {
return LogLevel[logLevel] < LogLevel[runLevel] ? true : false
}
export function isLogLevelToPrune(logLevel, pruneLevel) {
/* istanbul ignore else */
if (!logLevel) {
return false
}
/* istanbul ignore else */
if (!pruneLevel) {
return true
}
return logLevel === pruneLevel ? true : false
}
export function isTimeToPrune(time, pruneTime) {
if (!time) {
return false
}
const dd = new Date(time)
return dd < pruneTime ? true : false
}
export function setMaxMsgLength(length) {
validateMaxMsgLength(length)
defaultConfig.maxMsgLength = Math.ceil(length)
}
export function validateMaxMsgLength(length) {
/* istanbul ignore else */
if (typeof length !== 'number' || length <= 0) {
throw new TypeError('Value of parameter maxMsgLenth invalid')
}
}
export function setPersist(persist) {
validatePersist(persist)
defaultConfig.persist = persist
}
export function validatePersist(persist) {
/* istanbul ignore else */
if (typeof persist !== 'boolean') {
throw new TypeError('Value of parameter persist invalid')
}
}
export function setPersistTTL(ttl) {
validatePersistTTL(ttl)
defaultConfig.persistTTL = Math.ceil(ttl)
}
export function validatePersistTTL(ttl) {
/* istanbul ignore else */
if (typeof ttl !== 'number') {
throw new TypeError('Value of parameter ttl invalid')
}
/* istanbul ignore else */
if (+ttl < 0) {
throw new TypeError('Value of parameter ttl invalid')
}
}
/** Set runLevel to supressing the logLevel listed in ENUM LogLevel which lower then the runLevel */
export function setRunLevel(runLevel) {
validateLogLevel(runLevel)
defaultConfig.runLevel = runLevel
}
export function validateLogLevel(logLevel) {
/* istanbul ignore else */
// @ts-ignore
if (logLevel !== 'silent' && typeof console[logLevel] !== 'function') {
throw new TypeError(`Function console.${logLevel}() NOT exists`)
}
/* istanbul ignore else */
else if (!logLevel || typeof LogLevel[logLevel] !== 'number') {
throw new TypeError('Value of parameter logLevel invalid: ' + logLevel)
}
}
/** minus(-) be convert to underline _ */
export function setStoragePrefix(key) {
validateStoragePrefix(key)
defaultConfig.storagePrefix = key.replace(/-/g, '_')
}
export function validateStoragePrefix(key) {
/* istanbul ignore else */
if (!key || typeof key !== 'string') {
throw new TypeError('Value of parameter key invalid')
}
}