Skip to content

Commit

Permalink
feat: Re-emit messages from legacy namespace on new namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
phated committed Mar 23, 2024
1 parent c45c485 commit 23bf120
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 1 deletion.
11 changes: 11 additions & 0 deletions index.js
Expand Up @@ -3,14 +3,25 @@
var format = require('util').format;

var sparkles = require('sparkles');
var legacySparkles = require('sparkles/legacy');

var levels = ['debug', 'info', 'warn', 'error'];

function getLogger(namespace) {
var logger = sparkles(namespace);
var deprecatedLogger = legacySparkles(namespace);

levels.forEach(function (level) {
logger[level] = makeLogLevel(logger, level);

// Wire up listeners for every level on the deprecated namespace
// If anything gets emitted on this namespace, we'll emit the
// `deprecated` event and re-emit the event on the new logger
deprecatedLogger.on(level, function () {
logger.emit('deprecated');
var args = Array.prototype.slice.call(arguments);
logger[level].apply(logger, args);
});
});

return logger;
Expand Down
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -22,7 +22,7 @@
"test": "nyc mocha --async-only"
},
"dependencies": {
"sparkles": "^2.0.0"
"sparkles": "^2.1.0"
},
"devDependencies": {
"eslint": "^7.32.0",
Expand Down
80 changes: 80 additions & 0 deletions test/index.js
Expand Up @@ -2,6 +2,8 @@

var expect = require('expect');

var sparklesLegacy = require('sparkles/legacy');

var glogg = require('../');

describe('glogg', function () {
Expand Down Expand Up @@ -96,3 +98,81 @@ describe('glogg', function () {
debug('test');
});
});

describe('events on legacy namespace', function () {
var logger;
var legacy;

beforeEach(function (done) {
var namespace = 'glogg-test';
logger = glogg(namespace);
legacy = sparklesLegacy(namespace);
done();
});

afterEach(function (done) {
logger.remove();
legacy.remove();
done();
});

it('emits deprecated event and forwards debug to logger', function (done) {
var deprecated = false;
logger.on('deprecated', function () {
deprecated = true;
});

logger.on('debug', function (msg) {
expect(deprecated).toEqual(true);
expect(msg).toEqual('test');
done();
});

legacy.emit('debug', 'test');
});

it('emits deprecated event and forwards info to logger', function (done) {
var deprecated = false;
logger.on('deprecated', function () {
deprecated = true;
});

logger.on('info', function (msg) {
expect(deprecated).toEqual(true);
expect(msg).toEqual('test');
done();
});

legacy.emit('info', 'test');
});

it('emits deprecated event and forwards warn to logger', function (done) {
var deprecated = false;
logger.on('deprecated', function () {
deprecated = true;
});

logger.on('warn', function (msg) {
expect(deprecated).toEqual(true);
expect(msg).toEqual('test');
done();
});

legacy.emit('warn', 'test');
});

it('emits deprecated event and forwards error to logger', function (done) {
var deprecated = false;
logger.on('deprecated', function () {
deprecated = true;
});

logger.on('error', function (msg) {
expect(deprecated).toEqual(true);
expect(msg).toEqual('test');
done();
});

legacy.emit('error', 'test');
});
});

0 comments on commit 23bf120

Please sign in to comment.