Remove grunt

This commit is contained in:
Christopher Hoskin 2019-01-11 12:06:45 +00:00
parent cc00d5311b
commit 4aa2f7de32
3 changed files with 100 additions and 304 deletions

View file

@ -1,104 +0,0 @@
spawn = require("child_process").spawn
module.exports = (grunt) ->
grunt.initConfig
coffee:
app_src:
expand: true,
flatten: true,
cwd: "app"
src: ['coffee/*.coffee'],
dest: 'app/js/',
ext: '.js'
app:
src: "app.coffee"
dest: "app.js"
unit_tests:
expand: true
cwd: "test/unit/coffee"
src: ["**/*.coffee"]
dest: "test/unit/js/"
ext: ".js"
acceptance_tests:
expand: true
cwd: "test/acceptance/coffee"
src: ["**/*.coffee"]
dest: "test/acceptance/js/"
ext: ".js"
smoke_tests:
expand: true
cwd: "test/smoke/coffee"
src: ["**/*.coffee"]
dest: "test/smoke/js"
ext: ".js"
clean:
app: ["app/js/"]
unit_tests: ["test/unit/js"]
acceptance_tests: ["test/acceptance/js"]
smoke_tests: ["test/smoke/js"]
execute:
app:
src: "app.js"
mkdir:
all:
options:
create: ["cache", "compiles"]
mochaTest:
unit:
options:
reporter: "spec"
grep: grunt.option("grep")
src: ["test/unit/js/**/*.js"]
acceptance:
options:
reporter: "spec"
timeout: 40000
grep: grunt.option("grep")
src: ["test/acceptance/js/**/*.js"]
smoke:
options:
reported: "spec"
timeout: 10000
src: ["test/smoke/js/**/*.js"]
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-clean'
grunt.loadNpmTasks 'grunt-mocha-test'
grunt.loadNpmTasks 'grunt-shell'
grunt.loadNpmTasks 'grunt-execute'
grunt.loadNpmTasks 'grunt-bunyan'
grunt.loadNpmTasks 'grunt-mkdir'
grunt.registerTask 'compile:bin', () ->
callback = @async()
proc = spawn "cc", [
"-o", "bin/synctex", "-Isrc/synctex",
"src/synctex.c", "src/synctex/synctex_parser.c", "src/synctex/synctex_parser_utils.c", "-lz"
], stdio: "inherit"
proc.on "close", callback
grunt.registerTask 'compile:app', ['clean:app', 'coffee:app', 'coffee:app_src', 'coffee:smoke_tests', 'compile:bin']
grunt.registerTask 'run', ['compile:app', 'bunyan', 'execute']
grunt.registerTask 'compile:unit_tests', ['clean:unit_tests', 'coffee:unit_tests']
grunt.registerTask 'test:unit', ['compile:app', 'compile:unit_tests', 'mochaTest:unit']
grunt.registerTask 'compile:acceptance_tests', ['clean:acceptance_tests', 'coffee:acceptance_tests']
grunt.registerTask 'test:acceptance', ['compile:acceptance_tests', 'mochaTest:acceptance']
grunt.registerTask 'compile:smoke_tests', ['clean:smoke_tests', 'coffee:smoke_tests']
grunt.registerTask 'test:smoke', ['compile:smoke_tests', 'mochaTest:smoke']
grunt.registerTask 'install', 'compile:app'
grunt.registerTask 'default', ['mkdir', 'run']

View file

@ -221,10 +221,9 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
}, },
"ansi-styles": { "ansi-styles": {
"version": "0.2.0", "version": "1.1.0",
"from": "ansi-styles@>=0.2.0 <0.3.0", "from": "ansi-styles@>=1.1.0 <2.0.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-0.2.0.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
"dev": true
}, },
"aproba": { "aproba": {
"version": "1.2.0", "version": "1.2.0",
@ -440,10 +439,26 @@
"dev": true "dev": true
}, },
"chalk": { "chalk": {
"version": "0.5.1",
"from": "chalk@>=0.5.0 <0.6.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"from": "ansi-regex@^0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
},
"strip-ansi": {
"version": "0.3.0", "version": "0.3.0",
"from": "chalk@>=0.3.0 <0.4.0", "from": "strip-ansi@>=0.3.0 <0.4.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.3.0.tgz", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz"
"dev": true },
"supports-color": {
"version": "0.2.0",
"from": "supports-color@>=0.2.0 <0.3.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
}
}
}, },
"check-error": { "check-error": {
"version": "1.0.2", "version": "1.0.2",
@ -954,7 +969,7 @@
}, },
"grunt": { "grunt": {
"version": "0.4.5", "version": "0.4.5",
"from": "grunt@>=0.4.2 <0.5.0", "from": "grunt@>=0.4.5 <0.5.0",
"resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
"dependencies": { "dependencies": {
"async": { "async": {
@ -994,7 +1009,7 @@
}, },
"lru-cache": { "lru-cache": {
"version": "2.7.3", "version": "2.7.3",
"from": "lru-cache@>=2.0.0 <3.0.0", "from": "lru-cache@2",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz"
}, },
"minimatch": { "minimatch": {
@ -1027,38 +1042,38 @@
} }
}, },
"grunt-contrib-clean": { "grunt-contrib-clean": {
"version": "0.5.0", "version": "0.6.0",
"from": "grunt-contrib-clean@>=0.5.0 <0.6.0", "from": "grunt-contrib-clean@>=0.6.0 <0.7.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-0.5.0.tgz", "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-0.6.0.tgz",
"dev": true,
"dependencies": { "dependencies": {
"rimraf": { "rimraf": {
"version": "2.2.8", "version": "2.2.8",
"from": "rimraf@>=2.2.1 <2.3.0", "from": "rimraf@~2.2.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"
"dev": true
} }
} }
}, },
"grunt-contrib-coffee": { "grunt-contrib-coffee": {
"version": "0.7.0", "version": "0.11.1",
"from": "grunt-contrib-coffee@>=0.7.0 <0.8.0", "from": "grunt-contrib-coffee@>=0.11.0 <0.12.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.7.0.tgz", "resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz",
"dev": true,
"dependencies": { "dependencies": {
"coffee-script": { "coffee-script": {
"version": "1.6.3", "version": "1.7.1",
"from": "coffee-script@>=1.6.2 <1.7.0", "from": "coffee-script@>=1.7.0 <1.8.0",
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.3.tgz", "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz"
"dev": true },
"lodash": {
"version": "2.4.2",
"from": "lodash@>=2.4.1 <2.5.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz"
} }
} }
}, },
"grunt-execute": { "grunt-execute": {
"version": "0.1.5", "version": "0.2.2",
"from": "grunt-execute@>=0.1.5 <0.2.0", "from": "grunt-execute@>=0.2.2 <0.3.0",
"resolved": "https://registry.npmjs.org/grunt-execute/-/grunt-execute-0.1.5.tgz", "resolved": "https://registry.npmjs.org/grunt-execute/-/grunt-execute-0.2.2.tgz"
"dev": true
}, },
"grunt-legacy-log": { "grunt-legacy-log": {
"version": "0.1.3", "version": "0.1.3",
@ -1101,64 +1116,74 @@
"dependencies": { "dependencies": {
"async": { "async": {
"version": "0.1.22", "version": "0.1.22",
"from": "async@>=0.1.22 <0.2.0", "from": "async@~0.1.22",
"resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz"
}, },
"lodash": { "lodash": {
"version": "0.9.2", "version": "0.9.2",
"from": "lodash@>=0.9.2 <0.10.0", "from": "lodash@~0.9.2",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz"
} }
} }
}, },
"grunt-mkdir": {
"version": "1.0.0",
"from": "grunt-mkdir@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/grunt-mkdir/-/grunt-mkdir-1.0.0.tgz"
},
"grunt-mocha-test": { "grunt-mocha-test": {
"version": "0.8.2", "version": "0.11.0",
"from": "grunt-mocha-test@>=0.8.1 <0.9.0", "from": "grunt-mocha-test@>=0.11.0 <0.12.0",
"resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.8.2.tgz", "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.11.0.tgz",
"dev": true,
"dependencies": { "dependencies": {
"fs-extra": {
"version": "0.9.1",
"from": "fs-extra@>=0.9.1 <0.10.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.9.1.tgz"
},
"glob": { "glob": {
"version": "3.2.3", "version": "3.2.3",
"from": "glob@3.2.3", "from": "glob@3.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz"
"dev": true
}, },
"graceful-fs": { "graceful-fs": {
"version": "2.0.3", "version": "2.0.3",
"from": "graceful-fs@>=2.0.0 <2.1.0", "from": "graceful-fs@>=2.0.0 <2.1.0",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz"
"dev": true },
"jsonfile": {
"version": "1.1.1",
"from": "jsonfile@>=1.1.0 <1.2.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-1.1.1.tgz"
}, },
"lru-cache": { "lru-cache": {
"version": "2.7.3", "version": "2.7.3",
"from": "lru-cache@>=2.0.0 <3.0.0", "from": "lru-cache@2",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz"
"dev": true
}, },
"minimatch": { "minimatch": {
"version": "0.2.14", "version": "0.2.14",
"from": "minimatch@>=0.2.11 <0.3.0", "from": "minimatch@~0.2.11",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz"
"dev": true },
"mkdirp": {
"version": "0.5.1",
"from": "mkdirp@>=0.5.0 <0.6.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
}, },
"mocha": { "mocha": {
"version": "1.14.0", "version": "1.20.1",
"from": "mocha@>=1.14.0 <1.15.0", "from": "mocha@>=1.20.0 <1.21.0",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-1.14.0.tgz", "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.20.1.tgz",
"dev": true "dependencies": {
"mkdirp": {
"version": "0.3.5",
"from": "mkdirp@0.3.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"
} }
} }
}, },
"grunt-shell": { "ncp": {
"version": "0.6.4", "version": "0.5.1",
"from": "grunt-shell@>=0.6.1 <0.7.0", "from": "ncp@>=0.5.1 <0.6.0",
"resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-0.6.4.tgz", "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.5.1.tgz"
"dev": true }
}
}, },
"gtoken": { "gtoken": {
"version": "2.3.0", "version": "2.3.0",
@ -1199,12 +1224,6 @@
} }
} }
}, },
"has-color": {
"version": "0.1.7",
"from": "has-color@>=0.1.0 <0.2.0",
"resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
"dev": true
},
"has-flag": { "has-flag": {
"version": "2.0.0", "version": "2.0.0",
"from": "has-flag@>=2.0.0 <3.0.0", "from": "has-flag@>=2.0.0 <3.0.0",
@ -1469,16 +1488,6 @@
"from": "git+https://github.com/sharelatex/logger-sharelatex.git#v1.5.9", "from": "git+https://github.com/sharelatex/logger-sharelatex.git#v1.5.9",
"resolved": "git+https://github.com/sharelatex/logger-sharelatex.git#e8e1b95052f62e107336053e4a983f81cdbdf589", "resolved": "git+https://github.com/sharelatex/logger-sharelatex.git#e8e1b95052f62e107336053e4a983f81cdbdf589",
"dependencies": { "dependencies": {
"ansi-regex": {
"version": "0.2.1",
"from": "ansi-regex@^0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
},
"ansi-styles": {
"version": "1.1.0",
"from": "ansi-styles@>=1.1.0 <2.0.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"assertion-error": { "assertion-error": {
"version": "1.1.0", "version": "1.1.0",
"from": "assertion-error@>=1.1.0 <2.0.0", "from": "assertion-error@>=1.1.0 <2.0.0",
@ -1494,11 +1503,6 @@
"from": "chai@latest", "from": "chai@latest",
"resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz" "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz"
}, },
"chalk": {
"version": "0.5.1",
"from": "chalk@>=0.5.0 <0.6.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz"
},
"coffee-script": { "coffee-script": {
"version": "1.12.4", "version": "1.12.4",
"from": "coffee-script@1.12.4", "from": "coffee-script@1.12.4",
@ -1509,101 +1513,22 @@
"from": "deep-eql@>=3.0.1 <4.0.0", "from": "deep-eql@>=3.0.1 <4.0.0",
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz"
}, },
"diff": {
"version": "3.5.0",
"from": "diff@>=3.5.0 <4.0.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz"
},
"dtrace-provider": { "dtrace-provider": {
"version": "0.6.0", "version": "0.6.0",
"from": "dtrace-provider@>=0.6.0 <0.7.0", "from": "dtrace-provider@>=0.6.0 <0.7.0",
"resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz",
"optional": true "optional": true
}, },
"fs-extra": {
"version": "0.9.1",
"from": "fs-extra@>=0.9.1 <0.10.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.9.1.tgz",
"dependencies": {
"mkdirp": {
"version": "0.5.1",
"from": "mkdirp@>=0.5.0 <0.6.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
}
}
},
"glob": {
"version": "3.2.3",
"from": "glob@3.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz"
},
"graceful-fs": {
"version": "2.0.3",
"from": "graceful-fs@>=2.0.0 <2.1.0",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz"
},
"grunt-contrib-clean": {
"version": "0.6.0",
"from": "grunt-contrib-clean@>=0.6.0 <0.7.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-0.6.0.tgz"
},
"grunt-contrib-coffee": {
"version": "0.11.1",
"from": "grunt-contrib-coffee@>=0.11.0 <0.12.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz",
"dependencies": {
"coffee-script": {
"version": "1.7.1",
"from": "coffee-script@>=1.7.0 <1.8.0",
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz"
}
}
},
"grunt-execute": {
"version": "0.2.2",
"from": "grunt-execute@>=0.2.2 <0.3.0",
"resolved": "https://registry.npmjs.org/grunt-execute/-/grunt-execute-0.2.2.tgz"
},
"grunt-mocha-test": {
"version": "0.11.0",
"from": "grunt-mocha-test@>=0.11.0 <0.12.0",
"resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.11.0.tgz"
},
"has-flag": { "has-flag": {
"version": "3.0.0", "version": "3.0.0",
"from": "has-flag@>=3.0.0 <4.0.0", "from": "has-flag@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
}, },
"jsonfile": {
"version": "1.1.1",
"from": "jsonfile@>=1.1.0 <1.2.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-1.1.1.tgz"
},
"lodash": {
"version": "2.4.2",
"from": "lodash@>=2.4.1 <2.5.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz"
},
"lru-cache": {
"version": "2.7.3",
"from": "lru-cache@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz"
},
"minimatch": {
"version": "0.2.14",
"from": "minimatch@>=0.2.11 <0.3.0",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz"
},
"mocha": {
"version": "1.20.1",
"from": "mocha@>=1.20.0 <1.21.0",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-1.20.1.tgz"
},
"ncp": {
"version": "0.5.1",
"from": "ncp@>=0.5.1 <0.6.0",
"resolved": "https://registry.npmjs.org/ncp/-/ncp-0.5.1.tgz"
},
"rimraf": {
"version": "2.2.8",
"from": "rimraf@>=2.2.1 <2.3.0",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"
},
"sandboxed-module": { "sandboxed-module": {
"version": "2.0.3", "version": "2.0.3",
"from": "sandboxed-module@latest", "from": "sandboxed-module@latest",
@ -1612,29 +1537,12 @@
"sinon": { "sinon": {
"version": "7.2.2", "version": "7.2.2",
"from": "sinon@latest", "from": "sinon@latest",
"resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.2.tgz", "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.2.tgz"
"dependencies": {
"diff": {
"version": "3.5.0",
"from": "diff@>=3.5.0 <4.0.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz"
}, },
"supports-color": { "supports-color": {
"version": "5.5.0", "version": "5.5.0",
"from": "supports-color@>=5.5.0 <6.0.0", "from": "supports-color@>=5.5.0 <6.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
}
}
},
"strip-ansi": {
"version": "0.3.0",
"from": "strip-ansi@>=0.3.0 <0.4.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz"
},
"supports-color": {
"version": "0.2.0",
"from": "supports-color@>=0.2.0 <0.3.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
}, },
"timekeeper": { "timekeeper": {
"version": "1.0.0", "version": "1.0.0",

View file

@ -26,7 +26,6 @@
"dockerode": "^2.5.3", "dockerode": "^2.5.3",
"express": "^4.2.0", "express": "^4.2.0",
"fs-extra": "^0.16.3", "fs-extra": "^0.16.3",
"grunt-mkdir": "^1.0.0",
"heapdump": "^0.3.5", "heapdump": "^0.3.5",
"lockfile": "^1.0.3", "lockfile": "^1.0.3",
"logger-sharelatex": "git+https://github.com/sharelatex/logger-sharelatex.git#v1.5.9", "logger-sharelatex": "git+https://github.com/sharelatex/logger-sharelatex.git#v1.5.9",
@ -44,19 +43,12 @@
"wrench": "~1.5.4" "wrench": "~1.5.4"
}, },
"devDependencies": { "devDependencies": {
"mocha": "^4.0.1",
"coffee-script": "1.6.0",
"chai": "~1.8.1",
"sinon": "~1.7.3",
"grunt": "~0.4.2",
"grunt-contrib-coffee": "~0.7.0",
"grunt-contrib-clean": "~0.5.0",
"grunt-shell": "~0.6.1",
"grunt-mocha-test": "~0.8.1",
"sandboxed-module": "~0.3.0",
"timekeeper": "0.0.4",
"grunt-execute": "^0.1.5",
"bunyan": "^0.22.1", "bunyan": "^0.22.1",
"grunt-bunyan": "^0.5.0" "chai": "~1.8.1",
"coffee-script": "1.6.0",
"mocha": "^4.0.1",
"sandboxed-module": "~0.3.0",
"sinon": "~1.7.3",
"timekeeper": "0.0.4"
} }
} }