packages/karma-esm/src/compiler.js
function createCompiler(config, karmaEmitter) {
  const cache = new Map();
  const watcher = chokidar.watch([]);

  watcher.on('change', filePath => {
    if (!filePath.endsWith('.test.js') && !filePath.endsWith('.spec.js')) {
      karmaEmitter.refreshFiles();
    }
    cache.delete(filePath);
  });

  function addToCache(filePath, code) {
    cache.set(filePath, code);
    watcher.add(filePath);
  }

  function babelCompile(filePath, code) {
    return babel.transform(code, {
      filename: filePath,
      ...config.babelOptions,
    }).code;
  }

  function compile(filePath, code) {
    // if we should not babel compile some files, only add them to the cache
    if (config.babel && config.babel.exclude) {
      if (config.babel.exclude.some(exclude => minimatch(filePath, exclude))) {
        addToCache(filePath, code);
        return code;
      }
    }

    const compiled = babelCompile(filePath, code);
    addToCache(filePath, compiled);
    return compiled;
  }

  function getCached(filePath) {
    return cache.get(filePath);
  }

  return {
    compile,
    getCached,
  };
}
function createCompiler(config, karmaEmitter) {
  const cache = new Map();
  const watcher = chokidar.watch([]);

  watcher.on('change', filePath => {
    if (!filePath.endsWith('.test.js') && !filePath.endsWith('.spec.js')) {
      karmaEmitter.refreshFiles();
    }
    cache.delete(filePath);
  });

  function addToCache(filePath, code) {
    cache.set(filePath, code);
    watcher.add(filePath);
  }

  function babelCompile(filePath, code) {
    return babel.transform(code, {
      filename: filePath,
      ...config.babelOptions,
    }).code;
  }

  function compile(filePath, code) {
    // if we should not babel compile some files, only add them to the cache
    if (config.babel && config.babel.exclude) {
      if (config.babel.exclude.some(exclude => minimatch(filePath, exclude))) {
        addToCache(filePath, code);
        return code;
      }
    }

    const compiled = babelCompile(filePath, code);
    addToCache(filePath, compiled);
    return compiled;
  }

  function getCached(filePath) {
    return cache.get(filePath);
  }

  return {
    compile,
    getCached,
  };
}
function createCompiler ( config , karmaEmitter ) { const cache = new Map ( ) ; const watcher = chokidar . watch ( [ ] ) ; watcher . on ( 'change' , filePath => { if ( ! filePath . endsWith ( '.test.js' ) && ! filePath . endsWith ( '.spec.js' ) ) { karmaEmitter . refreshFiles ( ) ; } cache . delete ( filePath ) ; } ) ; function addToCache ( filePath , code ) { cache . set ( filePath , code ) ; watcher . add ( filePath ) ; } function babelCompile ( filePath , code ) { return babel . transform ( code , { filename : filePath , ... config . babelOptions , } ) . code ; } function compile ( filePath , code ) { // if we should not babel compile some files, only add them to the cache if ( config . babel && config . babel . exclude ) { if ( config . babel . exclude . some ( exclude => minimatch ( filePath , exclude ) ) ) { addToCache ( filePath , code ) ; return code ; } } const compiled = babelCompile ( filePath , code ) ; addToCache ( filePath , compiled ) ; return compiled ; } function getCached ( filePath ) { return cache . get ( filePath ) ; } return { compile , getCached , } ; }
Sets up karma-esm compiler. Compiles files with babel, maintains
a cache and notifies karma when files change.
Sets up karma - esm compiler . Compiles files with babel maintains a cache and notifies karma when files change .