fix(build): support transpile to commonjs
This commit is contained in:
		
							parent
							
								
									fc1b791a7a
								
							
						
					
					
						commit
						013e1faf27
					
				| @ -56,7 +56,7 @@ to the preprocessor and run the tests without exiting karma | |||||||
| 
 | 
 | ||||||
| ### Performance tests | ### Performance tests | ||||||
| 
 | 
 | ||||||
| 1. `gulp build.cjs` (builds benchpress and tests into `dist/cjs` folder) | 1. `gulp build.js.cjs` (builds benchpress and tests into `dist/js/cjs` folder) | ||||||
| 2. `gulp serve.js.prod serve.js.dart2js` (runs local webserver) | 2. `gulp serve.js.prod serve.js.dart2js` (runs local webserver) | ||||||
| 3. `protractor protractor-perf-js.conf.js`: JS performance tests | 3. `protractor protractor-perf-js.conf.js`: JS performance tests | ||||||
| 4. `protractor protractor-perf-dart2js.conf.js`: Dart2JS performance tests | 4. `protractor protractor-perf-dart2js.conf.js`: Dart2JS performance tests | ||||||
|  | |||||||
							
								
								
									
										92
									
								
								gulpfile.js
									
									
									
									
									
								
							
							
						
						
									
										92
									
								
								gulpfile.js
									
									
									
									
									
								
							| @ -9,6 +9,7 @@ var deps = require('./tools/build/deps'); | |||||||
| var transpile = require('./tools/build/transpile'); | var transpile = require('./tools/build/transpile'); | ||||||
| var html = require('./tools/build/html'); | var html = require('./tools/build/html'); | ||||||
| var pubspec = require('./tools/build/pubspec'); | var pubspec = require('./tools/build/pubspec'); | ||||||
|  | var linknodemodules = require('./tools/build/linknodemodules'); | ||||||
| var pubbuild = require('./tools/build/pubbuild'); | var pubbuild = require('./tools/build/pubbuild'); | ||||||
| var dartanalyzer = require('./tools/build/dartanalyzer'); | var dartanalyzer = require('./tools/build/dartanalyzer'); | ||||||
| var jsserve = require('./tools/build/jsserve'); | var jsserve = require('./tools/build/jsserve'); | ||||||
| @ -32,18 +33,6 @@ var _COMPILER_CONFIG_JS_DEFAULT = { | |||||||
|   modules: 'instantiate' |   modules: 'instantiate' | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| var CJS_COMPILER_OPTIONS = { |  | ||||||
|   sourceMaps: true, |  | ||||||
|   annotations: false, // parse annotations
 |  | ||||||
|   types: false, // parse types
 |  | ||||||
|   // TODO(tbosch): Right now, traceur generates imports that
 |  | ||||||
|   // rely on absolute paths. This is why we are not using this...
 |  | ||||||
|   script: true, // parse as a script
 |  | ||||||
|   memberVariables: false, // parse class fields
 |  | ||||||
|   typeAssertions: false, |  | ||||||
|   modules: null // not needed
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| var _HTLM_DEFAULT_SCRIPTS_JS = [ | var _HTLM_DEFAULT_SCRIPTS_JS = [ | ||||||
|   {src: '/deps/traceur-runtime.js', mimeType: 'text/javascript'}, |   {src: '/deps/traceur-runtime.js', mimeType: 'text/javascript'}, | ||||||
|   {src: '/rtts_assert/rtts_assert.js', mimeType: 'text/javascript'}, |   {src: '/rtts_assert/rtts_assert.js', mimeType: 'text/javascript'}, | ||||||
| @ -76,14 +65,10 @@ var CONFIG = { | |||||||
|         es6: 'dist/js/prod/es6', |         es6: 'dist/js/prod/es6', | ||||||
|         es5: 'dist/js/prod/es5' |         es5: 'dist/js/prod/es5' | ||||||
|       }, |       }, | ||||||
|  |       cjs: 'dist/js/cjs', | ||||||
|       dart2js: 'dist/js/dart2js' |       dart2js: 'dist/js/dart2js' | ||||||
|     }, |     }, | ||||||
|     dart: 'dist/dart', |     dart: 'dist/dart', | ||||||
|     cjs: { |  | ||||||
|       all: 'dist/cjs', |  | ||||||
|       tools: 'dist/cjs/tools', |  | ||||||
|       e2eTest: 'dist/cjs/e2e_test' |  | ||||||
|     }, |  | ||||||
|     docs: 'dist/docs' |     docs: 'dist/docs' | ||||||
|   }, |   }, | ||||||
|   srcFolderInsertion: { |   srcFolderInsertion: { | ||||||
| @ -119,20 +104,12 @@ var CONFIG = { | |||||||
|   }, |   }, | ||||||
|   transpile: { |   transpile: { | ||||||
|     src: { |     src: { | ||||||
|       js: ['modules/**/*.js', 'modules/**/*.es6', '!modules/**/e2e_test/**'], |       js: ['modules/**/*.js', 'modules/**/*.es6'], | ||||||
|       dart: ['modules/**/*.js', '!modules/**/e2e_test/**'], |       dart: ['modules/**/*.js'], | ||||||
|       cjs: { |  | ||||||
|         tools: ['tools/**/*.es6', '!tools/transpiler/**'], |  | ||||||
|         e2eTest: ['modules/**/e2e_test/**/*.es6'] |  | ||||||
|       } |  | ||||||
|     }, |     }, | ||||||
|     copy: { |     copy: { | ||||||
|       js: ['modules/**/*.es5', '!modules/**/e2e_test/**'], |       js: ['modules/**/*.es5'], | ||||||
|       dart: ['modules/**/*.dart', '!modules/**/e2e_test/**'], |       dart: ['modules/**/*.dart', '!modules/**/e2e_test/**'], | ||||||
|       cjs: { |  | ||||||
|         tools: ['tools/**/*.es5', '!tools/transpiler/**'], |  | ||||||
|         e2eTest: ['modules/**/e2e_test/**/*.es5'] |  | ||||||
|       } |  | ||||||
|     }, |     }, | ||||||
|     options: { |     options: { | ||||||
|       js: { |       js: { | ||||||
| @ -144,6 +121,11 @@ var CONFIG = { | |||||||
|         prod: merge(true, _COMPILER_CONFIG_JS_DEFAULT, { |         prod: merge(true, _COMPILER_CONFIG_JS_DEFAULT, { | ||||||
|           typeAssertions: false, |           typeAssertions: false, | ||||||
|           outputLanguage: 'es6' |           outputLanguage: 'es6' | ||||||
|  |         }), | ||||||
|  |         cjs: merge(true, _COMPILER_CONFIG_JS_DEFAULT, { | ||||||
|  |           typeAssertionModule: 'rtts_assert/rtts_assert', | ||||||
|  |           typeAssertions: true, | ||||||
|  |           modules: 'commonjs' | ||||||
|         }) |         }) | ||||||
|       }, |       }, | ||||||
|       dart: { |       dart: { | ||||||
| @ -153,8 +135,7 @@ var CONFIG = { | |||||||
|         script: false, // parse as a module
 |         script: false, // parse as a module
 | ||||||
|         memberVariables: true, // parse class fields
 |         memberVariables: true, // parse class fields
 | ||||||
|         outputLanguage: 'dart' |         outputLanguage: 'dart' | ||||||
|       }, |       } | ||||||
|       cjs: CJS_COMPILER_OPTIONS |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   copy: { |   copy: { | ||||||
| @ -214,10 +195,6 @@ gulp.task('build/clean.dart', clean(gulp, gulpPlugins, { | |||||||
|   path: CONFIG.dest.dart |   path: CONFIG.dest.dart | ||||||
| })); | })); | ||||||
| 
 | 
 | ||||||
| gulp.task('build/clean.cjs', clean(gulp, gulpPlugins, { |  | ||||||
|   path: CONFIG.dest.cjs.all |  | ||||||
| })); |  | ||||||
| 
 |  | ||||||
| gulp.task('build/clean.docs', clean(gulp, gulpPlugins, { | gulp.task('build/clean.docs', clean(gulp, gulpPlugins, { | ||||||
|     path: CONFIG.dest.docs |     path: CONFIG.dest.docs | ||||||
| })); | })); | ||||||
| @ -294,6 +271,15 @@ gulp.task('build/transpile.js.prod', function(done) { | |||||||
|   ); |   ); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | gulp.task('build/transpile.js.cjs', transpile(gulp, gulpPlugins, { | ||||||
|  |   src: CONFIG.transpile.src.js.concat(['tools/benchp*/**/*.es6']), | ||||||
|  |   copy: CONFIG.transpile.copy.js, | ||||||
|  |   dest: CONFIG.dest.js.cjs, | ||||||
|  |   outputExt: 'js', | ||||||
|  |   options: CONFIG.transpile.options.js.cjs, | ||||||
|  |   srcFolderInsertion: CONFIG.srcFolderInsertion.js | ||||||
|  | })); | ||||||
|  | 
 | ||||||
| gulp.task('build/transpile.dart', transpile(gulp, gulpPlugins, { | gulp.task('build/transpile.dart', transpile(gulp, gulpPlugins, { | ||||||
|   src: CONFIG.transpile.src.dart, |   src: CONFIG.transpile.src.dart, | ||||||
|   copy: CONFIG.transpile.copy.dart, |   copy: CONFIG.transpile.copy.dart, | ||||||
| @ -303,24 +289,6 @@ gulp.task('build/transpile.dart', transpile(gulp, gulpPlugins, { | |||||||
|   srcFolderInsertion: CONFIG.srcFolderInsertion.dart |   srcFolderInsertion: CONFIG.srcFolderInsertion.dart | ||||||
| })); | })); | ||||||
| 
 | 
 | ||||||
| gulp.task('build/transpile/tools.cjs', transpile(gulp, gulpPlugins, { |  | ||||||
|   src: CONFIG.transpile.src.cjs.tools, |  | ||||||
|   copy: CONFIG.transpile.copy.cjs.tools, |  | ||||||
|   dest: CONFIG.dest.cjs.tools, |  | ||||||
|   outputExt: 'js', |  | ||||||
|   options: CONFIG.transpile.options.cjs, |  | ||||||
|   srcFolderInsertion: CONFIG.srcFolderInsertion.js |  | ||||||
| })); |  | ||||||
| 
 |  | ||||||
| gulp.task('build/transpile/e2eTest.cjs', transpile(gulp, gulpPlugins, { |  | ||||||
|   src: CONFIG.transpile.src.cjs.e2eTest, |  | ||||||
|   copy: CONFIG.transpile.copy.cjs.e2eTest, |  | ||||||
|   dest: CONFIG.dest.cjs.e2eTest, |  | ||||||
|   outputExt: 'js', |  | ||||||
|   options: CONFIG.transpile.options.cjs, |  | ||||||
|   srcFolderInsertion: CONFIG.srcFolderInsertion.js |  | ||||||
| })); |  | ||||||
| 
 |  | ||||||
| // ------------
 | // ------------
 | ||||||
| // html
 | // html
 | ||||||
| 
 | 
 | ||||||
| @ -394,6 +362,13 @@ gulp.task('build/pubspec.dart', pubspec(gulp, gulpPlugins, { | |||||||
|   command: DART_SDK.PUB |   command: DART_SDK.PUB | ||||||
| })); | })); | ||||||
| 
 | 
 | ||||||
|  | // ------------
 | ||||||
|  | // linknodemodules
 | ||||||
|  | 
 | ||||||
|  | gulp.task('build/linknodemodules.js.cjs', linknodemodules(gulp, gulpPlugins, { | ||||||
|  |   dir: CONFIG.dest.js.cjs | ||||||
|  | })); | ||||||
|  | 
 | ||||||
| // ------------
 | // ------------
 | ||||||
| // dartanalyzer
 | // dartanalyzer
 | ||||||
| 
 | 
 | ||||||
| @ -571,15 +546,16 @@ gulp.task('build.js.prod', function(done) { | |||||||
|   ); |   ); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| gulp.task('build.cjs', function(done) { | gulp.task('build.js.cjs', function(done) { | ||||||
|   runSequence( |   runSequence( | ||||||
|     ['build/transpile/tools.cjs', 'build/transpile/e2eTest.cjs'], |     'build/transpile.js.cjs', | ||||||
|  |     'build/linknodemodules.js.cjs', | ||||||
|     done |     done | ||||||
|   ); |   );; | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| gulp.task('build.js', ['build.js.dev', 'build.js.prod']); | gulp.task('build.js', ['build.js.dev', 'build.js.prod', 'build.js.cjs']); | ||||||
| 
 | 
 | ||||||
| gulp.task('clean', ['build/clean.js', 'build/clean.dart', 'build/clean.cjs', 'build/clean.docs']); | gulp.task('clean', ['build/clean.js', 'build/clean.dart', 'build/clean.docs']); | ||||||
| 
 | 
 | ||||||
| gulp.task('build', ['build.js', 'build.dart', 'build.cjs']); | gulp.task('build', ['build.js', 'build.dart']); | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var benchpress = require('../../../tools/benchpress/index.js'); | var benchpress = require('benchpress/index.js'); | ||||||
| var webdriver = require('protractor/node_modules/selenium-webdriver'); | var webdriver = require('protractor/node_modules/selenium-webdriver'); | ||||||
| 
 | 
 | ||||||
| module.exports = { | module.exports = { | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var benchpress = require('../../../tools/benchpress/index.js'); | var benchpress = require('benchpress/index.js'); | ||||||
| 
 | 
 | ||||||
| module.exports = { | module.exports = { | ||||||
|   verifyNoBrowserErrors: benchpress.verifyNoBrowserErrors, |   verifyNoBrowserErrors: benchpress.verifyNoBrowserErrors, | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| import {List, ListWrapper, StringMapWrapper} from 'angular2/src/facade/collection'; | import {List, ListWrapper, StringMapWrapper} from 'angular2/src/facade/collection'; | ||||||
| import {normalizeBlank, isPresent} from 'angular2/src/facade/lang'; | import {normalizeBlank, isPresent, global} from 'angular2/src/facade/lang'; | ||||||
| 
 | 
 | ||||||
| export class VmTurnZone { | export class VmTurnZone { | ||||||
|   _outerZone; |   _outerZone; | ||||||
| @ -17,7 +17,7 @@ export class VmTurnZone { | |||||||
|     this._onTurnDone = null; |     this._onTurnDone = null; | ||||||
|     this._onErrorHandler = null; |     this._onErrorHandler = null; | ||||||
| 
 | 
 | ||||||
|     this._outerZone = window.zone; |     this._outerZone = global.zone; | ||||||
|     this._innerZone = this._createInnerZone(this._outerZone, enableLongStackTrace); |     this._innerZone = this._createInnerZone(this._outerZone, enableLongStackTrace); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| import {int} from 'angular2/src/facade/lang'; | import {int, global} from 'angular2/src/facade/lang'; | ||||||
| import {List} from 'angular2/src/facade/collection'; | import {List} from 'angular2/src/facade/collection'; | ||||||
| export var Promise = window.Promise; | 
 | ||||||
|  | export var Promise = global.Promise; | ||||||
| 
 | 
 | ||||||
| export class PromiseWrapper { | export class PromiseWrapper { | ||||||
|   static resolve(obj):Promise { |   static resolve(obj):Promise { | ||||||
| @ -37,7 +38,7 @@ export class PromiseWrapper { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static setTimeout(fn:Function, millis:int) { |   static setTimeout(fn:Function, millis:int) { | ||||||
|     window.setTimeout(fn, millis); |     global.setTimeout(fn, millis); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   static isPromise(maybePromise):boolean { |   static isPromise(maybePromise):boolean { | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| import {int, isJsObject} from 'angular2/src/facade/lang'; | import {int, isJsObject, global} from 'angular2/src/facade/lang'; | ||||||
| 
 | 
 | ||||||
| export var List = window.Array; | export var List = global.Array; | ||||||
| export var Map = window.Map; | export var Map = global.Map; | ||||||
| export var Set = window.Set; | export var Set = global.Set; | ||||||
| 
 | 
 | ||||||
| export class MapWrapper { | export class MapWrapper { | ||||||
|   static create():Map { return new Map(); } |   static create():Map { return new Map(); } | ||||||
|  | |||||||
| @ -1,3 +1,5 @@ | |||||||
|  | import {List, MapWrapper, ListWrapper} from 'angular2/src/facade/collection'; | ||||||
|  | 
 | ||||||
| export var window = frames.window; | export var window = frames.window; | ||||||
| export var DocumentFragment = window.DocumentFragment; | export var DocumentFragment = window.DocumentFragment; | ||||||
| export var Node = window.Node; | export var Node = window.Node; | ||||||
| @ -10,8 +12,6 @@ export var document = window.document; | |||||||
| export var location = window.location; | export var location = window.location; | ||||||
| export var gc = window.gc ? () => window.gc() : () => null; | export var gc = window.gc ? () => window.gc() : () => null; | ||||||
| 
 | 
 | ||||||
| import {List, MapWrapper, ListWrapper} from 'angular2/src/facade/collection'; |  | ||||||
| 
 |  | ||||||
| export class DOM { | export class DOM { | ||||||
|   static query(selector) { |   static query(selector) { | ||||||
|     return document.querySelector(selector); |     return document.querySelector(selector); | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| library angular.core.facade.lang; | library angular.core.facade.lang; | ||||||
| 
 | 
 | ||||||
| export 'dart:core' show Type, RegExp; | export 'dart:core' show Type, RegExp, print; | ||||||
| import 'dart:math' as math; | import 'dart:math' as math; | ||||||
| 
 | 
 | ||||||
| class Math { | class Math { | ||||||
|  | |||||||
| @ -1,7 +1,10 @@ | |||||||
| export {proxy} from 'rtts_assert/rtts_assert'; | export {proxy} from 'rtts_assert/rtts_assert'; | ||||||
| 
 | 
 | ||||||
|  | var _global = typeof window === 'undefined' ? global : window; | ||||||
|  | export {_global as global}; | ||||||
|  | 
 | ||||||
| export var Type = Function; | export var Type = Function; | ||||||
| export var Math = window.Math; | export var Math = _global.Math; | ||||||
| 
 | 
 | ||||||
| var assertionsEnabled_ = typeof assert !== 'undefined'; | var assertionsEnabled_ = typeof assert !== 'undefined'; | ||||||
| 
 | 
 | ||||||
| @ -9,14 +12,14 @@ var int; | |||||||
| // global assert support, as Dart has it... | // global assert support, as Dart has it... | ||||||
| // TODO: `assert` calls need to be removed in production code! | // TODO: `assert` calls need to be removed in production code! | ||||||
| if (assertionsEnabled_) { | if (assertionsEnabled_) { | ||||||
|   window.assert = assert; |   _global.assert = assert; | ||||||
|   // `int` is not a valid JS type |   // `int` is not a valid JS type | ||||||
|   int = assert.define('int', function(value) { |   int = assert.define('int', function(value) { | ||||||
|     return typeof value === 'number' && value%1 === 0; |     return typeof value === 'number' && value%1 === 0; | ||||||
|   }); |   }); | ||||||
| } else { | } else { | ||||||
|   int = {}; |   int = {}; | ||||||
|   window.assert = function() {}; |   _global.assert = function() {}; | ||||||
| } | } | ||||||
| export {int}; | export {int}; | ||||||
| 
 | 
 | ||||||
| @ -173,8 +176,8 @@ var RegExp; | |||||||
| if (assertionsEnabled_) { | if (assertionsEnabled_) { | ||||||
|   RegExp = assert.define('RegExp', function(obj) { |   RegExp = assert.define('RegExp', function(obj) { | ||||||
|     assert(obj).is(assert.structure({ |     assert(obj).is(assert.structure({ | ||||||
|       single: window.RegExp, |       single: _global.RegExp, | ||||||
|       multiple: window.RegExp |       multiple: _global.RegExp | ||||||
|     })); |     })); | ||||||
|   }); |   }); | ||||||
| } else { | } else { | ||||||
| @ -185,8 +188,8 @@ export class RegExpWrapper { | |||||||
|   static create(regExpStr, flags:string = ''):RegExp { |   static create(regExpStr, flags:string = ''):RegExp { | ||||||
|     flags = flags.replace(/g/g, ''); |     flags = flags.replace(/g/g, ''); | ||||||
|     return { |     return { | ||||||
|       multiple: new window.RegExp(regExpStr, flags + 'g'), |       multiple: new _global.RegExp(regExpStr, flags + 'g'), | ||||||
|       single: new window.RegExp(regExpStr, flags) |       single: new _global.RegExp(regExpStr, flags) | ||||||
|     }; |     }; | ||||||
|   } |   } | ||||||
|   static firstMatch(regExp, input) { |   static firstMatch(regExp, input) { | ||||||
|  | |||||||
| @ -1 +1,3 @@ | |||||||
| export var Math = window.Math; | import {global} from 'angular2/src/facade/lang'; | ||||||
|  | 
 | ||||||
|  | export var Math = global.Math; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 change detection benchmark', function () { | describe('ng2 change detection benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 change detection benchmark', function () { | describe('ng2 change detection benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 compiler benchmark', function () { | describe('ng2 compiler benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 compiler benchmark', function () { | describe('ng2 compiler benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 di benchmark', function () { | describe('ng2 di benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 di benchmark', function () { | describe('ng2 di benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 element injector benchmark', function () { | describe('ng2 element injector benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 element injector benchmark', function () { | describe('ng2 element injector benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 naive infinite scroll benchmark', function () { | describe('ng2 naive infinite scroll benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 naive infinite scroll benchmark', function () { | describe('ng2 naive infinite scroll benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 selector benchmark', function () { | describe('ng2 selector benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 selector benchmark', function () { | describe('ng2 selector benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 tree benchmark', function () { | describe('ng2 tree benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng2 tree benchmark', function () { | describe('ng2 tree benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng1.x compiler benchmark', function () { | describe('ng1.x compiler benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng1.x compiler benchmark', function () { | describe('ng1.x compiler benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng1.x largetable benchmark', function () { | describe('ng1.x largetable benchmark', function () { | ||||||
|   var URL = 'benchmarks_external/src/largetable/largetable_benchmark.html'; |   var URL = 'benchmarks_external/src/largetable/largetable_benchmark.html'; | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng1.x largetable benchmark', function () { | describe('ng1.x largetable benchmark', function () { | ||||||
|   var URL = 'benchmarks_external/src/largetable/largetable_benchmark.html'; |   var URL = 'benchmarks_external/src/largetable/largetable_benchmark.html'; | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng-dart1.x naive infinite scroll benchmark', function () { | describe('ng-dart1.x naive infinite scroll benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng-dart1.x naive infinite scroll benchmark', function () { | describe('ng-dart1.x naive infinite scroll benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var perfUtil = require('../../angular2/e2e_test/perf_util'); | var perfUtil = require('angular2/e2e_test/perf_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng1.x tree benchmark', function () { | describe('ng1.x tree benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var testUtil = require('../../angular2/e2e_test/test_util'); | var testUtil = require('angular2/e2e_test/test_util'); | ||||||
| 
 | 
 | ||||||
| describe('ng1.x tree benchmark', function () { | describe('ng1.x tree benchmark', function () { | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| var benchpress = require('../../../../tools/benchpress/index.js'); | var benchpress = require('benchpress/index.js'); | ||||||
| describe('hello world', function () { | describe('hello world', function () { | ||||||
| 
 | 
 | ||||||
|   afterEach(benchpress.verifyNoBrowserErrors); |   afterEach(benchpress.verifyNoBrowserErrors); | ||||||
|  | |||||||
| @ -32,6 +32,7 @@ | |||||||
|     "node-uuid": "1.4.x" |     "node-uuid": "1.4.x" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|  |     "temp": "^0.8.1", | ||||||
|     "angular": "1.3.5", |     "angular": "1.3.5", | ||||||
|     "bower": "^1.3.12", |     "bower": "^1.3.12", | ||||||
|     "canonical-path": "0.0.2", |     "canonical-path": "0.0.2", | ||||||
|  | |||||||
| @ -2,5 +2,5 @@ var config = exports.config = require('./protractor-e2e-shared.js').config; | |||||||
| config.baseUrl = 'http://localhost:8002/'; | config.baseUrl = 'http://localhost:8002/'; | ||||||
| // TODO: remove this line when largetable dart has been added
 | // TODO: remove this line when largetable dart has been added
 | ||||||
| config.exclude = config.exclude || []; | config.exclude = config.exclude || []; | ||||||
| config.exclude.push('dist/cjs/e2e_test/benchmarks_external/e2e_test/largetable_spec.js'); | config.exclude.push('dist/js/cjs/benchmarks_external/e2e_test/largetable_spec.js'); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,4 +3,4 @@ config.baseUrl = 'http://localhost:8001/'; | |||||||
| 
 | 
 | ||||||
| // TODO: remove exclusion when JS verison of scrolling benchmark is available
 | // TODO: remove exclusion when JS verison of scrolling benchmark is available
 | ||||||
| config.exclude = config.exclude || []; | config.exclude = config.exclude || []; | ||||||
| config.exclude.push('dist/cjs/e2e_test/benchmarks_external/e2e_test/naive_infinite_scroll_spec.js'); | config.exclude.push('dist/js/cjs/benchmarks_external/e2e_test/naive_infinite_scroll_spec.js'); | ||||||
|  | |||||||
| @ -1,2 +1,3 @@ | |||||||
| var config = exports.config = require('./protractor-shared.js').config; | var config = exports.config = require('./protractor-shared.js').config; | ||||||
| config.specs = ['dist/cjs/**/*_spec.js']; | config.specs = ['dist/js/cjs/**/e2e_test/**/*_spec.js']; | ||||||
|  | config.exclude = ['dist/js/cjs/**/node_modules/**']; | ||||||
|  | |||||||
| @ -3,4 +3,4 @@ config.baseUrl = 'http://localhost:8002/'; | |||||||
| config.params.lang = 'dart'; | config.params.lang = 'dart'; | ||||||
| // TODO: remove this line when largetable dart has been added
 | // TODO: remove this line when largetable dart has been added
 | ||||||
| config.exclude = config.exclude || []; | config.exclude = config.exclude || []; | ||||||
| config.exclude.push('dist/cjs/e2e_test/benchmarks_external/e2e_test/largetable_perf.js'); | config.exclude.push('dist/js/cjs/benchmarks_external/e2e_test/largetable_perf.js'); | ||||||
|  | |||||||
| @ -4,4 +4,4 @@ config.params.lang = 'js'; | |||||||
| 
 | 
 | ||||||
| // TODO: remove exclusion when JS verison of scrolling benchmark is available
 | // TODO: remove exclusion when JS verison of scrolling benchmark is available
 | ||||||
| config.exclude = config.exclude || []; | config.exclude = config.exclude || []; | ||||||
| config.exclude.push('dist/cjs/e2e_test/benchmarks_external/e2e_test/naive_infinite_scroll_perf.js'); | config.exclude.push('dist/js/cjs/benchmarks_external/e2e_test/naive_infinite_scroll_perf.js'); | ||||||
|  | |||||||
| @ -14,7 +14,9 @@ if (process.env.CLOUD_SECRET_PATH) { | |||||||
|   }; |   }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| config.specs = ['dist/cjs/**/*_perf.js']; | config.specs = ['dist/js/cjs/**/e2e_test/**/*_perf.js']; | ||||||
|  | config.exclude = ['dist/js/cjs/**/node_modules/**']; | ||||||
|  | 
 | ||||||
| config.jasmineNodeOpts.defaultTimeoutInterval = 80000; | config.jasmineNodeOpts.defaultTimeoutInterval = 80000; | ||||||
| 
 | 
 | ||||||
| var runId = nodeUuid.v1(); | var runId = nodeUuid.v1(); | ||||||
| @ -32,8 +34,8 @@ config.params = { | |||||||
|     // forces a gc after every run
 |     // forces a gc after every run
 | ||||||
|     forceGc: false, |     forceGc: false, | ||||||
|     reporters: [ |     reporters: [ | ||||||
|       require('./dist/cjs/tools/benchpress/src/console_reporter.js'), |       require('./dist/js/cjs/benchpress/src/console_reporter.js'), | ||||||
|       cloudReporterConfig ? require('./dist/cjs/tools/benchpress/src/cloud_reporter.js') : null, |       cloudReporterConfig ? require('./dist/js/cjs/benchpress/src/cloud_reporter.js') : null, | ||||||
|     ], |     ], | ||||||
|     cloudReporter: cloudReporterConfig, |     cloudReporter: cloudReporterConfig, | ||||||
|     scaling: [{ |     scaling: [{ | ||||||
|  | |||||||
							
								
								
									
										32
									
								
								tools/build/linknodemodules.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								tools/build/linknodemodules.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | |||||||
|  | var fs = require('fs'); | ||||||
|  | var path = require('path'); | ||||||
|  | 
 | ||||||
|  | module.exports = function(gulp, plugins, config) { | ||||||
|  |   return function() { | ||||||
|  |     var nodeModulesDir = path.join(config.dir, 'node_modules'); | ||||||
|  |     if (!fs.existsSync(nodeModulesDir)) { | ||||||
|  |       fs.mkdirSync(nodeModulesDir); | ||||||
|  |     } | ||||||
|  |     getSubdirs(config.dir).forEach(function(relativeFolder) { | ||||||
|  |       if (relativeFolder === 'node_modules') { | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |       var sourceDir = path.join('..', relativeFolder); | ||||||
|  |       var linkDir = path.join(nodeModulesDir, relativeFolder); | ||||||
|  |       if (!fs.existsSync(linkDir)) { | ||||||
|  |         console.log('creating link', linkDir, sourceDir); | ||||||
|  |         fs.symlinkSync(sourceDir, linkDir, 'dir'); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   }; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | function getSubdirs(rootDir) { | ||||||
|  |   return fs.readdirSync(rootDir).filter(function(file) { | ||||||
|  |     if (file[0] === '.') { | ||||||
|  |       return false; | ||||||
|  |     } | ||||||
|  |     var dirPath = path.join(rootDir, file); | ||||||
|  |     return fs.statSync(dirPath).isDirectory(); | ||||||
|  |   }); | ||||||
|  | } | ||||||
| @ -87,6 +87,7 @@ function reloadCompiler() { | |||||||
|   convertTypesToExpressionsInEs6Patch(); |   convertTypesToExpressionsInEs6Patch(); | ||||||
|   removeNonStaticFieldDeclarationsInEs6Patch(); |   removeNonStaticFieldDeclarationsInEs6Patch(); | ||||||
|   disableGetterSetterAssertionPatch(); |   disableGetterSetterAssertionPatch(); | ||||||
|  |   patchCommonJSModuleTransformerToSupportExportStar(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function loadModule(filepath, transpile) { | function loadModule(filepath, transpile) { | ||||||
| @ -221,3 +222,29 @@ function useRttsAssertModuleForConvertingTypesToExpressions() { | |||||||
|     // NYI
 |     // NYI
 | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // TODO(tbosch): patch exports for CommonJS to support `export * from ...`
 | ||||||
|  | // see https://github.com/google/traceur-compiler/issues/1042
 | ||||||
|  | function patchCommonJSModuleTransformerToSupportExportStar() { | ||||||
|  |   var traceurVersion = System.map['traceur']; | ||||||
|  |   var CommonJsModuleTransformer = System.get(traceurVersion+'/src/codegeneration/CommonJsModuleTransformer').CommonJsModuleTransformer; | ||||||
|  |   var parseStatement = System.get(traceurVersion+'/src/codegeneration/PlaceholderParser.js').parseStatement; | ||||||
|  |   var prependStatements = System.get(traceurVersion+"/src/codegeneration/PrependStatements.js").prependStatements; | ||||||
|  | 
 | ||||||
|  |   var _wrapModule = CommonJsModuleTransformer.prototype.wrapModule; | ||||||
|  |   CommonJsModuleTransformer.prototype.wrapModule = function(statements) { | ||||||
|  |     if (this.hasStarExports()) { | ||||||
|  |       var last = statements[statements.length - 1]; | ||||||
|  |       statements = statements.slice(0, -1); | ||||||
|  |       var exportObject = last.expression; | ||||||
|  |       if (exportObject.propertyNameAndValues) { | ||||||
|  |         throw new Error('Don\'t support export * with named exports right now...'); | ||||||
|  |       } | ||||||
|  |       statements.push(parseStatement(['module.exports = ', ';'], exportObject)); | ||||||
|  |       return statements; | ||||||
|  |     } else { | ||||||
|  |       return _wrapModule.apply(this, arguments); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -1,4 +1,8 @@ | |||||||
| var compiler = require('../index'); | var compiler = require('../index'); | ||||||
|  | var temp = require('temp'); | ||||||
|  | var fs = require('fs'); | ||||||
|  | 
 | ||||||
|  | temp.track(); | ||||||
| 
 | 
 | ||||||
| var DEFAULT_OPTIONS = { | var DEFAULT_OPTIONS = { | ||||||
|   sourceMaps: false, |   sourceMaps: false, | ||||||
| @ -157,6 +161,34 @@ describe('transpile to es6', function() { | |||||||
| 
 | 
 | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | describe('transpile to cjs', function() { | ||||||
|  |   var options; | ||||||
|  | 
 | ||||||
|  |   beforeEach(function() { | ||||||
|  |     options = merge(DEFAULT_OPTIONS, {modules: 'commonjs'}); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   function compileAndWrite(input) { | ||||||
|  |     var transpiledCode = compiler.compile(options, "test.js", input).js; | ||||||
|  |     var tempFile = temp.openSync('ng2transpiler'); | ||||||
|  |     fs.writeSync(tempFile.fd, transpiledCode); | ||||||
|  |     return tempFile.path; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   it('should transpile export *', function() { | ||||||
|  |     var file1 = compileAndWrite('export var a = 1'); | ||||||
|  |     var file2 = compileAndWrite('export * from "' + file1 + '"'); | ||||||
|  |     expect(require(file2).a).toBe(1); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   it('should transpile export {name}', function() { | ||||||
|  |     var file1 = compileAndWrite('export var a = 1'); | ||||||
|  |     var file2 = compileAndWrite('export {a} from "' + file1 + '"'); | ||||||
|  |     expect(require(file2).a).toBe(1); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  | }); | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| function merge(a, b) { | function merge(a, b) { | ||||||
|   var result = {}; |   var result = {}; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user