Home Reference Source Repository

src/js/typescript.js

import {SimpleCompilerBase} from '../compiler-base';
import _ from 'lodash';

const inputMimeTypes = ['text/typescript'];
let tss = null;

/**
 * @access private
 */ 
 export default class TypeScriptCompiler extends SimpleCompilerBase {
  constructor() {
    super();
    this.compilerOptions.sourceMap = true;

    this.compilerOptions = {
      module: 'commonjs',
      sourceMap: true
    };
  }

  static getInputMimeTypes() {
    return inputMimeTypes;
  }

  compileSync(sourceCode, filePath) {
    tss = tss || require('typescript-simple');
    
    // NB: Work around TypeScriptSimple modifying the options object
    let compiler = new tss.TypeScriptSimple(_.assign({}, this.compilerOptions));

    return {
      code: compiler.compile(sourceCode, filePath),
      mimeType: 'application/javascript'
    };
  }

  getCompilerVersion() {
    return require('typescript-simple/package.json').version;
  }
}