brolog
Version:
Npmlog like logger for Browser
61 lines (53 loc) • 1.58 kB
text/typescript
export { VERSION } from './version.js'
/**
* BROLOG_LEVEL
*/
const DEFAULT_LEVEL = 'info'
const BROLOG_LEVEL_VAR_NAME = 'BROLOG_LEVEL'
const BROLOG_PREFIX_VAR_NAME = 'BROLOG_PREFIX'
let level: undefined | string
let debugModule: undefined | string
/**
*
* Sometimes there's a `process` in browser (ionic3 & angular5)
* Sometimes there's a window in Node.js (browserify)
*
*/
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (typeof process !== 'undefined' && process['env']) {
/**
* Node.js
*/
if (!level) {
level = process.env[BROLOG_LEVEL_VAR_NAME]
}
if (!debugModule) {
debugModule = process.env[BROLOG_PREFIX_VAR_NAME]
}
}
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (typeof window !== 'undefined' && typeof window?.location?.search === 'string') {
/**
* Browser
*/
if (!level) {
level = getJsonFromUrl()[BROLOG_LEVEL_VAR_NAME]
}
if (!debugModule) {
debugModule = getJsonFromUrl()[BROLOG_LEVEL_VAR_NAME]
}
}
function getJsonFromUrl () {
// https://stackoverflow.com/questions/8486099/how-do-i-parse-a-url-query-parameters-in-javascript
const query = location.search.substr(1)
const result = {} as { [idx: string]: string }
query.split('&').forEach(function (part) {
const [key, val] = part.split('=')
if (typeof key !== 'undefined' && typeof val !== 'undefined') {
result[key] = decodeURIComponent(val)
}
})
return result
}
export const BROLOG_LEVEL = level || DEFAULT_LEVEL
export const BROLOG_PREFIX = debugModule || '*'