🚀. Socket Launch Week Day 2:Introducing Manifest Alerts.Learn more
Sign In

@storm-stack/logging

Package Overview
Dependencies
Maintainers
2
Versions
118
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@storm-stack/logging - npm Package Compare versions

Comparing version
1.32.0
to
1.34.0
+16
dist/composition/index.cjs
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _loggerWrapper = require("./logger-wrapper.cjs");
Object.keys(_loggerWrapper).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _loggerWrapper[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _loggerWrapper[key];
}
});
});
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.LoggerWrapper = void 0;
var _errors = require("@storm-stack/errors");
var _typeChecks = require("@storm-stack/types/type-checks");
class LoggerWrapper {
constructor(logger, config, name) {
this.logger = logger;
this.config = config;
this.name = name;
this.logger = logger;
this.config = config ?? {
stacktrace: true
};
}
/**
* Wrap a logger.
*
* @param logger - The logger to wrap.
* @param config - The logging configuration.
* @param name - The logger's name.
* @returns The wrapped logger.
*/
static wrap = (logger, config, name) => {
return new LoggerWrapper(logger, config, name);
};
/**
* Write a success message to the logs.
*
* @param message - The message to print.
* @returns Either a promise that resolves to void or void.
*/
success = message => {
return (0, _typeChecks.isSet)(this.logger.success) ? this.logger.success(message) : this.info(message);
};
/**
* Write a fatal message to the logs.
*
* @param error - The fatal message to be displayed.
* @returns Either a promise that resolves to void or void.
*/
fatal = error => {
const message = this.getErrorMessage(error);
return (0, _typeChecks.isSet)(this.logger.fatal) ? this.logger.fatal(message) : this.error(message);
};
/**
* Write an error message to the logs.
*
* @param error - The message to be displayed.
* @returns Either a promise that resolves to void or void.
*/
exception = error => {
const message = this.getErrorMessage(error);
return (0, _typeChecks.isSet)(this.logger.exception) ? this.logger.exception(message) : this.error(message);
};
/**
* Write an error message to the logs.
*
* @param error - The message to be displayed.
* @returns Either a promise that resolves to void or void.
*/
error = error => {
return this.logger.error(this.getErrorMessage(error));
};
/**
* Write a warning message to the logs.
*
* @param message - The message to be printed.
* @returns Either a promise that resolves to void or void.
*/
warn = message => {
return this.logger.warn(message);
};
/**
* Write an informational message to the logs.
*
* @param message - The message to be printed.
* @returns Either a promise that resolves to void or void.
*/
info = message => {
return this.logger.info(message);
};
/**
* Write a debug message to the logs.
*
* @param message - The message to be printed.
* @returns Either a promise that resolves to void or void.
*/
debug = message => {
return (0, _typeChecks.isSet)(this.logger.debug) ? this.logger.debug(message) : (0, _typeChecks.isSet)(this.logger.trace) ? this.logger.trace(message) : this.info(message);
};
/**
* Write a trace message to the logs.
*
* @param message - The message to be printed.
* @returns Either a promise that resolves to void or void.
*/
trace = message => {
return (0, _typeChecks.isSet)(this.logger.trace) ? this.logger.trace(message) : (0, _typeChecks.isSet)(this.logger.debug) ? this.logger.debug(message) : this.info(message);
};
/**
* Write a log message to the logs.
*
* @param message - The message to be printed.
* @returns Either a promise that resolves to void or void.
*/
log = message => {
return (0, _typeChecks.isSet)(this.logger.log) ? this.logger.log(message) : this.info(message);
};
/**
* Format an error message.
*
* @param obj - The error to format.
* @returns The formatted error message.
*/
getErrorMessage = obj => {
if ((0, _typeChecks.isSetString)(obj)) {
return obj;
}
const error = (0, _errors.getCauseFromUnknown)(obj);
let message = error.print();
if (this.config.stacktrace && (0, _typeChecks.isSet)(error.stack)) {
message += `
${error.stack}`;
}
return message;
};
}
exports.LoggerWrapper = LoggerWrapper;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.LoggingErrorCode = void 0;
var _errors = require("@storm-stack/errors/errors");
const LoggingErrorCode = exports.LoggingErrorCode = {
..._errors.ErrorCode,
logs_uninitialized: "logs_uninitialized"
};
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _composition = require("./composition/index.cjs");
Object.keys(_composition).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _composition[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _composition[key];
}
});
});
var _errors = require("./errors.cjs");
Object.keys(_errors).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _errors[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _errors[key];
}
});
});
var _stormLog = require("./storm-log.cjs");
Object.keys(_stormLog).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _stormLog[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _stormLog[key];
}
});
});
var _types = require("./types.cjs");
Object.keys(_types).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _types[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _types[key];
}
});
});
var _utilities = require("./utilities/index.cjs");
Object.keys(_utilities).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _utilities[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _utilities[key];
}
});
});
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.StormLog = void 0;
var _stormDateTime = require("@storm-stack/date-time/storm-date-time");
var _formatSince = require("@storm-stack/date-time/utilities/format-since");
var _errors = require("@storm-stack/errors");
var _pino = _interopRequireDefault(require("pino"));
var _errors2 = require("./errors.cjs");
var _getLogLevel = require("./utilities/get-log-level.cjs");
var _getPinoOptions = require("./utilities/get-pino-options.cjs");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class StormLog {
static #name;
static #logger;
static #logLevel;
static #additionalLoggers = [];
static get name() {
return StormLog.#name;
}
static getLogger = () => {
if (!StormLog.#logger) {
throw new _errors.StormError(_errors2.LoggingErrorCode.logs_uninitialized, {
data: "The Storm Log has not been initialized. Please initialize the logs by invoking `StormLog.initialize` before using them"
});
}
return StormLog.#logger;
};
/**
* Initialize the logs.
*
* @param config - The Storm config
* @param name - The name of the project to initialized the loggers for
* @returns The initialized loggers
*/
static initialize = (config, name = "Storm", streams = []) => {
const pinoLogger = streams.length > 0 ? (0, _pino.default)((0, _getPinoOptions.getPinoOptions)(config, name), _pino.default.multistream(streams, {
dedupe: false
})) : (0, _pino.default)((0, _getPinoOptions.getPinoOptions)(config, name));
pinoLogger.debug("The Storm log has ben initialized");
StormLog.#name = name;
StormLog.#logger = pinoLogger;
StormLog.#logLevel = (0, _getLogLevel.getLogLevel)(config.logLevel);
};
/**
* The Singleton's constructor should always be private to prevent direct
* construction calls with the `new` operator.
*/
constructor() {}
/**
* Write a success message to the logs.
*
* @param message - The message to print.
* @returns Either a promise that resolves to void or void.
*/
static success(message) {
const logger = StormLog.getLogger();
if (StormLog.#logLevel >= _getLogLevel.LogLevel.INFO) {
logger.info({
message,
level: "success"
});
Promise.all(StormLog.#additionalLoggers.map(logger2 => logger2.info(message)));
}
}
/**
* Write a fatal message to the logs.
*
* @param message - The fatal message to be displayed.
* @returns Either a promise that resolves to void or void.
*/
static fatal(message) {
const error = _errors.StormError.create(message);
const logger = StormLog.getLogger();
if (StormLog.#logLevel >= _getLogLevel.LogLevel.FATAL) {
logger.fatal({
error,
level: "fatal"
});
Promise.all(StormLog.#additionalLoggers.map(logger2 => logger2.fatal(error)));
}
}
/**
* Write an error message to the logs.
*
* @param message - The message to be displayed.
* @returns Either a promise that resolves to void or void.
*/
static error(message) {
const error = _errors.StormError.create(message);
const logger = StormLog.getLogger();
if (StormLog.#logLevel >= _getLogLevel.LogLevel.ERROR) {
logger.error({
error,
level: "error"
});
Promise.all(StormLog.#additionalLoggers.map(logger2 => logger2.error(error)));
}
}
/**
* Write an exception message to the logs.
*
* @param message - The message to be displayed.
* @returns Either a promise that resolves to void or void.
*/
static exception(message) {
const error = _errors.StormError.create(message);
const logger = StormLog.getLogger();
if (StormLog.#logLevel >= _getLogLevel.LogLevel.ERROR) {
logger.error({
error,
level: "exception"
});
Promise.all(StormLog.#additionalLoggers.map(logger2 => logger2.exception(error)));
}
}
/**
* Write a warning message to the logs.
*
* @param message - The message to be printed.
* @returns Either a promise that resolves to void or void.
*/
static warn(message) {
const logger = StormLog.getLogger();
if (StormLog.#logLevel >= _getLogLevel.LogLevel.WARN) {
logger.warn(message);
Promise.all(StormLog.#additionalLoggers.map(logger2 => logger2.warn(message)));
}
}
/**
* Write an informational message to the logs.
*
* @param message - The message to be printed.
* @returns Either a promise that resolves to void or void.
*/
static info(message) {
const logger = StormLog.getLogger();
if (StormLog.#logLevel >= _getLogLevel.LogLevel.INFO) {
logger.info(message);
Promise.all(StormLog.#additionalLoggers.map(logger2 => logger2.info(message)));
}
}
/**
* Write a debug message to the logs.
*
* @param message - The message to be printed.
* @returns Either a promise that resolves to void or void.
*/
static debug(message) {
const logger = StormLog.getLogger();
if (StormLog.#logLevel >= _getLogLevel.LogLevel.DEBUG) {
logger.debug(message);
Promise.all(StormLog.#additionalLoggers.map(logger2 => logger2.debug(message)));
}
}
/**
* Write a trace message to the logs.
*
* @param message - The message to be printed.
* @returns Either a promise that resolves to void or void.
*/
static trace(message) {
const logger = StormLog.getLogger();
if (StormLog.#logLevel >= _getLogLevel.LogLevel.TRACE) {
logger.trace(message);
Promise.all(StormLog.#additionalLoggers.map(logger2 => logger2.trace(message)));
}
}
/**
* Write an informational message to the logs.
*
* @param message - The message to be printed.
* @returns Either a promise that resolves to void or void.
*/
static log(message) {
const logger = StormLog.getLogger();
if (StormLog.#logLevel >= _getLogLevel.LogLevel.INFO) {
logger.info({
message,
level: "log"
});
Promise.all(StormLog.#additionalLoggers.map(logger2 => logger2.info(message)));
}
}
/**
* Write an message to the logs specifying how long it took to complete a process
* @param startTime - The start time of the process
* @param name - The name of the process
*/
static stopwatch(startTime, name) {
const logger = StormLog.getLogger();
if (StormLog.#logLevel >= _getLogLevel.LogLevel.INFO) {
const message = `
\u23F1\uFE0F Completed ${name ? ` ${name}` : ""} process in ${(0, _formatSince.formatSince)(startTime.since())}
`;
logger.info(message);
Promise.all(StormLog.#additionalLoggers.map(logger2 => logger2.info(message)));
}
}
/**
* Start a logging process to track
*
* @param name - The name of the process
*/
static start(name) {
if (this.#logLevel >= _getLogLevel.LogLevel.INFO) {
this.#logger.info(`\u25B6\uFE0F Starting process ${name}`);
}
return _stormDateTime.StormDateTime.current();
}
// /**
// * Write an message to the logs specifying how long it took to complete a process
// *
// * @param name - The name of the process
// * @param startTime - The start time of the process
// */
// public stopwatch(name?: string, startTime?: StormTime) {
// let _startTime = startTime;
// if (this.#logLevel < LogLevel.INFO) {
// return;
// }
// if (!name && !_startTime) {
// this.warn("No name or start time was provided to the stopwatch method");
// return;
// }
// if (!_startTime && !this.#processes.some(item => item.name === name)) {
// this.warn(
// `No start time was provided and the ${name} process was never started`
// );
// return;
// }
// if (name && this.#processes.some(item => item.name === name)) {
// _startTime = this.#processes.find(item => item.name === name)?.startedAt;
// }
// let proc = name;
// if (
// this.#processes.length > 0 &&
// proc &&
// this.#processes.some(item => item.name === proc)
// ) {
// proc = this.#processes
// .map(item => item.name)
// .slice(
// 0,
// this.#processes.findIndex(item => item.name === proc)
// )
// .join(" ❯ ");
// }
// const message = `\n${proc ? `⏱️ Completed ${proc}` : "The process has completed"} in ${
// _startTime ? formatSince(_startTime.since()) : "0ms"
// }\n`;
// this.#logger.info(message);
// Promise.all(this.additionalLoggers.map(logger => logger.info(message)));
// if (name && this.#processes.some(item => item.name === name)) {
// const index = this.#processes.findLastIndex(item => item.name === name);
// if (index) {
// this.#processes.splice(index, 1);
// }
// }
// }
// /**
// * Start a process
// *
// * @param options - The options of the child process
// */
// public child(options: { name: string } & Record<string, any>): IStormLog {
// return new StormLog(
// this.config,
// `${this.name} ❯ ${options?.name}`,
// this.additionalLoggers
// );
// }
/**
* Add a logger wrapper to the internal loggers list
*
* @param wrapper - The logger wrapper to use
*/
static addLogger(wrapper) {
if (wrapper) {
StormLog.#additionalLoggers.push(wrapper);
}
}
/**
* Allow child classes to specify additional pino log streams
*
* @returns Additional log streams to use during initialization
*/
static getStreams = () => [];
}
exports.StormLog = StormLog;
"use strict";
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getLogLevelLabel = exports.getLogLevel = exports.LogLevelLabel = exports.LogLevel = void 0;
const LogLevel = exports.LogLevel = {
SILENT: 0,
FATAL: 10,
ERROR: 20,
WARN: 30,
INFO: 40,
DEBUG: 60,
TRACE: 70,
ALL: 100
};
const LogLevelLabel = exports.LogLevelLabel = {
SILENT: "silent",
FATAL: "fatal",
ERROR: "error",
WARN: "warn",
INFO: "info",
DEBUG: "debug",
TRACE: "trace",
ALL: "all"
};
const getLogLevel = label => {
switch (label) {
case "all":
{
return LogLevel.ALL;
}
case "trace":
{
return LogLevel.TRACE;
}
case "debug":
{
return LogLevel.DEBUG;
}
case "info":
{
return LogLevel.INFO;
}
case "warn":
{
return LogLevel.WARN;
}
case "error":
{
return LogLevel.ERROR;
}
case "fatal":
{
return LogLevel.FATAL;
}
case "silent":
{
return LogLevel.SILENT;
}
default:
{
return LogLevel.INFO;
}
}
};
exports.getLogLevel = getLogLevel;
const getLogLevelLabel = logLevel => {
if (logLevel >= LogLevel.ALL) {
return LogLevelLabel.ALL;
}
if (logLevel >= LogLevel.TRACE) {
return LogLevelLabel.TRACE;
}
if (logLevel >= LogLevel.DEBUG) {
return LogLevelLabel.DEBUG;
}
if (logLevel >= LogLevel.INFO) {
return LogLevelLabel.INFO;
}
if (logLevel >= LogLevel.WARN) {
return LogLevelLabel.WARN;
}
if (logLevel >= LogLevel.ERROR) {
return LogLevelLabel.ERROR;
}
if (logLevel >= LogLevel.FATAL) {
return LogLevelLabel.FATAL;
}
if (logLevel <= LogLevel.SILENT) {
return LogLevelLabel.SILENT;
}
return LogLevelLabel.INFO;
};
exports.getLogLevelLabel = getLogLevelLabel;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getPinoOptions = void 0;
var _stormError = require("@storm-stack/errors/storm-error");
var _titleCase = require("@storm-stack/string-fns/title-case");
var _isRuntimeServer = require("@storm-stack/utilities/helper-fns/is-runtime-server");
var _getLogLevel = require("./get-log-level.cjs");
var _logSerializer = require("./log-serializer.cjs");
const getPinoOptions = (config, name, stacktrace = false) => {
config.logLevel ??= config.env === "production" ? "info" : "debug";
const _stacktrace = stacktrace || !(config?.env === "production" && !(0, _isRuntimeServer.isRuntimeServer)());
const errorSerializer = (0, _logSerializer.createErrorSerializer)(_stacktrace);
const baseOptions = {
name: name || "Storm Software",
enabled: (0, _getLogLevel.getLogLevel)(config.logLevel) > _getLogLevel.LogLevel.SILENT,
level: config.logLevel,
messageKey: "msg",
errorKey: "error",
redact: ["req.headers.authorization", "access_token", "data.access_token", "data.*.access_token", "data.*.accessToken", "accessToken", "data.accessToken", "DATABASE_URL", "data.*.email", "data.email", "email", "event.headers.authorization", "data.hashedPassword", "data.*.hashedPassword", "hashedPassword", "host", "jwt", "data.jwt", "data.*.jwt", "JWT", "data.JWT", "data.*.JWT", "password", "data.password", "data.*.password", "params", "data.salt", "data.*.salt", "salt", "secret", "data.secret", "data.*.secret"],
serializers: {
exception: errorSerializer,
err: errorSerializer,
error: errorSerializer,
fatal: errorSerializer
},
formatters: {
level: (levelLabel, levelNumber) => ({
logLevel: levelNumber,
logLevelLabel: (0, _titleCase.titleCase)(levelLabel)
}),
log: object => (0, _stormError.isStormError)(object.err) ? {
...object,
error: object.err
} : (0, _stormError.isStormError)(object.err) ? {
...object,
error: object.err
} : (0, _stormError.isStormError)(object.exception) ? {
...object,
error: object.exception
} : object
},
browser: {
disabled: (0, _getLogLevel.getLogLevel)(config.logLevel) === _getLogLevel.LogLevel.SILENT
}
};
return baseOptions;
};
exports.getPinoOptions = getPinoOptions;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getLogLevel = require("./get-log-level.cjs");
Object.keys(_getLogLevel).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _getLogLevel[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _getLogLevel[key];
}
});
});
var _getPinoOptions = require("./get-pino-options.cjs");
Object.keys(_getPinoOptions).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _getPinoOptions[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _getPinoOptions[key];
}
});
});
var _logSerializer = require("./log-serializer.cjs");
Object.keys(_logSerializer).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _logSerializer[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _logSerializer[key];
}
});
});
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createErrorSerializer = void 0;
var _stormError = require("@storm-stack/errors/storm-error");
var _serialization = require("@storm-stack/serialization");
var _utilityTypes = require("@storm-stack/types/utility-types");
var _pinoStdSerializers = require("pino-std-serializers");
const createErrorSerializer = stacktrace => err => {
try {
const stormError = (0, _stormError.getCauseFromUnknown)(err);
if (stacktrace === false) {
stormError.stack = _utilityTypes.EMPTY_STRING;
}
return {
..._serialization.StormParser.serialize(stormError),
fullMessage: stormError.toString(stacktrace)
};
} catch (error_) {
const stormError = _stormError.StormError.create(error_);
stormError.cause = err;
return (0, _pinoStdSerializers.errWithCause)(stormError);
}
};
exports.createErrorSerializer = createErrorSerializer;
+1
-1
{
"name": "@storm-stack/logging",
"version": "1.32.0",
"version": "1.34.0",
"type": "module",

@@ -5,0 +5,0 @@ "description": "⚡ The storm-stack monorepo contains utility applications, tools, and various libraries to create modern and scalable web applications.",

@@ -24,3 +24,3 @@ <!-- START header -->

[![Version](https://img.shields.io/badge/version-1.31.2-1fb2a6.svg?style=for-the-badge&color=1fb2a6)](https://prettier.io/)&nbsp;[![Nx](https://img.shields.io/badge/Nx-17.0.2-lightgrey?style=for-the-badge&logo=nx&logoWidth=20&&color=1fb2a6)](http://nx.dev/)&nbsp;[![NextJs](https://img.shields.io/badge/Next.js-14.0.2-lightgrey?style=for-the-badge&logo=nextdotjs&logoWidth=20&color=1fb2a6)](https://nextjs.org/)&nbsp;[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=for-the-badge&logo=commitlint&color=1fb2a6)](http://commitizen.github.io/cz-cli/)&nbsp;![Semantic-Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=for-the-badge&color=1fb2a6)&nbsp;[![documented with Fumadocs](https://img.shields.io/badge/documented_with-fumadocs-success.svg?style=for-the-badge&logo=readthedocs&color=1fb2a6)](https://fumadocs.vercel.app/)&nbsp;![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/storm-software/storm-stack/cr.yml?style=for-the-badge&logo=github-actions&color=1fb2a6)
[![Version](https://img.shields.io/badge/version-1.33.0-1fb2a6.svg?style=for-the-badge&color=1fb2a6)](https://prettier.io/)&nbsp;[![Nx](https://img.shields.io/badge/Nx-17.0.2-lightgrey?style=for-the-badge&logo=nx&logoWidth=20&&color=1fb2a6)](http://nx.dev/)&nbsp;[![NextJs](https://img.shields.io/badge/Next.js-14.0.2-lightgrey?style=for-the-badge&logo=nextdotjs&logoWidth=20&color=1fb2a6)](https://nextjs.org/)&nbsp;[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=for-the-badge&logo=commitlint&color=1fb2a6)](http://commitizen.github.io/cz-cli/)&nbsp;![Semantic-Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=for-the-badge&color=1fb2a6)&nbsp;[![documented with Fumadocs](https://img.shields.io/badge/documented_with-fumadocs-success.svg?style=for-the-badge&logo=readthedocs&color=1fb2a6)](https://fumadocs.vercel.app/)&nbsp;![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/storm-software/storm-stack/cr.yml?style=for-the-badge&logo=github-actions&color=1fb2a6)

@@ -27,0 +27,0 @@