@@ -2,12 +2,14 @@ var Funnel = require('broccoli-funnel');
22var mergeTrees = require ( 'broccoli-merge-trees' ) ;
33var stew = require ( 'broccoli-stew' ) ;
44var TraceurCompiler = require ( './tools/broccoli/traceur' ) ;
5+ var TypescriptCompiler = require ( './tools/broccoli/typescript' ) ;
56var renderLodashTemplate = require ( 'broccoli-lodash' ) ;
67
7- var modulesTree = new Funnel ( 'modules' , { include : [ '**/**' ] , exclude : [ 'angular2/src/core/zone/vm_turn_zone.es6' ] } ) ;
8+ var modulesTree = new Funnel (
9+ 'modules' , { include : [ '**/**' ] , exclude : [ 'angular2/src/core/zone/vm_turn_zone.es6' ] } ) ;
810
9- // Use Traceur to transpile original sources to ES6
10- var cjsTree = new TraceurCompiler ( modulesTree , '.js' , {
11+ // Use Traceur to transpile original sources to ES5
12+ var traceurOpts = {
1113 sourceMaps : true ,
1214 annotations : true , // parse annotations
1315 types : true , // parse types
@@ -17,18 +19,13 @@ var cjsTree = new TraceurCompiler(modulesTree, '.js', {
1719 // Don't use type assertions since this is partly transpiled by typescript
1820 typeAssertions : false ,
1921 modules : 'commonjs'
20- } , true ) ;
21-
22- // Munge the filenames since we use an '.es6' extension
23- cjsTree = stew . rename ( cjsTree , function ( relativePath ) {
24- return relativePath . replace ( / \. ( j s | e s 6 ) \. m a p $ / , '.map' ) . replace ( / \. e s 6 $ / , '.js' ) ;
25- } ) ;
22+ } ;
23+ var cjsTree = new TraceurCompiler ( modulesTree , '.js' , '.map' , traceurOpts ) ;
2624
27- // Now we add a few more files to the es6 tree that Traceur should not see
25+ // Add the LICENSE file in each module
2826[ 'angular2' , 'benchmarks' , 'benchmarks_external' , 'benchpress' , 'examples' , 'rtts_assert' ] . forEach (
2927 function ( destDir ) {
30- var extras = new Funnel ( '.' , { files : [ 'LICENSE' ] , destDir : destDir } ) ;
31- cjsTree = mergeTrees ( [ cjsTree , extras ] ) ;
28+ cjsTree = mergeTrees ( [ cjsTree , new Funnel ( '.' , { files : [ 'LICENSE' ] , destDir : destDir } ) ] ) ;
3229 } ) ;
3330
3431extras = new Funnel ( modulesTree , { include : [ '**/*.md' , '**/*.png' ] , exclude : [ '**/*.dart.md' ] } ) ;
@@ -53,12 +50,25 @@ var COMMON_PACKAGE_JSON = {
5350} ;
5451
5552// Add a .template extension since renderLodashTemplate strips one extension
56- var packageJsons = stew . rename ( new Funnel ( modulesTree , { include : [ '**/package.json' ] } ) , '.json' , '.json.template' ) ;
57- packageJsons = renderLodashTemplate ( packageJsons , {
58- files : [ "**/**" ] ,
59- context : { 'packageJson' : COMMON_PACKAGE_JSON }
53+ var packageJsons =
54+ stew . rename ( new Funnel ( modulesTree , { include : [ '**/package.json' ] } ) , '.json' , '.json.template' ) ;
55+ packageJsons = renderLodashTemplate (
56+ packageJsons , { files : [ "**/**" ] , context : { 'packageJson' : COMMON_PACKAGE_JSON } } ) ;
57+
58+ var typescriptTree = new TypescriptCompiler ( modulesTree , {
59+ target : 'ES5' ,
60+ sourceMap : true ,
61+ mapRoot : '' , /* force sourcemaps to use relative path */
62+ module : /*system.js*/ 'commonjs' ,
63+ allowNonTsExtensions : false ,
64+ typescript : require ( 'typescript' ) ,
65+ //declarationFiles: true,
66+ noEmitOnError : true ,
67+ outDir : 'angular2'
6068} ) ;
6169
70+ // For now, we just overwrite the Traceur-compiled files with their Typescript equivalent
71+ cjsTree = mergeTrees ( [ cjsTree , typescriptTree ] , { overwrite : true } ) ;
6272cjsTree = mergeTrees ( [ cjsTree , extras , packageJsons ] ) ;
6373
6474module . exports = stew . mv ( cjsTree , 'js/cjs' ) ;
0 commit comments