view src/worker-require.ts @ 380:b81ed55fdee3

Basic notes component in place. Room for reducing dupe across these WaveComponent derived components, but will wait until all of them are implemented to see the common logic.
author Lucas Thompson <dev@lucas.im>
date Wed, 31 May 2017 15:15:55 +0100
parents 53ea6406d601
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}'`);
    }
  };
}