@@ -23,15 +23,13 @@ var buffer = require('vinyl-buffer')
2323var gulp = require ( 'gulp' )
2424var through = require ( 'through2' )
2525var uglify = require ( 'gulp-uglify' )
26- var gutil = require ( 'gulp-util' )
2726var jasmine = require ( 'gulp-jasmine' )
2827var babelify = require ( 'babelify' )
2928var babel = require ( 'gulp-babel' )
3029var watch = require ( 'gulp-watch' )
3130var batch = require ( 'gulp-batch' )
3231var replace = require ( 'gulp-replace' )
3332var fs = require ( 'fs-extra' )
34- var runSequence = require ( 'run-sequence' )
3533var path = require ( 'path' )
3634var minimist = require ( 'minimist' )
3735var install = require ( 'gulp-install' )
@@ -42,160 +40,80 @@ var ts = require('gulp-typescript')
4240var JasmineConsoleReporter = require ( 'jasmine-console-reporter' )
4341var karma = require ( 'karma' )
4442var transformTools = require ( 'browserify-transform-tools' )
43+ var log = require ( 'fancy-log' )
4544
4645/**
4746 * Useful to investigate resource leaks in tests. Enable to see active sockets and file handles after the 'test' task.
4847 */
49- var enableActiveNodeHandlesLogging = false
50-
51- gulp . task ( 'default' , [ 'test' ] )
52-
53- gulp . task ( 'browser' , function ( cb ) {
54- runSequence ( 'build-browser-test' , 'build-browser' , cb )
55- } )
48+ const enableActiveNodeHandlesLogging = false
5649
5750/** Build all-in-one files for use in the browser */
58- gulp . task ( 'build- browser' , function ( ) {
59- var browserOutput = 'lib/browser'
51+ gulp . task ( 'browser' , async function ( ) {
52+ const browserOutput = 'lib/browser'
6053 // Our app bundler
61- var appBundler = browserify ( {
54+ const appBundler = browserify ( {
6255 entries : [ 'src/index.js' ] ,
6356 cache : { } ,
6457 standalone : 'neo4j' ,
65- packageCache : { }
66- } )
67- . transform ( babelifyTransform ( ) )
68- . transform ( browserifyTransformNodeToBrowserRequire ( ) )
69- . bundle ( )
58+ packageCache : { } ,
59+ transform : [ 'babelify' , './support/inject-browser-transform' ]
60+ } ) . bundle ( )
7061
7162 // Un-minified browser package
72- appBundler
73- . on ( 'error' , gutil . log )
63+ await appBundler
64+ . on ( 'error' , log . error )
7465 . pipe ( source ( 'neo4j-web.js' ) )
7566 . pipe ( gulp . dest ( browserOutput ) )
7667
77- return appBundler
78- . on ( 'error' , gutil . log )
68+ await appBundler
69+ . on ( 'error' , log . error )
7970 . pipe ( source ( 'neo4j-web.min.js' ) )
8071 . pipe ( buffer ( ) )
8172 . pipe ( uglify ( ) )
8273 . pipe ( gulp . dest ( browserOutput ) )
8374} )
8475
85- gulp . task ( 'build-browser-test' , function ( ) {
86- var browserOutput = 'build/browser/'
87- var testFiles = [ ]
88- return gulp
89- . src ( [ './test/**/*.test.js' , '!./test/**/node/*.js' ] )
90- . pipe (
91- through . obj (
92- function ( file , enc , cb ) {
93- if ( file . path . indexOf ( 'examples.test.js' ) < 0 ) {
94- testFiles . push ( file . path )
95- }
96- cb ( )
97- } ,
98- function ( cb ) {
99- // At end-of-stream, push the list of files to the next step
100- this . push ( testFiles )
101- cb ( )
102- }
103- )
104- )
105- . pipe (
106- through . obj (
107- function ( testFiles , enc , cb ) {
108- browserify ( {
109- entries : testFiles ,
110- cache : { } ,
111- debug : true
112- } )
113- . transform ( babelifyTransform ( ) )
114- . transform ( browserifyTransformNodeToBrowserRequire ( ) )
115- . bundle ( function ( ) {
116- cb ( )
117- } )
118- . on ( 'error' , gutil . log )
119- . pipe ( source ( 'neo4j-web.test.js' ) )
120- . pipe ( gulp . dest ( browserOutput ) )
121- } ,
122- function ( cb ) {
123- cb ( )
124- }
125- )
126- )
127- } )
128-
129- var buildNode = function ( options ) {
130- return gulp
131- . src ( options . src )
132- . pipe ( babel ( babelConfig ( ) ) )
133- . pipe ( gulp . dest ( options . dest ) )
134- }
135-
13676gulp . task ( 'nodejs' , function ( ) {
137- return buildNode ( {
138- src : 'src/**/*.js' ,
139- dest : 'lib'
140- } )
141- } )
142-
143- gulp . task ( 'all' , function ( cb ) {
144- runSequence ( 'nodejs' , 'browser' , cb )
77+ return gulp
78+ . src ( 'src/**/*.js' )
79+ . pipe ( babel ( ) )
80+ . pipe ( gulp . dest ( 'lib' ) )
14581} )
14682
14783// prepares directory for package.test.js
148- gulp . task ( 'install-driver-into-sandbox' , [ 'nodejs' ] , function ( ) {
149- var testDir = path . join ( 'build' , 'sandbox' )
150- fs . emptyDirSync ( testDir )
151-
152- var packageJsonContent = JSON . stringify ( {
153- private : true ,
154- dependencies : {
155- 'neo4j-driver' : __dirname
156- }
157- } )
158-
159- return file ( 'package.json' , packageJsonContent , { src : true } )
160- . pipe ( gulp . dest ( testDir ) )
161- . pipe ( install ( ) )
162- } )
163-
164- gulp . task ( 'test' , function ( cb ) {
165- runSequence (
166- 'run-ts-declaration-tests' ,
167- 'test-nodejs' ,
168- 'test-browser' ,
169- function ( err ) {
170- if ( err ) {
171- var exitCode = 2
172- console . log ( '[FAIL] test task failed - exiting with code ' + exitCode )
173- return process . exit ( exitCode )
84+ gulp . task (
85+ 'install-driver-into-sandbox' ,
86+ gulp . series ( 'nodejs' , function ( ) {
87+ const testDir = path . join ( 'build' , 'sandbox' )
88+ fs . emptyDirSync ( testDir )
89+
90+ const packageJsonContent = JSON . stringify ( {
91+ private : true ,
92+ dependencies : {
93+ 'neo4j-driver' : __dirname
17494 }
175- return cb ( )
176- }
177- )
178- } )
179-
180- gulp . task ( 'test-nodejs' , [ 'install-driver-into-sandbox' ] , function ( ) {
181- return gulp
182- . src ( [ './test/**/*.test.js' , '!./test/**/browser/*.js' ] )
183- . pipe (
184- jasmine ( {
185- includeStackTrace : true ,
186- reporter : newJasmineConsoleReporter ( )
187- } )
188- )
189- . on ( 'end' , logActiveNodeHandles )
190- } )
191-
192- gulp . task ( 'test-browser' , function ( cb ) {
193- runSequence ( 'all' , 'run-browser-test' , cb )
194- } )
95+ } )
19596
196- gulp . task ( 'run-browser-test' , function ( cb ) {
197- runSequence ( 'run-browser-test-firefox' , cb )
198- } )
97+ return file ( 'package.json' , packageJsonContent , { src : true } )
98+ . pipe ( gulp . dest ( testDir ) )
99+ . pipe ( install ( ) )
100+ } )
101+ )
102+
103+ gulp . task (
104+ 'test-nodejs' ,
105+ gulp . series ( 'install-driver-into-sandbox' , function ( ) {
106+ return gulp
107+ . src ( [ './test/**/*.test.js' , '!./test/**/browser/*.js' ] )
108+ . pipe (
109+ jasmine ( {
110+ includeStackTrace : true ,
111+ reporter : newJasmineConsoleReporter ( )
112+ } )
113+ )
114+ . on ( 'end' , logActiveNodeHandles )
115+ } )
116+ )
199117
200118gulp . task ( 'run-browser-test-chrome' , function ( cb ) {
201119 runKarma ( 'chrome' , cb )
@@ -205,13 +123,7 @@ gulp.task('run-browser-test-firefox', function (cb) {
205123 runKarma ( 'firefox' , cb )
206124} )
207125
208- gulp . task ( 'run-browser-test-edge' , function ( cb ) {
209- runKarma ( 'edge' , cb )
210- } )
211-
212- gulp . task ( 'run-browser-test-ie' , function ( cb ) {
213- runKarma ( 'ie' , cb )
214- } )
126+ gulp . task ( 'run-browser-test' , gulp . series ( 'run-browser-test-firefox' ) )
215127
216128gulp . task ( 'watch' , function ( ) {
217129 return watch (
@@ -222,28 +134,31 @@ gulp.task('watch', function () {
222134 )
223135} )
224136
225- gulp . task ( 'watch-n-test' , [ 'test-nodejs' ] , function ( ) {
226- return gulp . watch ( [ 'src/**/*.js' , 'test/**/*.js' ] , [ 'test-nodejs' ] )
227- } )
137+ gulp . task (
138+ 'watch-n-test' ,
139+ gulp . series ( 'test-nodejs' , function ( ) {
140+ return gulp . watch ( [ 'src/**/*.js' , 'test/**/*.js' ] , [ 'test-nodejs' ] )
141+ } )
142+ )
228143
229144/** Set the project version, controls package.json and version.js */
230145gulp . task ( 'set' , function ( ) {
231146 // Get the --version arg from command line
232- var version = minimist ( process . argv . slice ( 2 ) , { string : 'version' } ) . version
147+ const version = minimist ( process . argv . slice ( 2 ) , { string : 'version' } ) . version
233148
234149 if ( ! semver . valid ( version ) ) {
235150 throw new Error ( `Invalid version "${ version } "` )
236151 }
237152
238153 // Change the version in relevant files
239- var versionFile = path . join ( 'src' , 'version.js' )
154+ const versionFile = path . join ( 'src' , 'version.js' )
240155 return gulp
241156 . src ( [ versionFile ] , { base : './' } )
242157 . pipe ( replace ( '0.0.0-dev' , version ) )
243158 . pipe ( gulp . dest ( './' ) )
244159} )
245160
246- var neo4jHome = path . resolve ( './build/neo4j' )
161+ const neo4jHome = path . resolve ( './build/neo4j' )
247162
248163gulp . task ( 'start-neo4j' , function ( done ) {
249164 sharedNeo4j . start ( neo4jHome , process . env . NEOCTRL_ARGS )
@@ -267,9 +182,7 @@ gulp.task('run-stress-tests', function () {
267182 . on ( 'end' , logActiveNodeHandles )
268183} )
269184
270- gulp . task ( 'run-ts-declaration-tests' , function ( ) {
271- var failed = false
272-
185+ gulp . task ( 'run-ts-declaration-tests' , function ( done ) {
273186 return gulp
274187 . src ( [ 'test/types/**/*' , 'types/**/*' ] , { base : '.' } )
275188 . pipe (
@@ -281,20 +194,22 @@ gulp.task('run-ts-declaration-tests', function () {
281194 strictNullChecks : true
282195 } )
283196 )
284- . on ( 'error' , function ( ) {
285- failed = true
286- } )
287- . on ( 'finish' , function ( ) {
288- if ( failed ) {
289- console . log (
290- '[ERROR] TypeScript declarations contain errors. Exiting...'
291- )
292- process . exit ( 1 )
293- }
294- } )
295197 . pipe ( gulp . dest ( 'build/test/types' ) )
198+ . on ( 'error' , err => done ( err ) )
199+ . on ( 'end' , ( ) => done ( ) )
296200} )
297201
202+ gulp . task ( 'all' , gulp . series ( 'nodejs' , 'browser' ) )
203+
204+ gulp . task ( 'test-browser' , gulp . series ( 'browser' , 'run-browser-test' ) )
205+
206+ gulp . task (
207+ 'test' ,
208+ gulp . series ( 'run-ts-declaration-tests' , 'test-nodejs' , 'test-browser' )
209+ )
210+
211+ gulp . task ( 'default' , gulp . series ( 'test' ) )
212+
298213function logActiveNodeHandles ( ) {
299214 if ( enableActiveNodeHandlesLogging ) {
300215 console . log (
@@ -315,46 +230,10 @@ function newJasmineConsoleReporter () {
315230 } )
316231}
317232
318- function babelifyTransform ( ) {
319- return babelify . configure ( babelConfig ( ) )
320- }
321-
322- function babelConfig ( ) {
323- return {
324- presets : [ 'env' ] ,
325- plugins : [ 'transform-runtime' ]
326- }
327- }
328-
329- function browserifyTransformNodeToBrowserRequire ( ) {
330- var nodeRequire = '/node'
331- var browserRequire = '/browser'
332-
333- return transformTools . makeRequireTransform (
334- 'bodeToBrowserRequireTransform' ,
335- { evaluateArguments : true } ,
336- function ( args , opts , cb ) {
337- var requireArg = args [ 0 ]
338- var endsWithNodeRequire =
339- requireArg . slice ( - nodeRequire . length ) === nodeRequire
340- if ( endsWithNodeRequire ) {
341- var newRequireArg = requireArg . replace ( nodeRequire , browserRequire )
342- return cb ( null , "require('" + newRequireArg + "')" )
343- } else {
344- return cb ( )
345- }
346- }
347- )
348- }
349-
350233function runKarma ( browser , cb ) {
351234 new karma . Server (
352235 {
353- configFile : path . join (
354- __dirname ,
355- `/test/browser/karma-${ browser } .conf.js`
356- ) ,
357- singleRun : true
236+ configFile : path . join ( __dirname , `/test/browser/karma-${ browser } .conf.js` )
358237 } ,
359238 function ( exitCode ) {
360239 exitCode ? process . exit ( exitCode ) : cb ( )
0 commit comments