Skip to content
This repository has been archived by the owner on Oct 1, 2020. It is now read-only.

Commit

Permalink
fix: Handle when transpileOnly option is used (#94)
Browse files Browse the repository at this point in the history
  • Loading branch information
brian-mann authored May 19, 2020
1 parent d33103f commit bfdc37d
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 4 deletions.
17 changes: 13 additions & 4 deletions lib/typescript-overrides.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,29 @@
const debug = require('debug')('cypress:webpack')
const _ = require('lodash')

import { CompilerOptions, CreateProgramOptions } from 'typescript'

let sourceMapOverride: null | boolean = null

export const getProgramOptions = (rootNamesOrOptions: CreateProgramOptions, options: CompilerOptions): CompilerOptions => {
return _.isArray(rootNamesOrOptions) ? options : rootNamesOrOptions.options
}

export const tryRequireTypescript = () => {
try {
// reset each time this is called
sourceMapOverride = null

const typescript = require('typescript')
const typescript = require('typescript') as typeof import('typescript')

debug('typescript found, overriding typescript.createProgram()')

const { createProgram } = typescript

typescript.createProgram = (...args: [any]) => {
const [programOptions] = args
const { options } = programOptions
typescript.createProgram = (...args: any[]) => {
const [rootNamesOrOptions, _options] = args

const options = getProgramOptions(rootNamesOrOptions, _options)

debug('typescript unmodified createProgram options %o', options)

Expand All @@ -31,6 +39,7 @@ export const tryRequireTypescript = () => {
debug('typescript modified createProgram options %o', options)
}

// @ts-ignore
return createProgram.apply(typescript, args)
}

Expand Down
21 changes: 21 additions & 0 deletions test/unit/typescript-overrides.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,5 +117,26 @@ describe('./lib/typescript-overrides', () => {
},
})
})

it('sets options when given an array', () => {
const typescriptOverrides = proxyquire('../../lib/typescript-overrides', {
typescript,
})

typescriptOverrides.overrideSourceMaps(true)

expect(typescriptOverrides.getSourceMapOverride()).to.be.true

typescript.createProgram([], {
sourceMap: false,
inlineSources: true,
inlineSourceMap: true,
})

expect(createProgram).to.be.calledOn(typescript)
expect(createProgram).to.be.calledWith([], {
sourceMap: true,
})
})
})
})

0 comments on commit bfdc37d

Please # to comment.