@offirmo/universal-debug-api-interface

TypeScript types for a universal debug API (no code)

Usage no npm install needed!

<script type="module">
  import offirmoUniversalDebugApiInterface from 'https://cdn.skypack.dev/@offirmo/universal-debug-api-interface';
</script>

README

Offirmo’s Universal Debug API - TypeScript interfaces
Offirmo’s quality seal

npm badge dependencies badge bundle size badge license badge maintenance status badge

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: