diff --git a/index.js b/index.js index dc6b650..74c1127 100644 --- a/index.js +++ b/index.js @@ -15,9 +15,9 @@ let nycConfig; let testExclude; let babelConfig; -export async function transformSource(source, context, defaultTransformSource) { +export async function load(url, context, nextLoad) { if (context.format !== 'module' || loader.isLoading()) { - return defaultTransformSource(source, context, defaultTransformSource); + return nextLoad(url, context); } if (!nycConfig) { @@ -41,12 +41,14 @@ export async function transformSource(source, context, defaultTransformSource) { }; } - const filename = fileURLToPath(context.url); + const filename = fileURLToPath(url); /* babel-plugin-istanbul does this but the early check optimizes */ if (!testExclude.shouldInstrument(filename)) { - return defaultTransformSource(source, context, defaultTransformSource); + return nextLoad(url, context); } + const fromNext = await nextLoad(url, context); + let {source} = fromNext; if (typeof source !== 'string') { source = new TextDecoder().decode(source); } @@ -56,7 +58,7 @@ export async function transformSource(source, context, defaultTransformSource) { babelrc: false, configFile: false, filename, - /* Revisit this if transformSource adds support for returning sourceMap object */ + /* Revisit this if the load hook adds support for returning sourceMap object */ sourceMaps: babelConfig.produceSourceMap ? 'inline' : false, compact: babelConfig.compact, comments: babelConfig.preserveComments, @@ -69,5 +71,8 @@ export async function transformSource(source, context, defaultTransformSource) { ] }); - return defaultTransformSource(code, context, defaultTransformSource); + return { + format: fromNext.format, + source: code + }; } diff --git a/package.json b/package.json index 8ccf940..2b6a6a7 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "release": "standard-version" }, "engines": { - "node": ">=13.7.0" + "node": ">=16.12.0" }, "license": "ISC", "repository": { diff --git a/test/index.js b/test/index.js index a7040c3..566d80d 100644 --- a/test/index.js +++ b/test/index.js @@ -4,18 +4,19 @@ import {test} from 'libtap'; import * as loaderHook from '@istanbuljs/esm-loader-hook'; test('exports', async t => { - t.same(Object.keys(loaderHook), ['transformSource']); - t.match(loaderHook, {transformSource: Function}); + t.same(Object.keys(loaderHook), ['load']); + t.match(loaderHook, {load: Function}); }); test('transform buffer', async t => { - const {source} = await loaderHook.transformSource( - Buffer.from('export default true;'), + const {source} = await loaderHook.load( + new URL('../fixtures/buffer.js', import.meta.url), { - format: 'module', - url: new URL('../fixtures/buffer.js', import.meta.url) + format: 'module' }, - source => ({source}) + () => ({ + source: Buffer.from('export default true;') + }) ); t.match(source, /function\s+cov_/u); diff --git a/test/no-source-maps.js b/test/no-source-maps.js index 751f32e..5b7d86b 100644 --- a/test/no-source-maps.js +++ b/test/no-source-maps.js @@ -1,12 +1,11 @@ import {test} from 'libtap'; -import {transformSource} from '@istanbuljs/esm-loader-hook'; +import {load} from '@istanbuljs/esm-loader-hook'; test('check transform', async t => { - const context = { - format: 'module', - url: new URL('../fixtures/no-source-map.js', import.meta.url) - }; - const {source} = await transformSource('export default true;', context, source => ({source})); + const {source} = await load( + new URL('../fixtures/no-source-map.js', import.meta.url), + {format: 'module'}, + () => ({source: 'export default true;'})); t.match(source, /function\s+cov_/u); t.match(source, /export\s+default\s+true/u);