annotate 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
rev   line source
dev@236 1 /**
dev@236 2 * Created by lucas on 01/12/2016.
dev@236 3 */
dev@236 4
dev@236 5 /* This is a really ad-hoc and crappy way of re-exporting modules,
dev@236 6 * whilst trying to reduce global namespace pollution
dev@236 7 * The main use case is providing access to npm modules inside a worker via importScripts
dev@236 8 * over using some compiled version (a la *.min.js, *.umd.js etc)
dev@236 9 * a better solution would be a custom webpack bundle,
dev@236 10 * but the current build system in angular-cli doesn't provide a way for custom webpack bundles
dev@236 11 * ....unless I am missing something
dev@236 12 *
dev@236 13 * this does, however, mean that modules will be loaded twice..
dev@236 14 * once by index.html and once by the worker..
dev@236 15 * one could potentially run a custom post build script
dev@236 16 * to remove the script tag in index.html generated by angular-cli for scripts.bundle
dev@236 17 * .. or find another way of doing this entirely....
dev@236 18 */
dev@236 19
dev@236 20 import extractionWorker from './app/services/feature-extraction/FeatureExtractionWorker';
dev@236 21
dev@236 22 const modules = {
dev@236 23 'feature-extraction-worker': extractionWorker
dev@236 24 };
dev@236 25
dev@236 26 if (typeof (self as any).importScripts === 'function' /* in a worker */) {
dev@236 27
dev@236 28 self['require'] = (moduleName) => {
dev@236 29 if (modules.hasOwnProperty(moduleName)) {
dev@236 30 return modules[moduleName];
dev@236 31 } else {
dev@236 32 throw new Error(`Cannot find module '${moduleName}'`);
dev@236 33 }
dev@236 34 };
dev@236 35 }