|
2 | 2 | * Traceur and Babel transpile hook for Loader
|
3 | 3 | */
|
4 | 4 | (function(Loader) {
|
| 5 | + var g = __global; |
| 6 | + |
| 7 | + function getTranspilerModule(globalName) { |
| 8 | + return System.newModule({ 'default': g[globalName], __useDefault: true }); |
| 9 | + } |
| 10 | + var firstRun = true; |
| 11 | + |
5 | 12 | // use Traceur by default
|
6 | 13 | Loader.prototype.transpiler = 'traceur';
|
7 | 14 |
|
8 | 15 | Loader.prototype.transpile = function(load) {
|
| 16 | + // pick up Transpiler modules from existing globals on first run if set |
| 17 | + if (firstRun) { |
| 18 | + if (g.traceur && !this.has('traceur')) |
| 19 | + this.set('traceur', getTranspilerModule('traceur')); |
| 20 | + if (g.babel && !this.has('babel')) |
| 21 | + this.set('babel', getTranspilerModule('babel')); |
| 22 | + firstRun = false; |
| 23 | + } |
| 24 | + |
9 | 25 | var self = this;
|
10 | 26 | return self['import'](self.transpiler).then(function(transpiler) {
|
11 | 27 | if (transpiler.__useDefault)
|
|
14 | 30 | });
|
15 | 31 | };
|
16 | 32 |
|
17 |
| - var g = __global; |
18 |
| - |
19 | 33 | Loader.prototype.instantiate = function(load) {
|
20 | 34 | // load transpiler as a global (avoiding System clobbering)
|
21 | 35 | if (load.name === this.transpiler)
|
|
24 | 38 | execute: function() {
|
25 | 39 | var curSystem = g.System;
|
26 | 40 | var curLoader = g.Reflect.Loader;
|
27 |
| - __eval('(function(require,exports,module){' + load.source + '})();', g, load); |
| 41 | + __eval(load.source, g, load); |
28 | 42 | g.System = curSystem;
|
29 | 43 | g.Reflect.Loader = curLoader;
|
30 |
| - return System.newModule({ 'default': g[load.name], __useDefault: true }); |
| 44 | + return getTranspilerModule(load.name); |
31 | 45 | }
|
32 | 46 | };
|
33 | 47 | };
|
|
0 commit comments