@@ -11,34 +11,74 @@ let jsmn = require('gulp-jasmine');
1111var runSequence = require ( 'run-sequence' ) ;
1212var process = require ( 'process' ) ;
1313var merge = require ( 'merge-stream' ) ;
14+ var exec = require ( 'child_process' ) . exec ;
15+ var uglify = require ( 'gulp-uglify' ) ;
16+ var rename = require ( 'gulp-rename' ) ;
1417
15- var systemCompilerConfig = JSON . parse ( fs . readFileSync ( './tsconfig.json' ) ) . compilerOptions ;
16- var commonCompilerConfig = JSON . parse ( fs . readFileSync ( './tsconfig.cjs.json' ) ) . compilerOptions ;
18+ let assign = ( dest , ...sources ) => {
19+ sources . forEach ( source => {
20+ Object . keys ( source ) . forEach ( key => {
21+ dest [ key ] = source [ key ] ;
22+ } ) ;
23+ } ) ;
24+ return dest ;
25+ }
26+
27+ var systemCompilerConfig = assign ( { } ,
28+ JSON . parse ( fs . readFileSync ( './tsconfig.json' ) ) . compilerOptions ,
29+ {
30+ typescript : require ( 'typescript' )
31+ }
32+ ) ;
1733
18- commonCompilerConfig . typescript = require ( 'typescript' ) ;
19- systemCompilerConfig . typescript = require ( 'typescript' ) ;
34+ var commonCompilerConfig = assign ( { } ,
35+ systemCompilerConfig ,
36+ {
37+ "module" : "commonjs"
38+ }
39+ ) ;
2040
21- gulp . task ( 'default' , [ 'prepublish ' ] ) ;
41+ gulp . task ( 'default' , [ 'worker:build ' ] ) ;
2242
2343gulp . task ( 'clean' , ( done ) => {
2444 rimraf ( './dist' , done ) ;
2545} ) ;
2646
27- gulp . task ( 'build' , ( done ) => runSequence (
47+ gulp . task ( 'prepublish' , [ 'build' ] ) ;
48+
49+ gulp . task ( 'build' , done => runSequence (
2850 'clean' ,
29- '!build:system' ,
30- done ) ) ;
51+ [
52+ 'task:generator:build' ,
53+ 'task:worker:build'
54+ ] ,
55+ done
56+ ) ) ;
3157
32- gulp . task ( 'prepublish ' , done => runSequence (
58+ gulp . task ( 'worker:build ' , done => runSequence (
3359 'clean' ,
34- [ '!bundle' , 'copy:generator' ] ,
60+ 'task:worker:build' ,
3561 done ) ) ;
62+
63+ gulp . task ( 'generator:build' , done => runSequence (
64+ 'clean' ,
65+ 'task:generator:build' ,
66+ done
67+ ) ) ;
68+
3669
37- gulp . task ( '!build:system' , ( ) => {
70+ gulp . task ( 'task:worker:build' , done =>
71+ runSequence (
72+ 'task:worker:compile_system' ,
73+ 'task:worker:bundle' ,
74+ done
75+ ) ) ;
76+
77+ gulp . task ( 'task:worker:compile_system' , ( ) => {
3878 const stream = gulp
3979 . src ( [
40- 'src/**/*.ts' ,
41- '! src/**/*.spec .ts' ,
80+ 'src/worker/ **/*.ts' ,
81+ 'src/typings/ **/*.d .ts' ,
4282 'typings/globals/**/*.d.ts'
4383 ] )
4484 . pipe ( ts ( systemCompilerConfig ) ) ;
@@ -48,10 +88,11 @@ gulp.task('!build:system', () => {
4888 ] ) ;
4989} ) ;
5090
51- gulp . task ( '!build:commonjs ' , ( ) => {
91+ gulp . task ( 'task:worker:compile_common ' , ( ) => {
5292 const stream = gulp
5393 . src ( [
54- 'src/**/*.ts' ,
94+ 'src/worker/**/*.ts' ,
95+ 'src/typings/**/*.d.ts' ,
5596 'typings/globals/**/*.d.ts'
5697 ] )
5798 . pipe ( ts ( commonCompilerConfig ) ) ;
@@ -61,130 +102,174 @@ gulp.task('!build:commonjs', () => {
61102 ] ) ;
62103} ) ;
63104
64- gulp . task ( 'build:generator' , ( ) => gulp
105+ gulp . task ( 'task:worker:bundle' , done => {
106+ var builder = new Builder ( ) ;
107+ builder . config ( {
108+ map : {
109+ 'worker' : 'dist/src/worker' ,
110+ 'rxjs' : 'node_modules/rxjs' ,
111+ 'jshashes' : 'node_modules/jshashes/hashes.js'
112+ } ,
113+ packages : {
114+ 'worker' : {
115+ defaultExtension : 'js'
116+ } ,
117+ 'rxjs' : {
118+ defaultExtension : 'js'
119+ }
120+ }
121+ } ) ;
122+ builder
123+ . buildStatic ( 'worker/browser_entry' , 'dist/worker.js' )
124+ . then ( ( ) => done ( ) ) ;
125+ } ) ;
126+
127+ gulp . task ( 'task:worker:minify' , ( ) => gulp
128+ . src ( [
129+ 'dist/worker.js'
130+ ] , { base : 'dist' } )
131+ . pipe ( uglify ( ) )
132+ . pipe ( rename ( { suffix : '.min' } ) )
133+ . pipe ( gulp . dest ( 'dist' ) ) ) ;
134+
135+ gulp . task ( 'task:generator:build' , done => runSequence (
136+ 'task:generator:compile' ,
137+ 'task:generator:copy_deploy' ,
138+ done ) ) ;
139+
140+ gulp . task ( 'task:generator:compile' , ( ) => gulp
65141 . src ( [
66142 'src/generator/**.ts' ,
67143 'typings/globals/**/*.d.ts'
68144 ] )
69145 . pipe ( ts ( commonCompilerConfig ) )
70- . pipe ( gulp . dest ( 'dist/src/generator ' ) ) ) ;
146+ . pipe ( gulp . dest ( 'dist' ) ) ) ;
71147
72- gulp . task ( 'build:test_harness' , done => runSequence (
148+ gulp . task ( 'task:generator:copy_deploy' , ( ) => gulp
149+ . src ( [
150+ 'dist/src/generator/**/*.js'
151+ ] )
152+ . pipe ( gulp . dest ( 'dist/generator' ) ) ) ;
153+
154+ gulp . task ( 'e2e_harness:build' , done => runSequence (
73155 'clean' ,
74- [
75- '!build:test_harness:client' ,
76- '!build:test_harness:tests'
77- ] ,
78- done ) ) ;
79-
80- gulp . task ( '!build:test_harness:client' , done => runSequence (
81- [
82- '!bundle' ,
83- '!build:test_harness:client:compile' ,
84- 'copy:test_harness:client:local' ,
85- 'copy:test_harness:client:modules'
86- ] ,
87- 'copy:test_harness:client:worker' ,
156+ 'task:e2e_harness:build' ,
88157 done
89158) ) ;
90159
91- gulp . task ( '!build:test_harness:client:compile' , ( ) => gulp
92- . src ( [
93- 'typings/globals/**/*.d.ts' ,
94- 'src/testing/harness/client/**/*.ts'
95- ] )
96- . pipe ( ts ( systemCompilerConfig ) )
97- . pipe ( gulp . dest ( 'dist/harness/client' ) ) ) ;
160+ gulp . task ( 'task:e2e_harness:build' , done => runSequence ( [
161+ 'task:e2e_harness:build_worker' ,
162+ 'task:e2e_harness:compile' ,
163+ 'task:e2e_harness:copy_modules' ,
164+ 'task:e2e_harness:copy_index'
165+ ] , done ) ) ;
98166
99- gulp . task ( 'copy:test_harness:client:local ' , ( ) => gulp
100- . src ( [
101- 'src/testing/harness/client/index.html'
102- ] , { base : 'src/testing/harness/client' } )
103- . pipe ( gulp . dest ( 'dist/harness/client' ) ) ) ;
167+ gulp . task ( 'task:e2e_harness:build_worker ' , done => runSequence (
168+ 'task:worker:build' ,
169+ 'task:e2e_harness:copy_worker' ,
170+ done
171+ ) ) ;
104172
105- gulp . task ( 'copy:test_harness:client:modules' , ( ) => gulp
173+ gulp . task ( 'task:e2e_harness:compile' , ( ) => gulp
174+ . src ( [ ,
175+ 'src/test/e2e/harness/client/**/*.ts' ,
176+ 'typings/globals/**/*.d.ts'
177+ ] , { base : '.' } )
178+ . pipe ( ts ( systemCompilerConfig ) )
179+ . pipe ( gulp . dest ( 'dist' ) ) ) ;
180+
181+ gulp . task ( 'task:e2e_harness:copy_modules' , ( ) => gulp
106182 . src ( [
107183 'node_modules/@angular/**/*.js' ,
108184 'node_modules/systemjs/dist/system.js' ,
109185 'node_modules/reflect-metadata/Reflect.js' ,
110186 'node_modules/zone.js/dist/zone.js' ,
111187 'node_modules/rxjs/**/*.js'
112188 ] , { base : '.' } )
113- . pipe ( gulp . dest ( 'dist/harness/client' ) ) )
189+ . pipe ( gulp . dest ( 'dist/src/test/e2e/harness/client' ) ) ) ;
190+
114191
115- gulp . task ( 'copy:test_harness:client:worker ' , ( ) => gulp
192+ gulp . task ( 'task:e2e_harness:copy_worker ' , ( ) => gulp
116193 . src ( [
117- 'dist/worker.js'
118- ] )
119- . pipe ( gulp . dest ( 'dist/harness/client' ) ) ) ;
194+ 'dist/worker.js' ,
195+ ] , { base : 'dist' } )
196+ . pipe ( gulp . dest ( 'dist/src/test/e2e/ harness/client' ) ) ) ;
120197
121- gulp . task ( '!build:test_harness:tests' , [
122- '!copy:test_harness:tests:protractor' ,
123- '!build:test_harness:tests:compile'
124- ] ) ;
125-
126- gulp . task ( '!build:test_harness:tests:compile' , ( ) => gulp
198+ gulp . task ( 'task:e2e_harness:copy_index' , ( ) => gulp
127199 . src ( [
128- 'typings/globals/**/*.d.ts' ,
129- 'src/typings/*.d.ts' ,
130- 'src/e2e/**/*.ts' ,
131- 'src/testing/harness/server/**/*.ts' ,
200+ 'src/test/e2e/harness/client/index.html'
201+ ] , { base : '.' } )
202+ . pipe ( gulp . dest ( 'dist' ) ) ) ;
203+
204+ gulp . task ( 'task:e2e_tests:build' , done => runSequence ( [
205+ 'task:e2e_tests:compile' ,
206+ 'task:e2e_tests:copy_protractor' ,
207+ ] , done ) ) ;
208+
209+ gulp . task ( 'task:e2e_tests:compile' , ( ) => gulp
210+ . src ( [
211+ 'src/test/e2e/spec/**/*.ts' ,
212+ 'src/test/e2e/harness/server/**/*.ts' ,
213+ 'src/typings/**/*.d.ts' ,
214+ 'typings/globals/**/*.d.ts'
132215 ] , { base : '.' } )
133216 . pipe ( ts ( commonCompilerConfig ) )
134- . pipe ( gulp . dest ( 'dist/e2e ' ) ) ) ;
217+ . pipe ( gulp . dest ( 'dist' ) ) ) ;
135218
136- gulp . task ( '!copy:test_harness:tests:protractor ' , ( ) => gulp
219+ gulp . task ( 'task:e2e_tests:copy_protractor ' , ( ) => gulp
137220 . src ( [
138- 'src/e2e/** /protractor.config.js'
221+ 'src/test/ e2e/spec /protractor.config.js'
139222 ] , { base : '.' } )
140- . pipe ( gulp . dest ( 'dist/e2e ' ) ) ) ;
223+ . pipe ( gulp . dest ( 'dist' ) ) ) ;
141224
142- gulp . task ( 'copy:generator' , [ 'build:generator' ] , ( ) => gulp
225+ gulp . task ( 'task:unit_tests:compile' , ( ) => gulp
143226 . src ( [
144- 'dist/src/generator/**/*.js'
145- ] )
146- . pipe ( gulp . dest ( 'dist/generator' ) ) ) ;
227+ 'src/test/unit/**/*.ts' ,
228+ 'src/testing/**/*.ts' ,
229+ 'src/typings/**/*.d.ts' ,
230+ 'typings/globals/**/*.d.ts'
231+ ] , { base : '.' } )
232+ . pipe ( ts ( commonCompilerConfig ) )
233+ . pipe ( gulp . dest ( 'dist' ) ) ) ;
234+
235+ gulp . task ( 'test' , done => runSequence (
236+ 'test:unit' ,
237+ 'test:e2e' ,
238+ done
239+ ) ) ;
147240
148- gulp . task ( 'build: test' , ( done ) => runSequence (
241+ gulp . task ( 'test:unit ' , done => runSequence (
149242 'clean' ,
150- '!build:commonjs' ,
243+ [
244+ 'task:unit_tests:compile' ,
245+ 'task:worker:compile_common'
246+ ] ,
247+ 'task:unit_tests:run' ,
151248 done
152249) ) ;
153250
154- gulp . task ( 'test' , [ 'build:test' ] , ( ) => gulp
251+ gulp . task ( 'task:unit_tests:run' , ( ) => gulp
155252 . src ( [
156253 'dist/**/*.spec.js'
157254 ] , { base : '.' } )
158255 . pipe ( jsmn ( {
159256 verbose : true ,
160257 } ) ) ) ;
161258
162- gulp . task ( '!bundle' , [ '!build:system' ] , ( ) => {
163- var builder = new Builder ( ) ;
164- builder . config ( {
165- map : {
166- 'worker' : 'dist/src' ,
167- '@angular' : 'node_modules/@angular' ,
168- 'rxjs' : 'node_modules/rxjs' ,
169- 'reflect-metadata' : 'node_modules/reflect-metadata/temp/Reflect.js' ,
170- 'jshashes' : 'node_modules/jshashes/hashes.js'
171- } ,
172- packages : {
173- 'worker' : {
174- defaultExtension : 'js'
175- } ,
176- 'rxjs' : {
177- defaultExtension : 'js'
178- } ,
179- '@angular/core' : {
180- defaultExtension : 'js' ,
181- main : 'index.js'
182- } ,
183- 'reflect-metadata' : {
184- format : 'global'
185- }
186- }
259+ gulp . task ( 'test:e2e' , done => runSequence (
260+ 'clean' ,
261+ [
262+ 'task:e2e_tests:build' ,
263+ 'task:e2e_harness:build' ,
264+ ] ,
265+ 'task:e2e_tests:run' ,
266+ done
267+ ) ) ;
268+
269+ gulp . task ( 'task:e2e_tests:run' , done => {
270+ exec ( 'protractor dist/src/test/e2e/spec/protractor.config.js' , ( err , stdout , stderr ) => {
271+ console . log ( stdout ) ;
272+ console . log ( stderr ) ;
273+ done ( ) ;
187274 } ) ;
188- builder . buildStatic ( 'worker/browser_entry' , 'dist/worker.js' ) ;
189275} ) ;
190-
0 commit comments