Socket
Socket
Sign inDemoInstall

@percy/logger

Package Overview
Dependencies
Maintainers
6
Versions
238
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@percy/logger - npm Package Compare versions

Comparing version 1.1.0 to 1.1.1

27

dist/index.js

@@ -1,16 +0,6 @@

import Logger from '#logger';
import Logger from './logger.js';
export function logger(name) {
return new Logger().group(name);
}
Object.assign(logger, {
format: (...args) => new Logger().format(...args),
query: (...args) => new Logger().query(...args),
connect: (...args) => new Logger().connect(...args),
remote: (...args) => new Logger().remote(...args),
loglevel: (...args) => new Logger().loglevel(...args)
});
Object.defineProperties(logger, {
Logger: {
get: () => Logger
},
stdout: {

@@ -21,4 +11,19 @@ get: () => Logger.stdout

get: () => Logger.stderr
},
constructor: {
get: () => Logger
},
instance: {
get: () => new Logger()
},
query: {
value: (...args) => logger.instance.query(...args)
},
format: {
value: (...args) => logger.instance.format(...args)
},
loglevel: {
value: (...args) => logger.instance.loglevel(...args)
}
});
export default logger;

@@ -161,9 +161,2 @@ import { colors } from './utils.js';

this.log(debug, 'warn', `Warning: ${message}`, meta);
} // Returns true if a socket is present and ready
get isRemote() {
var _this$socket;
return ((_this$socket = this.socket) === null || _this$socket === void 0 ? void 0 : _this$socket.readyState) === 1;
} // Generic log method accepts a debug group, log level, log message, and optional meta

@@ -174,24 +167,8 @@ // information to store with the message and other info

log(debug, level, message, meta = {}) {
// message might be an error object
let isError = typeof message !== 'string' && (level === 'error' || level === 'debug');
let error = isError && message; // if remote, send logs there
// message might be an error-like object
let err = typeof message !== 'string' && (level === 'debug' || level === 'error');
err && (err = message.message ? Error.prototype.toString.call(message) : message.toString()); // save log entries
if (this.isRemote) {
// serialize error messages
message = isError && 'stack' in error ? {
message: error.message,
stack: error.stack
} : message;
return this.socket.send(JSON.stringify({
log: [debug, level, message, {
remote: true,
...meta
}]
}));
} // ensure the message is a string
message = isError && message.stack || message.message || message.toString(); // timestamp each log
let timestamp = Date.now();
message = err ? message.stack || err : message.toString();
let entry = {

@@ -207,5 +184,5 @@ debug,

if (this.shouldLog(debug, level)) {
if (err && this.level !== 'debug') message = err;
let elapsed = timestamp - (this.lastlog || timestamp);
if (isError && this.level !== 'debug') message = error.toString();
this.write(level, this.format(debug, error ? 'error' : level, message, elapsed));
this.write(level, this.format(debug, err ? 'error' : level, message, elapsed));
this.lastlog = timestamp;

@@ -224,99 +201,5 @@ }

let progress = stdout.isTTY && this._progress;
if (progress) {
stdout.cursorTo(0);
stdout.clearLine();
}
if (progress) stdout.cursorTo(0).clearLine();
(level === 'info' ? stdout : stderr).write(message + '\n');
if (!((_this$_progress = this._progress) !== null && _this$_progress !== void 0 && _this$_progress.persist)) delete this._progress;else if (progress) stdout.write(progress.message);
} // Opens a socket logging connection
connect(socket) {
// send logging environment info
let PERCY_DEBUG = process.env.PERCY_DEBUG;
let PERCY_LOGLEVEL = process.env.PERCY_LOGLEVEL || this.loglevel();
socket.send(JSON.stringify({
env: {
PERCY_DEBUG,
PERCY_LOGLEVEL
}
})); // attach remote logging handler
socket.onmessage = ({
data
}) => {
let {
log,
logAll
} = JSON.parse(data);
if (logAll) logAll.forEach(e => this.messages.add(e));
if (log) this.log(...log);
}; // return a cleanup function
return () => {
socket.onmessage = null;
};
} // Connects to a remote logger
async remote(createSocket, timeout = 1000) {
if (this.isRemote) return; // if not already connected, wait until the timeout
let err = await new Promise(resolve => {
let done = event => {
if (timeoutid == null) return;
timeoutid = clearTimeout(timeoutid);
if (this.socket) this.socket.onopen = this.socket.onerror = null;
resolve((event === null || event === void 0 ? void 0 : event.error) || (event === null || event === void 0 ? void 0 : event.type) === 'error' && 'Error: Socket connection failed');
};
let timeoutid = setTimeout(done, timeout, {
error: 'Error: Socket connection timed out'
});
Promise.resolve().then(async () => {
this.socket = await createSocket();
if (this.isRemote) return done();
this.socket.onopen = this.socket.onerror = done;
}).catch(error => done({
error
}));
}); // there was an error connecting, will fallback to normal logging
if (err) {
this.log('logger', 'debug', 'Unable to connect to remote logger');
this.log('logger', 'debug', err);
return;
} // send any messages already logged in this environment
if (this.messages.size) {
this.socket.send(JSON.stringify({
logAll: Array.from(this.messages).map(entry => ({ ...entry,
meta: {
remote: true,
...entry.meta
}
}))
}));
} // attach an incoming message handler
this.socket.onmessage = ({
data
}) => {
let {
env
} = JSON.parse(data); // update local environment info
if (env) Object.assign(process.env, env);
}; // return a cleanup function
return () => {
this.socket.onmessage = null;
this.socket = null;
};
}

@@ -323,0 +206,0 @@

{
"name": "@percy/logger",
"version": "1.1.0",
"version": "1.1.1",
"license": "MIT",

@@ -18,7 +18,5 @@ "repository": {

"dist",
"test/helpers.js",
"test/client.js"
"test/helpers.js"
],
"main": "./dist/index.js",
"browser": "./dist/bundle.js",
"type": "module",

@@ -31,8 +29,2 @@ "exports": {

},
"imports": {
"#logger": {
"node": "./dist/logger.js",
"default": "./dist/browser.js"
}
},
"scripts": {

@@ -44,8 +36,3 @@ "build": "node ../../scripts/build",

},
"rollup": {
"output": {
"name": "PercyLogger"
}
},
"gitHead": "bf551295a8a618502bb2db92ff302e19dc956b51"
"gitHead": "d74af6a294f89fcb23c4ec598bb68a884ce47907"
}

@@ -36,12 +36,11 @@ import logger from '@percy/logger';

const {
Logger,
loglevel
} = logger;
const helpers = {
stdout: [],
stderr: [],
loglevel,
loglevel: logger.loglevel,
get instance() {
return logger.instance;
},
async mock(options = {}) {

@@ -51,7 +50,7 @@ helpers.reset();

if (options.level) {
loglevel(options.level);
logger.loglevel(options.level);
}
if (process.env.__PERCY_BROWSERIFIED__) {
spy(Logger.prototype, 'write', function(lvl, msg) {
spy(logger.constructor.prototype, 'write', function(lvl, msg) {
let stdio = lvl === 'info' ? 'stdout' : 'stderr';

@@ -69,8 +68,7 @@ helpers[stdio].push(sanitizeLog(msg, options));

for (let stdio of ['stdout', 'stderr']) {
Logger[stdio] = Object.assign(new Writable(), {
logger.constructor[stdio] = Object.assign(new Writable(), {
isTTY: options.isTTY,
columns: options.isTTY ? 100 : null,
isTTY: options.isTTY,
cursorTo() {},
clearLine() {},
cursorTo() { return this; },
clearLine() { return this; },
_write(chunk, encoding, callback) {

@@ -86,4 +84,4 @@ helpers[stdio].push(sanitizeLog(chunk.toString(), options));

reset(soft) {
if (soft) loglevel('info');
else delete Logger.instance;
if (soft) logger.loglevel('info');
else delete logger.constructor.instance;

@@ -101,3 +99,3 @@ helpers.stdout.length = 0;

dump() {
let msgs = Array.from((Logger.instance && Logger.instance.messages) || []);
let msgs = Array.from(logger.instance.messages);
if (!msgs.length) return;

@@ -104,0 +102,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc