view src/worker-require.ts @ 509:041468f553e1 tip master

Merge pull request #57 from LucasThompson/fix/session-stack-max-call-stack Fix accidental recursion in PersistentStack
author Lucas Thompson <LucasThompson@users.noreply.github.com>
date Mon, 27 Nov 2017 11:04:30 +0000
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}'`);
    }
  };
}