From d78d66d3853eaf3836d0d9f237492a4ff7fbc106 Mon Sep 17 00:00:00 2001 From: Greg Lockwood Date: Mon, 29 Apr 2019 15:12:07 -0700 Subject: [PATCH] fix(emit): Omit keys from sourcemap object if sourcemaps are enabled --- index.js | 2 +- test/compiler.js | 6 +++-- .../emit-declaration.test.js.snap | 2 +- .../emit-declaration/emit-declaration.test.js | 25 ++++++++++++++++++- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index a424ffd..103442b 100644 --- a/index.js +++ b/index.js @@ -63,7 +63,7 @@ module.exports = function(content, ...rest) { const cssModuleInterfaceFilename = filenameToTypingsFilename(filename); const { read, write } = makeFileHandlers(cssModuleInterfaceFilename); - const keyRegex = /"([^\\"]+)":/g; + const keyRegex = /"([^\\"]+)":\s*"(?:[^\\"]+)",?$/gm; let match; const cssModuleKeys = []; diff --git a/test/compiler.js b/test/compiler.js index 900dae6..4935e48 100644 --- a/test/compiler.js +++ b/test/compiler.js @@ -3,6 +3,7 @@ const webpack = require('webpack'); const memoryfs = require('memory-fs'); module.exports = (entry, options = {}) => { + const { sourceMap, ...loaderOptions } = options; const compiler = webpack({ context: path.dirname(entry), entry, @@ -17,12 +18,13 @@ module.exports = (entry, options = {}) => { use: [ { loader: require.resolve('../index.js'), - options + options: loaderOptions }, { loader: 'css-loader', options: { - modules: true + modules: true, + sourceMap: !!sourceMap } } ] diff --git a/test/emit-declaration/__snapshots__/emit-declaration.test.js.snap b/test/emit-declaration/__snapshots__/emit-declaration.test.js.snap index 2a22a3b..8df0751 100644 --- a/test/emit-declaration/__snapshots__/emit-declaration.test.js.snap +++ b/test/emit-declaration/__snapshots__/emit-declaration.test.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Can emit valid declaration 1`] = ` +exports[`Can emit valid declaration without sourceMaps 1`] = ` "// This file is automatically generated. // Please do not change this file! interface CssExports { diff --git a/test/emit-declaration/emit-declaration.test.js b/test/emit-declaration/emit-declaration.test.js index deb7ed6..8bb7543 100644 --- a/test/emit-declaration/emit-declaration.test.js +++ b/test/emit-declaration/emit-declaration.test.js @@ -1,7 +1,7 @@ const fs = require('fs'); const compiler = require('../compiler.js'); -test('Can emit valid declaration', async () => { +test('Can emit valid declaration without sourceMaps', async () => { await compiler(require.resolve('./index.js')); const declaration = fs.readFileSync( @@ -11,3 +11,26 @@ test('Can emit valid declaration', async () => { expect(declaration).toMatchSnapshot(); }); + +test('Can emit valid declaration with sourceMap', async () => { + await compiler(require.resolve('./index.js'), { sourceMap: true }); + + const declaration = fs.readFileSync( + require.resolve('./index.css.d.ts'), + 'utf-8' + ); + + expect(declaration).toMatchInlineSnapshot(` +"// This file is automatically generated. +// Please do not change this file! +interface CssExports { + 'otherClass': string; + 'someClass': string; + 'validClass': string; +} +declare var cssExports: CssExports; +export = cssExports; +" +`); +}); +