Skip to content

Commit 87d1049

Browse files
rchaser53eddyerburgh
authored andcommitted
fix(typescript): use empty string when sourceMapText is undefined (#68)
1 parent 9b26acd commit 87d1049

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

lib/compilers/typescript-compiler.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ module.exports = function compileTypescript (scriptContent) {
5252
const tsConfig = getTypescriptConfig()
5353

5454
const res = typescript.transpileModule(scriptContent, tsConfig)
55+
const inputSourceMap = (res.sourceMapText !== undefined)
56+
? JSON.parse(res.sourceMapText)
57+
: ''
5558

5659
// handle ES modules in TS source code in case user uses non commonjs module
5760
// output and there is no .babelrc.
@@ -64,5 +67,5 @@ module.exports = function compileTypescript (scriptContent) {
6467
}
6568
}
6669

67-
return compileBabel(res.outputText, JSON.parse(res.sourceMapText), inlineBabelConfig)
70+
return compileBabel(res.outputText, inputSourceMap, inlineBabelConfig)
6871
}

test/TypeScript.spec.js

+20-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { shallow } from 'vue-test-utils'
22
import { resolve } from 'path'
33
import TypeScript from './resources/TypeScript.vue'
44
import jestVue from '../vue-jest'
5-
import { readFileSync, renameSync } from 'fs'
5+
import { readFileSync, renameSync, writeFileSync } from 'fs'
66
import cache from '../lib/cache'
77

88
beforeEach(() => {
@@ -28,3 +28,22 @@ test.skip('generates inline sourcemap', () => {
2828
const output = jestVue.process(fileString, filePath)
2929
expect(output).toContain(expectedMap)
3030
})
31+
32+
test('processes without sourcemap', () => {
33+
const configPath = resolve(__dirname, '../tsconfig.json')
34+
const tsconfigString = readFileSync(configPath, { encoding: 'utf8' })
35+
const tsconfig = JSON.parse(tsconfigString)
36+
tsconfig.compilerOptions.sourceMap = false
37+
writeFileSync(configPath, JSON.stringify(tsconfig))
38+
const filePath = resolve(__dirname, './resources/TypeScript.vue')
39+
const fileString = readFileSync(filePath, { encoding: 'utf8' })
40+
41+
try {
42+
expect(() => jestVue.process(fileString, filePath)).not.toThrow()
43+
} catch (err) {
44+
writeFileSync(configPath, tsconfigString)
45+
throw err
46+
}
47+
48+
writeFileSync(configPath, tsconfigString)
49+
})

0 commit comments

Comments
 (0)