UNPKG

inngest

Version:

Official SDK for Inngest.com. Inngest is the reliability layer for modern applications. Inngest combines durable execution, events, and queues into a zero-infra platform with built-in observability.

78 lines 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProxyLogger = exports.DefaultLogger = void 0; class DefaultLogger { info(...args) { console.info(...args); } warn(...args) { console.warn(...args); } error(...args) { console.error(...args); } debug(...args) { console.debug(...args); } } exports.DefaultLogger = DefaultLogger; /** * ProxyLogger aims to provide a thin wrapper on user's provided logger. * It's expected to be turned on and off based on the function execution * context, so it doesn't result in duplicated logging. * * And also attempt to allow enough time for the logger to flush all logs. * * @public */ class ProxyLogger { constructor(logger) { this.enabled = false; this.logger = logger; } info(...args) { if (!this.enabled) return; this.logger.info(...args); } warn(...args) { if (!this.enabled) return; this.logger.warn(...args); } error(...args) { if (!this.enabled) return; this.logger.error(...args); } debug(...args) { // there are loggers that don't implement "debug" by default if (!this.enabled || !(typeof this.logger.debug === "function")) return; this.logger.debug(...args); } enable() { this.enabled = true; } disable() { this.enabled = false; } async flush() { // Allow 1s for the provided logger to handle flushing since the ones that do // flushing usually has some kind of timeout of up to 1s. // // TODO: // This should only happen when using a serverless environment because it's very // costly from the compute perspective. // server runtimes should just let the logger do their thing since most of them // should have already figured what to do in those environments, be it threading or // something else. if (this.logger.constructor.name !== DefaultLogger.name) { await new Promise((resolve) => { setTimeout(() => resolve(null), 1000); }); } } } exports.ProxyLogger = ProxyLogger; //# sourceMappingURL=logger.js.map