view src/worker-require.ts @ 394:f45a916eb5b1

Use the cross hair layer for notes, tracks and curve. This involved bodging in unit to ShapedFeatureData, which isn't particularly easy to do because this isn't an encapsulated type. Need to come back to improving this, as I am monkey-patching a unit property onto Arrays etc.
author Lucas Thompson <dev@lucas.im>
date Thu, 01 Jun 2017 18:55: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}'`);
    }
  };
}