@crealp/datamonitor
v3.1.0
Published
DataMonitor HTTP client - send logs to the CREALP cloud
Maintainers
Readme
@crealp/datamonitor
A lightweight HTTP client for sending logs to the CREALP DataMonitor cloud. No database or Prisma dependency required.
Installation
yarn add @crealp/datamonitor
# or
npm install @crealp/datamonitorRequires Node.js 18+ (uses native fetch).
Usage
import { DataMonitor } from '@crealp/datamonitor'
// Get a monitor instance for your project
const monitor = DataMonitor.getInstance({
hash: 'your-project-hash'
})
// Send logs (fire-and-forget)
await monitor.log('events', 'info', { action: 'user_login', userId: 123 })
await monitor.log('errors', 'error', { message: 'Something went wrong' })
await monitor.log('metrics', 'info', { responseTime: 150 }, 150) // with durationSingleton Pattern
DataMonitor.getInstance() returns the same instance for a given project hash:
const m1 = DataMonitor.getInstance({ hash: 'abc' })
const m2 = DataMonitor.getInstance({ hash: 'abc' })
console.log(m1 === m2) // trueAPI
DataMonitor.getInstance({ hash })
Returns (or creates) a singleton instance bound to a project hash.
hash— DataMonitor project hash
monitor.log(channel, type, data, duration?, memory?)
Sends a log entry via POST /datamonitor/api/:hash/.
channel— Channel name (auto-created server-side if missing)type—'fatal'|'error'|'warning'|'info'|'debug'data— JSON-serializable data objectduration— Optional duration in milliseconds (default:0)memory— Optional memory usage in bytes (default:0)
Returns the created log object, or null on error (errors are logged to console.warn, never thrown).
monitor.hash
Returns the project hash for this instance.
DataMonitor.isDevelopment
Returns true if DATAMONITOR_MODE=development.
DataMonitor.clearInstance(hash) / DataMonitor.clearAllInstances()
Testing helpers to reset singleton state.
Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| DATAMONITOR_MODE | Set to development to enable colored console logging | production |
Migration from v2
v3 is a breaking change:
getInstance()now takes{ hash }instead of{ prisma, hash }— the API URL is hardcoded internally- Removed all Prisma/database dependencies
- Removed static project management methods (
createProject,listProjects, etc.) - Removed
createChannels(),getChannels(),getLogs()instance methods — channels are auto-created server-side - Removed
./prisma-schemaexport - Uses native
fetch(Node.js 18+)
License
MIT
