|
12 | 12 |
|
13 | 13 | (function (global) { |
14 | 14 |
|
15 | | - var isBrowser = typeof window != 'undefined'; |
| 15 | + var isWorker = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; |
| 16 | + var isBrowser = typeof window != 'undefined' && !isWorker; |
16 | 17 | var Loader = global.Reflect && global.Reflect.Loader || require('./loader'); |
17 | 18 | var Promise = global.Promise || require('when/es6-shim/Promise'); |
18 | 19 |
|
|
59 | 60 | } |
60 | 61 |
|
61 | 62 | var fetchTextFromURL; |
62 | | - if (isBrowser) { |
| 63 | + if (isBrowser || isWorker) { |
63 | 64 | fetchTextFromURL = function(url, fulfill, reject) { |
64 | 65 | var xhr = new XMLHttpRequest(); |
65 | 66 | var sameDomain = true; |
|
112 | 113 | } |
113 | 114 |
|
114 | 115 | var System = new Loader({ |
115 | | - global: isBrowser ? window : global, |
| 116 | + global: isBrowser ? window : (isWorker ? self : global), |
116 | 117 | strict: true, |
117 | 118 | normalize: function(name, parentName, parentAddress) { |
118 | 119 | if (typeof name != 'string') |
|
204 | 205 | // according to https://github.com/jorendorff/js-loaders/blob/master/browser-loader.js#L238 |
205 | 206 | // we should encode everything, but it breaks for servers that don't expect it |
206 | 207 | // like in (https://github.com/systemjs/systemjs/issues/168) |
207 | | - if (isBrowser) |
| 208 | + if (isBrowser || isWorker) |
208 | 209 | outPath = outPath.replace(/#/g, '%40'); |
209 | 210 |
|
210 | 211 | return toAbsoluteURL(this.baseURL, outPath); |
|
219 | 220 | }, |
220 | 221 | }); |
221 | 222 |
|
222 | | - if (isBrowser) { |
223 | | - var href = window.location.href.split('#')[0].split('?')[0]; |
| 223 | + if (isBrowser || isWorker) { |
| 224 | + var href = global.location.href.split('#')[0].split('?')[0]; |
224 | 225 | System.baseURL = href.substring(0, href.lastIndexOf('/') + 1); |
225 | 226 | } |
226 | 227 | else { |
|
0 commit comments