Skip to content

Commit

Permalink
fix: Correctly revert to undefined if no previous loader exists
Browse files Browse the repository at this point in the history
  • Loading branch information
danez committed Dec 7, 2021
1 parent 9b39fbd commit cf74daf
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ export function addHook(hook, opts = {}) {
throw new TypeError(`Invalid Extension: ${ext}`);
}
const oldLoader = Module._extensions[ext] || originalJSLoader;
oldLoaders[ext] = oldLoader;
oldLoaders[ext] = Module._extensions[ext];

loaders[ext] = Module._extensions[ext] = function newLoader(mod, filename) {
let compile;
Expand Down
26 changes: 26 additions & 0 deletions test/basics.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,29 @@ test('matcher is called only once per file', (t) => {

reverts.forEach(call);
});

test('reverts to previous loader', (t) => {
require.extensions['.foojs'] = require.extensions['.js'];
const revert = t.context.addHook((code) => code.replace('@@a', '<a>'), {
exts: ['.foojs'],
});

t.not(require.extensions['.foojs'], require.extensions['.js']);

revert();

t.is(require.extensions['.foojs'], require.extensions['.js']);
});

test('reverts to nothing if no previous loader', (t) => {
t.is(require.extensions['.foo2js'], undefined);
const revert = t.context.addHook((code) => code.replace('@@a', '<a>'), {
exts: ['.foo2js'],
});

t.not(require.extensions['.foo2js'], undefined);

revert();

t.is(require.extensions['.foo2js'], undefined);
});

0 comments on commit cf74daf

Please sign in to comment.