@offirmo/universal-debug-api-interface
v1.0.1
Published
TypeScript types for a universal debug API (no code)
Downloads
25
Readme
This lib declares only TypeScript types/interfaces
- No code, 0 bytes = will do nothing to your bundle size.
- shared between several implementations
- you should most likely not use/interact with this lib directly
See overall explanation: Offirmo’s Universal Debug API.
API
This lib contains and exposes TypeScript types describing a Universal Debug API, to be used in any JS environment:
import {
getLogger,
overrideHook,
exposeInternal,
addDebugCommand,
} from '@offirmo/universal-debug-api-<pick an implementation>'
Loggers
Generic, basic loggers. See @offirmo/practical-logger-types
Though a default level is set, it is expected that the level can be overriden at load time (actual mechanism depending on the implementation, e.g. browser or node)
import { getLogger } from '@offirmo/universal-debug-api-<pick an implementation>'
// trivial use
const logger1 = getLogger()
// ( msg = <string> , details = { <hash> } )
logger1.log('Hello!', { target: 'world' })
// advanced use
const logger2 = getLogger({
name: 'cloud-sync',
suggestedLevel: 'info',
commonDetails: {
serverId: 'xyz987',
}
})
logger2.log('Hello!', { target: 'world' })
Overrides
Allows to "hook" the resolution of an information at load time.
A default value must be provided. It is expected that the actual value can be replaced at load time (actual mechanism depending on the implementation, e.g. browser or node)
import { overrideHook } from '@offirmo/universal-debug-api-<pick an implementation>'
// <T>( id: string, default_value: T ) => T
const is_debug_enabled = overrideHook('is-debug-enabled', false)
const cohort = overrideHook('experiment-cohort', 'not-enrolled')
Debug commands
TODO, considered in alpha / unstable for now. Do not use, API change won't count as breaking change.
Internal exposed for debug purposes
TODO, considered in alpha / unstable for now. Do not use, API change won't count as breaking change.
Module usage
This is most likely not what you are looking for!
See the actual implementations of those interfaces:
- minimal no-op: @offirmo/universal-debug-api-placeholder
- browser: @offirmo/universal-debug-api-browser
- node: @offirmo/universal-debug-api-node