@@ -23,15 +23,13 @@ var buffer = require('vinyl-buffer')
23
23
var gulp = require ( 'gulp' )
24
24
var through = require ( 'through2' )
25
25
var uglify = require ( 'gulp-uglify' )
26
- var gutil = require ( 'gulp-util' )
27
26
var jasmine = require ( 'gulp-jasmine' )
28
27
var babelify = require ( 'babelify' )
29
28
var babel = require ( 'gulp-babel' )
30
29
var watch = require ( 'gulp-watch' )
31
30
var batch = require ( 'gulp-batch' )
32
31
var replace = require ( 'gulp-replace' )
33
32
var fs = require ( 'fs-extra' )
34
- var runSequence = require ( 'run-sequence' )
35
33
var path = require ( 'path' )
36
34
var minimist = require ( 'minimist' )
37
35
var install = require ( 'gulp-install' )
@@ -42,160 +40,80 @@ var ts = require('gulp-typescript')
42
40
var JasmineConsoleReporter = require ( 'jasmine-console-reporter' )
43
41
var karma = require ( 'karma' )
44
42
var transformTools = require ( 'browserify-transform-tools' )
43
+ var log = require ( 'fancy-log' )
45
44
46
45
/**
47
46
* Useful to investigate resource leaks in tests. Enable to see active sockets and file handles after the 'test' task.
48
47
*/
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
56
49
57
50
/** 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'
60
53
// Our app bundler
61
- var appBundler = browserify ( {
54
+ const appBundler = browserify ( {
62
55
entries : [ 'src/index.js' ] ,
63
56
cache : { } ,
64
57
standalone : 'neo4j' ,
65
- packageCache : { }
66
- } )
67
- . transform ( babelifyTransform ( ) )
68
- . transform ( browserifyTransformNodeToBrowserRequire ( ) )
69
- . bundle ( )
58
+ packageCache : { } ,
59
+ transform : [ 'babelify' , './support/inject-browser-transform' ]
60
+ } ) . bundle ( )
70
61
71
62
// Un-minified browser package
72
- appBundler
73
- . on ( 'error' , gutil . log )
63
+ await appBundler
64
+ . on ( 'error' , log . error )
74
65
. pipe ( source ( 'neo4j-web.js' ) )
75
66
. pipe ( gulp . dest ( browserOutput ) )
76
67
77
- return appBundler
78
- . on ( 'error' , gutil . log )
68
+ await appBundler
69
+ . on ( 'error' , log . error )
79
70
. pipe ( source ( 'neo4j-web.min.js' ) )
80
71
. pipe ( buffer ( ) )
81
72
. pipe ( uglify ( ) )
82
73
. pipe ( gulp . dest ( browserOutput ) )
83
74
} )
84
75
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
-
136
76
gulp . 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' ) )
145
81
} )
146
82
147
83
// 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
174
94
}
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
+ } )
195
96
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
+ )
199
117
200
118
gulp . task ( 'run-browser-test-chrome' , function ( cb ) {
201
119
runKarma ( 'chrome' , cb )
@@ -205,13 +123,7 @@ gulp.task('run-browser-test-firefox', function (cb) {
205
123
runKarma ( 'firefox' , cb )
206
124
} )
207
125
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' ) )
215
127
216
128
gulp . task ( 'watch' , function ( ) {
217
129
return watch (
@@ -222,28 +134,31 @@ gulp.task('watch', function () {
222
134
)
223
135
} )
224
136
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
+ )
228
143
229
144
/** Set the project version, controls package.json and version.js */
230
145
gulp . task ( 'set' , function ( ) {
231
146
// 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
233
148
234
149
if ( ! semver . valid ( version ) ) {
235
150
throw new Error ( `Invalid version "${ version } "` )
236
151
}
237
152
238
153
// Change the version in relevant files
239
- var versionFile = path . join ( 'src' , 'version.js' )
154
+ const versionFile = path . join ( 'src' , 'version.js' )
240
155
return gulp
241
156
. src ( [ versionFile ] , { base : './' } )
242
157
. pipe ( replace ( '0.0.0-dev' , version ) )
243
158
. pipe ( gulp . dest ( './' ) )
244
159
} )
245
160
246
- var neo4jHome = path . resolve ( './build/neo4j' )
161
+ const neo4jHome = path . resolve ( './build/neo4j' )
247
162
248
163
gulp . task ( 'start-neo4j' , function ( done ) {
249
164
sharedNeo4j . start ( neo4jHome , process . env . NEOCTRL_ARGS )
@@ -267,9 +182,7 @@ gulp.task('run-stress-tests', function () {
267
182
. on ( 'end' , logActiveNodeHandles )
268
183
} )
269
184
270
- gulp . task ( 'run-ts-declaration-tests' , function ( ) {
271
- var failed = false
272
-
185
+ gulp . task ( 'run-ts-declaration-tests' , function ( done ) {
273
186
return gulp
274
187
. src ( [ 'test/types/**/*' , 'types/**/*' ] , { base : '.' } )
275
188
. pipe (
@@ -281,20 +194,22 @@ gulp.task('run-ts-declaration-tests', function () {
281
194
strictNullChecks : true
282
195
} )
283
196
)
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
- } )
295
197
. pipe ( gulp . dest ( 'build/test/types' ) )
198
+ . on ( 'error' , err => done ( err ) )
199
+ . on ( 'end' , ( ) => done ( ) )
296
200
} )
297
201
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
+
298
213
function logActiveNodeHandles ( ) {
299
214
if ( enableActiveNodeHandlesLogging ) {
300
215
console . log (
@@ -315,46 +230,10 @@ function newJasmineConsoleReporter () {
315
230
} )
316
231
}
317
232
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
-
350
233
function runKarma ( browser , cb ) {
351
234
new karma . Server (
352
235
{
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` )
358
237
} ,
359
238
function ( exitCode ) {
360
239
exitCode ? process . exit ( exitCode ) : cb ( )
0 commit comments