view src/worker-require.ts @ 236:53ea6406d601

Generate new project with latest @angular/cli, including Angular 4.
author Lucas Thompson <dev@lucas.im>
date Tue, 25 Apr 2017 20:01:09 +0100
parents
children
line wrap: on
line source
/**
 * Created by lucas on 01/12/2016.
 */

/* This is a really ad-hoc and crappy way of re-exporting modules,
 * whilst trying to reduce global namespace pollution
 * The main use case is providing access to npm modules inside a worker via importScripts
 * over using some compiled version (a la *.min.js, *.umd.js etc)
 * a better solution would be a custom webpack bundle,
 * but the current build system in angular-cli doesn't provide a way for custom webpack bundles
 * ....unless I am missing something
 *
 * this does, however, mean that modules will be loaded twice..
 * once by index.html and once by the worker..
 * one could potentially run a custom post build script
 * to remove the script tag in index.html generated by angular-cli for scripts.bundle
 * .. or find another way of doing this entirely....
 */

import extractionWorker from './app/services/feature-extraction/FeatureExtractionWorker';

const modules = {
  'feature-extraction-worker': extractionWorker
};

if (typeof (self as any).importScripts === 'function' /* in a worker */) {

  self['require'] = (moduleName) => {
    if (modules.hasOwnProperty(moduleName)) {
      return modules[moduleName];
    } else {
      throw new Error(`Cannot find module '${moduleName}'`);
    }
  };
}