@juzi/wechaty
Version:
Wechaty is a RPA SDK for Chatbot Makers.
76 lines (61 loc) • 1.49 kB
text/typescript
import type Raven from 'raven'
import os from 'os'
import {
log,
} from '@juzi/wechaty-puppet'
import type { GError } from 'gerror'
import {
VERSION,
GIT_COMMIT_HASH,
} from './config.js'
let raven: typeof Raven
let enabled = false
function getRavenDsn (): undefined | string {
// const RAVEN_DSN = 'https://f6770399ee65459a82af82650231b22c:d8d11b283deb441e807079b8bb2c45cd@sentry.io/179672'
const dsn = process.env['WECHATY_RAVEN_DSN']
return dsn
}
function enableRaven (dsn: string):void {
/**
* Raven.io
*/
const ravenOptions = {
release: VERSION,
tags: {
git_commit: GIT_COMMIT_HASH,
platform: process.env['WECHATY_DOCKER']
? 'docker'
: os.platform(),
},
}
raven.disableConsoleAlerts()
raven
.config(dsn, ravenOptions)
.install()
enabled = true
}
async function init () {
try {
raven = await import('raven')
log.verbose('Wechaty', 'init() Raven enabled (import("raven") succeed)')
} catch (e) {
// It's ok when there's no raven installed
log.verbose('Wechaty', 'init() Raven disabled (import("raven") failed)')
return
}
const dsn = getRavenDsn()
if (!dsn) {
log.verbose('Wechaty', 'init() getRavenDsn() return undefined, skipped.')
return
}
enableRaven(dsn)
}
function wechatyCaptureException (e: GError) {
if (enabled) {
raven.captureException(e)
}
}
init().catch(console.error)
export {
wechatyCaptureException,
}