Sign In

@applitools/logger

Package Overview
Dependencies
Maintainers
47
Versions
112
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@applitools/logger - npm Package Compare versions

Comparing version
2.1.2
to
2.1.3
+15
-0
CHANGELOG.md
# Changelog
## [2.1.3](https://github.com/Applitools-Dev/sdk/compare/js/logger@2.1.2...js/logger@2.1.3) (2025-05-07)
### Bug Fixes
* silent tunnel warning | AD-9842 ([#2932](https://github.com/Applitools-Dev/sdk/issues/2932)) ([e83a2ff](https://github.com/Applitools-Dev/sdk/commit/e83a2fffc5c73edda8c52c101356f94d0c600959))
### Dependencies
* @applitools/utils bumped to 1.8.1
#### Bug Fixes
* offline test dist readings | AD-9894 ([#2945](https://github.com/Applitools-Dev/sdk/issues/2945)) ([92293f4](https://github.com/Applitools-Dev/sdk/commit/92293f40ddbbb015fba224a70158bbd0cdbcf799))
## [2.1.2](https://github.com/Applitools-Dev/sdk/compare/js/logger@2.1.1...js/logger@2.1.2) (2025-03-30)

@@ -4,0 +19,0 @@

@@ -5,4 +5,7 @@ "use strict";

const logger_1 = require("./logger");
// @ts-ignore
const promises_1 = require("node:timers/promises");
function makeSpyLogger({ level } = {}) {
const calls = [];
const waiter = makeWaiter();
const logger = (0, logger_1.makeLogger)({

@@ -12,11 +15,15 @@ handler: {

calls.push({ level: 'info', message });
waiter.notifyAll();
},
error(message) {
calls.push({ level: 'error', message });
waiter.notifyAll();
},
warn(message) {
calls.push({ level: 'warn', message });
waiter.notifyAll();
},
fatal(message) {
calls.push({ level: 'fatal', message });
waiter.notifyAll();
},

@@ -29,2 +36,22 @@ },

calls,
waitForNextCall(timeout = 5000) {
const start = Date.now();
return waiter.wait(start + timeout, `Timeout waiting for the next logger call. Current calls: ${calls.length}. Timeout: ${timeout}ms`);
},
async waitForLength(length, timeout = 5000) {
const start = Date.now();
while (calls.length < length) {
await waiter.wait(start + timeout, `Timeout waiting for logger to have ${length} calls reached. Current calls: ${calls.length}. Timeout: ${timeout}ms`);
}
},
async waitForLog(message, { level, timeout = 5000 } = {}) {
const start = Date.now();
while (!calls.some(call => call.message.includes(message) && (!level || call.level === level))) {
await waiter.wait(start + timeout, `Timeout waiting for logger to have message "${message}". Timeout: ${timeout}ms`);
}
},
extend: (anotherLogger) => {
logger.log('not extending spy logger with logger', anotherLogger);
return logger;
},
get isSpyLogger() {

@@ -36,1 +63,27 @@ return true;

exports.makeSpyLogger = makeSpyLogger;
function makeWaiter() {
const waiters = [];
return {
wait(deadline, errorMessage) {
const timeLeft = deadline - Date.now();
const abortController = new AbortController();
if (timeLeft > 0) {
return Promise.race([
new Promise(res => waiters.push(res)),
(0, promises_1.setTimeout)(timeLeft, new Error(errorMessage !== null && errorMessage !== void 0 ? errorMessage : `Timeout waiting for logger`), {
signal: abortController.signal,
}),
]).then(error => {
abortController.abort();
if (error instanceof Error) {
throw error;
}
});
}
throw new Error(errorMessage !== null && errorMessage !== void 0 ? errorMessage : `Timeout waiting for logger`);
},
notifyAll() {
waiters.splice(0).forEach(res => res());
},
};
}
+2
-2
{
"name": "@applitools/logger",
"version": "2.1.2",
"version": "2.1.3",
"description": "Applitools logger",

@@ -52,3 +52,3 @@ "keywords": [

"dependencies": {
"@applitools/utils": "1.8.0",
"@applitools/utils": "1.8.1",
"chalk": "4.1.2",

@@ -55,0 +55,0 @@ "debug": "4.3.4"

@@ -102,2 +102,8 @@ import type { LogLevel } from './log-level';

readonly calls: ReadonlyArray<LogCall>;
waitForNextCall(timeout?: number): Promise<void>;
waitForLength(length: number, timeout?: number): Promise<void>;
waitForLog(message: string, options?: {
level?: LogLevelName;
timeout?: number;
}): Promise<void>;
}

@@ -104,0 +110,0 @@ export interface LogCall {