Merge pull request #1426 from sharelatex/as-cleanup-grunt

Cleanup grunt config & dependencies

GitOrigin-RevId: e44445e727e8cf56d03bf33a8741b9a47418a620
This commit is contained in:
James Allen 2019-01-29 10:10:13 +00:00 committed by sharelatex
parent abb259a98b
commit b85595b8ca
4 changed files with 47 additions and 1026 deletions

View file

@ -4,205 +4,11 @@ Settings = require "settings-sharelatex"
require('es6-promise').polyfill()
module.exports = (grunt) ->
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-less'
grunt.loadNpmTasks 'grunt-contrib-clean'
grunt.loadNpmTasks 'grunt-mocha-test'
grunt.loadNpmTasks 'grunt-available-tasks'
grunt.loadNpmTasks 'grunt-contrib-requirejs'
grunt.loadNpmTasks 'grunt-bunyan'
grunt.loadNpmTasks 'grunt-sed'
grunt.loadNpmTasks 'grunt-git-rev-parse'
grunt.loadNpmTasks 'grunt-file-append'
grunt.loadNpmTasks 'grunt-file-append'
grunt.loadNpmTasks 'grunt-env'
grunt.loadNpmTasks 'grunt-newer'
grunt.loadNpmTasks 'grunt-contrib-watch'
grunt.loadNpmTasks 'grunt-parallel'
grunt.loadNpmTasks 'grunt-exec'
grunt.loadNpmTasks 'grunt-postcss'
grunt.loadNpmTasks 'grunt-forever'
grunt.loadNpmTasks 'grunt-shell'
# grunt.loadNpmTasks 'grunt-contrib-imagemin'
# grunt.loadNpmTasks 'grunt-sprity'
config =
exec:
run:
command:"node app.js | ./node_modules/logger-sharelatex/node_modules/bunyan/bin/bunyan --color"
cssmin_sl:
command:"node_modules/clean-css/bin/cleancss --s0 --source-map -o public/stylesheets/style.css public/stylesheets/style.css"
cssmin_ol:
command:"node_modules/clean-css/bin/cleancss --s0 --source-map -o public/stylesheets/ol-style.css public/stylesheets/ol-style.css"
cssmin_ol_light:
command:"node_modules/clean-css/bin/cleancss --s0 --source-map -o public/stylesheets/ol-light-style.css public/stylesheets/ol-light-style.css"
forever:
app:
options:
index: "app.js"
logFile: "app.log"
watch:
coffee:
files: 'public/**/*.coffee'
tasks: ['quickcompile:coffee']
options: {}
less:
files: '**/*.less'
tasks: ['compile:css']
options: {}
parallel:
run:
tasks:['exec', 'watch']
options:
grunt:true
stream:true
# imagemin:
# dynamic:
# files: [{
# expand: true
# cwd: 'public/img/'
# src: ['**/*.{png,jpg,gif}']
# dest: 'public/img/'
# }]
# options:
# interlaced:false
# optimizationLevel: 7
# sprity:
# sprite:
# options:
# cssPath:"/img/"
# 'style': '../../public/stylesheets/app/sprites.less'
# margin: 0
# src: ['./public/img/flags/24/*.png']
# dest: './public/img/sprite'
coffee:
app_dir:
expand: true,
flatten: false,
cwd: 'app/coffee',
src: ['**/*.coffee'],
dest: 'app/js/',
ext: '.js'
app:
src: 'app.coffee'
dest: 'app.js'
sharejs:
options:
join: true
files:
"public/js/libs/sharejs.js": [
"public/coffee/ide/editor/sharejs/header.coffee"
"public/coffee/ide/editor/sharejs/vendor/types/helpers.coffee"
"public/coffee/ide/editor/sharejs/vendor/types/text.coffee"
"public/coffee/ide/editor/sharejs/vendor/types/text-api.coffee"
"public/coffee/ide/editor/sharejs/vendor/client/microevent.coffee"
"public/coffee/ide/editor/sharejs/vendor/client/doc.coffee"
"public/coffee/ide/editor/sharejs/vendor/client/ace.coffee"
"public/coffee/ide/editor/sharejs/vendor/client/cm.coffee"
]
client:
expand: true,
flatten: false,
cwd: 'public/coffee',
src: ['**/*.coffee'],
dest: 'public/js/',
ext: '.js',
options:
sourceMap: true
smoke_tests:
expand: true,
flatten: false,
cwd: 'test/smoke/coffee',
src: ['**/*.coffee'],
dest: 'test/smoke/js/',
ext: '.js'
unit_tests:
expand: true,
flatten: false,
cwd: 'test/unit/coffee',
src: ['**/*.coffee'],
dest: 'test/unit/js/',
ext: '.js'
acceptance_tests:
expand: true,
flatten: false,
cwd: 'test/acceptance/coffee',
src: ['**/*.coffee'],
dest: 'test/acceptance/js/',
ext: '.js'
less:
app:
options:
sourceMap: true
sourceMapFilename: "public/stylesheets/style.css.map"
sourceMapBasepath: "public/stylesheets"
globalVars:
'is-overleaf': false
'is-overleaf-light': false
'show-rich-text': Settings.showRichText
files:
"public/stylesheets/style.css": "public/stylesheets/style.less"
ol:
options:
sourceMap: true
sourceMapFilename: "public/stylesheets/ol-style.css.map"
sourceMapBasepath: "public/stylesheets"
globalVars:
'is-overleaf': true
'is-overleaf-light': false
'show-rich-text': Settings.showRichText
files:
"public/stylesheets/ol-style.css": "public/stylesheets/ol-style.less"
'ol-light':
options:
sourceMap: true
sourceMapFilename: "public/stylesheets/ol-light-style.css.map"
sourceMapBasepath: "public/stylesheets"
globalVars:
'is-overleaf': true
'is-overleaf-light': true
'show-rich-text': Settings.showRichText
files:
"public/stylesheets/ol-light-style.css": "public/stylesheets/ol-light-style.less"
postcss:
options:
map:
prev: "public/stylesheets/"
inline: false
sourcesContent: true
processors: [
require('autoprefixer')({browsers: [ 'last 2 versions', 'ie >= 10' ]})
]
dist:
src: [ "public/stylesheets/style.css", "public/stylesheets/ol-style.css", "public/stylesheets/ol-light-style.css" ]
env:
run:
add:
NODE_TLS_REJECT_UNAUTHORIZED:0
requirejs:
compile:
options:
@ -243,35 +49,6 @@ module.exports = (grunt) ->
]
clean:
app: ["app/js"]
unit_tests: ["test/unit/js"]
acceptance_tests: ["test/acceptance/js"]
mochaTest:
unit:
src: ["test/unit/js/#{grunt.option('feature') or '**'}/*.js"]
options:
reporter: grunt.option('reporter') or 'spec'
grep: grunt.option("grep")
smoke:
src: ['test/smoke/js/**/*.js']
options:
reporter: grunt.option('reporter') or 'spec'
grep: grunt.option("grep")
acceptance:
src: ["test/acceptance/js/#{grunt.option('feature') or '**'}/*.js"]
options:
timeout: 40000
reporter: grunt.option('reporter') or 'spec'
grep: grunt.option("grep")
"git-rev-parse":
version:
options:
prop: 'commit'
file_append:
default_options: files: [ {
append: '\n//ide.js is complete - used for automated testing'
@ -279,189 +56,6 @@ module.exports = (grunt) ->
output: 'public/minjs/ide.js'
}]
sed:
version:
path: "app/views/sentry.pug"
pattern: '@@COMMIT@@',
replacement: '<%= commit %>',
release:
path: "app/views/sentry.pug"
pattern: "@@RELEASE@@"
replacement: process.env.BUILD_NUMBER || "(unknown build)"
shell:
fullAcceptanceTests:
command: "bash ./test/acceptance/scripts/full-test.sh"
dockerTests:
command: 'docker run -v "$(pwd):/app" --env SHARELATEX_ALLOW_PUBLIC_ACCESS=true --rm sharelatex/acceptance-test-runner'
availabletasks:
tasks:
options:
filter: 'exclude',
tasks: [
'coffee'
'less'
'clean'
'mochaTest'
'availabletasks'
'wrap_sharejs'
'requirejs'
'execute'
'bunyan'
]
groups:
"Compile tasks": [
"compile:server"
"compile:client"
"compile:tests"
"compile"
"compile:unit_tests"
"compile:smoke_tests"
"compile:css"
"compile:minify"
"install"
]
"Test tasks": [
"test:unit"
"test:acceptance"
]
"Run tasks": [
"run"
"default"
]
"Misc": [
"help"
]
moduleCompileServerTasks = []
moduleCompileUnitTestTasks = []
moduleUnitTestTasks = []
moduleCompileClientTasks = []
moduleIdeClientSideIncludes = []
moduleMainClientSideIncludes = []
if fs.existsSync "./modules"
for module in fs.readdirSync "./modules"
if fs.existsSync "./modules/#{module}/index.coffee"
config.coffee["module_#{module}_server"] = {
expand: true,
flatten: false,
cwd: "modules/#{module}/app/coffee",
src: ['**/*.coffee'],
dest: "modules/#{module}/app/js",
ext: '.js'
}
config.coffee["module_#{module}_index"] = {
src: "modules/#{module}/index.coffee",
dest: "modules/#{module}/index.js"
}
moduleCompileServerTasks.push "coffee:module_#{module}_server"
moduleCompileServerTasks.push "coffee:module_#{module}_index"
config.coffee["module_#{module}_unit_tests"] = {
expand: true,
flatten: false,
cwd: "modules/#{module}/test/unit/coffee",
src: ['**/*.coffee'],
dest: "modules/#{module}/test/unit/js",
ext: '.js'
}
config.mochaTest["module_#{module}_unit"] = {
src: ["modules/#{module}/test/unit/js/**/*.js"]
options:
reporter: grunt.option('reporter') or 'spec'
grep: grunt.option("grep")
}
moduleCompileUnitTestTasks.push "coffee:module_#{module}_unit_tests"
moduleUnitTestTasks.push "mochaTest:module_#{module}_unit"
if fs.existsSync "./modules/#{module}/public/coffee/ide/index.coffee"
config.coffee["module_#{module}_client_ide"] = {
expand: true,
flatten: false,
cwd: "modules/#{module}/public/coffee/ide",
src: ['**/*.coffee'],
dest: "public/js/ide/#{module}",
ext: '.js'
}
moduleCompileClientTasks.push "coffee:module_#{module}_client_ide"
moduleIdeClientSideIncludes.push "ide/#{module}/index"
if fs.existsSync "./modules/#{module}/public/coffee/main/index.coffee"
config.coffee["module_#{module}_client_main"] = {
expand: true,
flatten: false,
cwd: "modules/#{module}/public/coffee/main",
src: ['**/*.coffee'],
dest: "public/js/main/#{module}",
ext: '.js'
}
moduleCompileClientTasks.push "coffee:module_#{module}_client_main"
moduleMainClientSideIncludes.push "main/#{module}/index"
grunt.initConfig config
grunt.registerTask 'wrap_sharejs', 'Wrap the compiled ShareJS code for AMD module loading', () ->
content = fs.readFileSync "public/js/libs/sharejs.js"
fs.writeFileSync "public/js/libs/sharejs.js", """
define(["ace/ace"], function() {
#{content}
return window.sharejs;
});
"""
grunt.registerTask 'help', 'Display this help list', 'availabletasks'
grunt.registerTask 'compile:modules:server', 'Compile all the modules', moduleCompileServerTasks
grunt.registerTask 'compile:modules:unit_tests', 'Compile all the modules unit tests', moduleCompileUnitTestTasks
grunt.registerTask 'compile:modules:client', 'Compile all the module client side code', moduleCompileClientTasks
grunt.registerTask 'compile:modules:inject_clientside_includes', () ->
content = fs.readFileSync("public/js/ide.js").toString()
content = content.replace(/, "__IDE_CLIENTSIDE_INCLUDES__"/g, moduleIdeClientSideIncludes.map((i) -> ", \"#{i}\"").join(""))
fs.writeFileSync "public/js/ide.js", content
content = fs.readFileSync("public/js/main.js").toString()
content = content.replace(/, "__MAIN_CLIENTSIDE_INCLUDES__"/g, moduleMainClientSideIncludes.map((i) -> ", \"#{i}\"").join(""))
fs.writeFileSync "public/js/main.js", content
grunt.registerTask 'compile:server', 'Compile the server side coffee script', ['clean:app', 'coffee:app', 'coffee:app_dir', 'compile:modules:server']
grunt.registerTask 'compile:client', 'Compile the client side coffee script', ['coffee:client', 'coffee:sharejs', 'wrap_sharejs', "compile:modules:client", 'compile:modules:inject_clientside_includes']
grunt.registerTask 'compile:css', 'Compile the less files to css', ['less', 'postcss:dist']
grunt.registerTask 'compile:minify', 'Concat and minify the client side js and css', ['requirejs', "file_append", "exec:cssmin_sl", "exec:cssmin_ol", "exec:cssmin_ol_light"]
grunt.registerTask 'compile:unit_tests', 'Compile the unit tests', ['clean:unit_tests', 'coffee:unit_tests']
grunt.registerTask 'compile:acceptance_tests', 'Compile the acceptance tests', ['clean:acceptance_tests', 'coffee:acceptance_tests']
grunt.registerTask 'compile:smoke_tests', 'Compile the smoke tests', ['coffee:smoke_tests']
grunt.registerTask 'compile:tests', 'Compile all the tests', ['compile:smoke_tests', 'compile:unit_tests', 'compile:acceptance_tests']
grunt.registerTask 'compile', 'Compiles everything need to run web-sharelatex', ['compile:server', 'compile:client', 'compile:css']
grunt.registerTask 'quickcompile:coffee', 'Compiles only changed coffee files',['newer:coffee']
grunt.registerTask 'install', "Compile everything when installing as an npm module", ['compile']
grunt.registerTask 'test:unit', 'Run the unit tests (use --grep=<regex> or --feature=<feature> for individual tests)', ['compile:server', 'compile:modules:server', 'compile:unit_tests', 'compile:modules:unit_tests', 'mochaTest:unit'].concat(moduleUnitTestTasks)
grunt.registerTask 'test:acceptance', 'Run the acceptance tests (use --grep=<regex> or --feature=<feature> for individual tests)', ['compile:acceptance_tests', 'mochaTest:acceptance']
grunt.registerTask 'test:smoke', 'Run the smoke tests', ['compile:smoke_tests', 'mochaTest:smoke']
grunt.registerTask(
'test:acceptance:full',
"Start server and run acceptance tests",
['shell:fullAcceptanceTests']
)
grunt.registerTask(
'test:acceptance:docker',
"Run acceptance tests inside docker container",
['compile:acceptance_tests', 'shell:dockerTests']
)
grunt.registerTask 'test:modules:unit', 'Run the unit tests for the modules', ['compile:modules:server', 'compile:modules:unit_tests'].concat(moduleUnitTestTasks)
grunt.registerTask 'run:watch', "Compile and run the web-sharelatex server", ['compile', 'env:run', 'parallel']
grunt.registerTask 'run', "Compile and run the web-sharelatex server", ['compile', 'env:run', 'exec']
grunt.registerTask 'default', 'run'
grunt.registerTask 'version', "Write the version number into sentry.pug", ['git-rev-parse', 'sed']
grunt.registerTask 'compile:minify', 'Concat and minify the client side js', ['requirejs', "file_append"]

View file

@ -1,6 +1,7 @@
DOCKER_COMPOSE_FLAGS ?= -f docker-compose.yml
BUILD_NUMBER ?= local
BRANCH_NAME ?= $(shell git rev-parse --abbrev-ref HEAD)
GIT_SHA ?= $(shell git rev-parse HEAD)
PROJECT_NAME = web
MODULE_DIRS := $(shell find modules -mindepth 1 -maxdepth 1 -type d -not -name '.git' )
@ -36,6 +37,8 @@ CSS_OL_IEEE_FILE := public/stylesheets/ol-ieee-style.css
CSS_FILES := $(CSS_SL_FILE) $(CSS_OL_FILE) $(CSS_OL_LIGHT_FILE) $(CSS_OL_IEEE_FILE)
SENTRY_TEMPLATE := app/views/sentry.pug
# The automatic variable $(@D) is the target directory name
app.js: app.coffee
$(COFFEE) --compile -o $(@D) $<
@ -249,6 +252,11 @@ format_fix:
lint:
npm -q run lint
version:
sed -i.original -e "s/@@COMMIT@@/${GIT_SHA}/g" $(SENTRY_TEMPLATE)
sed -i.original -e "s/@@RELEASE@@/${BUILD_NUMBER}/g" $(SENTRY_TEMPLATE)
rm $(SENTRY_TEMPLATE).original
.PHONY:
all add install update test test_unit test_frontend test_acceptance \
test_acceptance_start_service test_acceptance_stop_service \

View file

@ -2,6 +2,20 @@
"name": "web-sharelatex",
"version": "0.1.4",
"dependencies": {
"@babel/runtime": {
"version": "7.2.0",
"from": "@babel/runtime@>=7.1.5 <8.0.0",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz",
"dev": true,
"dependencies": {
"regenerator-runtime": {
"version": "0.12.1",
"from": "regenerator-runtime@>=0.12.0 <0.13.0",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
"dev": true
}
}
},
"@contentful/axios": {
"version": "0.18.0",
"from": "@contentful/axios@>=0.18.0 <0.19.0",
@ -19,6 +33,12 @@
}
}
},
"@sheerun/mutationobserver-shim": {
"version": "0.3.2",
"from": "@sheerun/mutationobserver-shim@>=0.3.2 <0.4.0",
"resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz",
"dev": true
},
"@types/geojson": {
"version": "1.0.6",
"from": "@types/geojson@>=1.0.0 <2.0.0",
@ -1138,26 +1158,6 @@
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
"dev": true
},
"body": {
"version": "5.1.0",
"from": "body@>=5.1.0 <6.0.0",
"resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz",
"dev": true,
"dependencies": {
"bytes": {
"version": "1.0.0",
"from": "bytes@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
"dev": true
},
"raw-body": {
"version": "1.1.7",
"from": "raw-body@>=1.1.0 <1.2.0",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz",
"dev": true
}
}
},
"body-parser": {
"version": "1.18.2",
"from": "body-parser@>=1.13.1 <2.0.0",
@ -1273,32 +1273,6 @@
"resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
"dev": true
},
"broadway": {
"version": "0.3.6",
"from": "broadway@>=0.3.2 <0.4.0",
"resolved": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz",
"dev": true,
"dependencies": {
"async": {
"version": "0.2.10",
"from": "async@>=0.2.0 <0.3.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
"dev": true
},
"cliff": {
"version": "0.1.9",
"from": "cliff@0.1.9",
"resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz",
"dev": true
},
"winston": {
"version": "0.8.0",
"from": "winston@0.8.0",
"resolved": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz",
"dev": true
}
}
},
"brorand": {
"version": "1.1.0",
"from": "brorand@>=1.0.1 <2.0.0",
@ -1551,7 +1525,8 @@
"chai-spies": {
"version": "1.0.0",
"from": "chai-spies@",
"resolved": "https://registry.npmjs.org/chai-spies/-/chai-spies-1.0.0.tgz"
"resolved": "https://registry.npmjs.org/chai-spies/-/chai-spies-1.0.0.tgz",
"dev": true
},
"chalk": {
"version": "1.1.3",
@ -1737,20 +1712,6 @@
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
"dev": true
},
"cliff": {
"version": "0.1.10",
"from": "cliff@>=0.1.9 <0.2.0",
"resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.10.tgz",
"dev": true,
"dependencies": {
"colors": {
"version": "1.0.3",
"from": "colors@>=1.0.3 <1.1.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
"dev": true
}
}
},
"cliui": {
"version": "2.1.0",
"from": "cliui@>=2.1.0 <3.0.0",
@ -2072,12 +2033,6 @@
"from": "contentful-sdk-core@>=6.0.0-beta0 <7.0.0",
"resolved": "http://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-6.0.0-beta1.tgz"
},
"continuable-cache": {
"version": "0.3.1",
"from": "continuable-cache@>=0.3.1 <0.4.0",
"resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz",
"dev": true
},
"convert-source-map": {
"version": "1.5.1",
"from": "convert-source-map@>=1.5.0 <2.0.0",
@ -2273,12 +2228,6 @@
"resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
"dev": true
},
"cycle": {
"version": "1.0.3",
"from": "cycle@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
"dev": true
},
"d": {
"version": "1.0.0",
"from": "d@>=1.0.0 <2.0.0",
@ -2556,12 +2505,6 @@
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"dev": true
},
"director": {
"version": "1.2.7",
"from": "director@1.2.7",
"resolved": "https://registry.npmjs.org/director/-/director-1.2.7.tgz",
"dev": true
},
"dlv": {
"version": "1.1.2",
"from": "dlv@>=1.1.0 <2.0.0",
@ -2622,6 +2565,12 @@
}
}
},
"dom-testing-library": {
"version": "3.16.3",
"from": "dom-testing-library@>=3.13.1 <4.0.0",
"resolved": "https://registry.npmjs.org/dom-testing-library/-/dom-testing-library-3.16.3.tgz",
"dev": true
},
"domain-browser": {
"version": "1.2.0",
"from": "domain-browser@>=1.1.1 <2.0.0",
@ -2846,12 +2795,6 @@
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
"dev": true
},
"error": {
"version": "7.0.2",
"from": "error@>=7.0.0 <8.0.0",
"resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz",
"dev": true
},
"error-ex": {
"version": "1.3.1",
"from": "error-ex@>=1.2.0 <2.0.0",
@ -3308,20 +3251,6 @@
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"dev": true
},
"event-stream": {
"version": "0.5.3",
"from": "event-stream@>=0.5.0 <0.6.0",
"resolved": "https://registry.npmjs.org/event-stream/-/event-stream-0.5.3.tgz",
"dev": true,
"dependencies": {
"optimist": {
"version": "0.2.8",
"from": "optimist@>=0.2.0 <0.3.0",
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz",
"dev": true
}
}
},
"eventemitter2": {
"version": "0.4.14",
"from": "eventemitter2@>=0.4.13 <0.5.0",
@ -3534,12 +3463,6 @@
"from": "extsprintf@1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz"
},
"eyes": {
"version": "0.1.8",
"from": "eyes@>=0.1.8 <0.2.0",
"resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
"dev": true
},
"failure": {
"version": "1.1.1",
"from": "failure@>=1.1.0 <1.2.0",
@ -3685,26 +3608,6 @@
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
"dev": true
},
"flatiron": {
"version": "0.4.3",
"from": "flatiron@>=0.4.2 <0.5.0",
"resolved": "https://registry.npmjs.org/flatiron/-/flatiron-0.4.3.tgz",
"dev": true,
"dependencies": {
"minimist": {
"version": "0.0.10",
"from": "minimist@>=0.0.1 <0.1.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"dev": true
},
"optimist": {
"version": "0.6.0",
"from": "optimist@0.6.0",
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz",
"dev": true
}
}
},
"flexbuffer": {
"version": "0.0.6",
"from": "flexbuffer@0.0.6",
@ -3744,31 +3647,11 @@
"resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
"dev": true
},
"forever": {
"version": "0.14.2",
"from": "forever@>=0.14.1 <0.15.0",
"resolved": "https://registry.npmjs.org/forever/-/forever-0.14.2.tgz",
"dev": true
},
"forever-agent": {
"version": "0.6.1",
"from": "forever-agent@>=0.6.1 <0.7.0",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"
},
"forever-monitor": {
"version": "1.5.2",
"from": "forever-monitor@>=1.5.1 <1.6.0",
"resolved": "https://registry.npmjs.org/forever-monitor/-/forever-monitor-1.5.2.tgz",
"dev": true,
"dependencies": {
"minimatch": {
"version": "1.0.0",
"from": "minimatch@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz",
"dev": true
}
}
},
"form-data": {
"version": "2.3.1",
"from": "form-data@>=2.3.1 <2.4.0",
@ -3888,12 +3771,6 @@
"from": "gauge@>=2.7.3 <2.8.0",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz"
},
"gaze": {
"version": "1.1.2",
"from": "gaze@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
"dev": true
},
"generate-function": {
"version": "2.0.0",
"from": "generate-function@>=2.0.0 <3.0.0",
@ -4058,26 +3935,6 @@
}
}
},
"globule": {
"version": "1.2.0",
"from": "globule@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz",
"dev": true,
"dependencies": {
"glob": {
"version": "7.1.2",
"from": "glob@>=7.1.1 <7.2.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"dev": true
},
"minimatch": {
"version": "3.0.4",
"from": "minimatch@~3.0.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"dev": true
}
}
},
"got": {
"version": "6.7.1",
"from": "got@>=6.7.1 <7.0.0",
@ -4151,26 +4008,6 @@
}
}
},
"grunt-available-tasks": {
"version": "0.4.1",
"from": "grunt-available-tasks@0.4.1",
"resolved": "https://registry.npmjs.org/grunt-available-tasks/-/grunt-available-tasks-0.4.1.tgz",
"dev": true,
"dependencies": {
"lodash": {
"version": "2.4.2",
"from": "lodash@>=2.4.0 <2.5.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
"dev": true
},
"underscore.string": {
"version": "2.3.3",
"from": "underscore.string@>=2.3.3 <2.4.0",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
"dev": true
}
}
},
"grunt-bunyan": {
"version": "0.5.0",
"from": "grunt-bunyan@>=0.5.0 <0.6.0",
@ -4215,56 +4052,6 @@
}
}
},
"grunt-contrib-clean": {
"version": "0.5.0",
"from": "grunt-contrib-clean@0.5.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-0.5.0.tgz",
"dev": true
},
"grunt-contrib-coffee": {
"version": "0.10.0",
"from": "grunt-contrib-coffee@0.10.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.10.0.tgz",
"dev": true,
"dependencies": {
"ansi-styles": {
"version": "1.0.0",
"from": "ansi-styles@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
"dev": true
},
"chalk": {
"version": "0.4.0",
"from": "chalk@>=0.4.0 <0.5.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
"dev": true
},
"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",
"dev": true
},
"lodash": {
"version": "2.4.2",
"from": "lodash@~2.4.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
"dev": true
},
"mkdirp": {
"version": "0.3.5",
"from": "mkdirp@>=0.3.5 <0.4.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
"dev": true
},
"strip-ansi": {
"version": "0.1.1",
"from": "strip-ansi@>=0.1.0 <0.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
"dev": true
}
}
},
"grunt-contrib-requirejs": {
"version": "0.4.1",
"from": "grunt-contrib-requirejs@0.4.1",
@ -4279,46 +4066,6 @@
}
}
},
"grunt-contrib-watch": {
"version": "1.1.0",
"from": "grunt-contrib-watch@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz",
"dev": true,
"dependencies": {
"async": {
"version": "2.6.0",
"from": "async@^2.6.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
"dev": true
},
"lodash": {
"version": "4.17.10",
"from": "lodash@>=4.17.10 <5.0.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
"dev": true
}
}
},
"grunt-env": {
"version": "0.4.4",
"from": "grunt-env@0.4.4",
"resolved": "https://registry.npmjs.org/grunt-env/-/grunt-env-0.4.4.tgz",
"dev": true,
"dependencies": {
"lodash": {
"version": "2.4.2",
"from": "lodash@~2.4.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
"dev": true
}
}
},
"grunt-exec": {
"version": "0.4.7",
"from": "grunt-exec@>=0.4.7 <0.5.0",
"resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-0.4.7.tgz",
"dev": true
},
"grunt-execute": {
"version": "0.2.2",
"from": "grunt-execute@>=0.2.2 <0.3.0",
@ -4330,18 +4077,6 @@
"resolved": "https://registry.npmjs.org/grunt-file-append/-/grunt-file-append-0.0.6.tgz",
"dev": true
},
"grunt-forever": {
"version": "0.4.7",
"from": "grunt-forever@>=0.4.7 <0.5.0",
"resolved": "https://registry.npmjs.org/grunt-forever/-/grunt-forever-0.4.7.tgz",
"dev": true
},
"grunt-git-rev-parse": {
"version": "0.1.5",
"from": "grunt-git-rev-parse@>=0.1.4 <0.2.0",
"resolved": "https://registry.npmjs.org/grunt-git-rev-parse/-/grunt-git-rev-parse-0.1.5.tgz",
"dev": true
},
"grunt-known-options": {
"version": "1.1.0",
"from": "grunt-known-options@>=1.1.0 <1.2.0",
@ -4399,122 +4134,6 @@
}
}
},
"grunt-mocha-test": {
"version": "0.9.0",
"from": "grunt-mocha-test@0.9.0",
"resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.9.0.tgz",
"dev": true,
"dependencies": {
"commander": {
"version": "2.0.0",
"from": "commander@2.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz",
"dev": true
},
"glob": {
"version": "3.2.3",
"from": "glob@3.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz",
"dev": true
},
"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",
"dev": true
},
"jade": {
"version": "0.26.3",
"from": "jade@0.26.3",
"resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
"dev": true,
"dependencies": {
"commander": {
"version": "0.6.1",
"from": "commander@0.6.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
"dev": true
},
"mkdirp": {
"version": "0.3.0",
"from": "mkdirp@0.3.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
"dev": true
}
}
},
"mkdirp": {
"version": "0.3.5",
"from": "mkdirp@0.3.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
"dev": true
},
"mocha": {
"version": "1.17.1",
"from": "mocha@>=1.17.1 <1.18.0",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz",
"dev": true
}
}
},
"grunt-newer": {
"version": "1.3.0",
"from": "grunt-newer@>=1.2.0 <2.0.0",
"resolved": "https://registry.npmjs.org/grunt-newer/-/grunt-newer-1.3.0.tgz",
"dev": true,
"dependencies": {
"async": {
"version": "1.5.2",
"from": "async@^1.5.2",
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
"dev": true
},
"glob": {
"version": "7.1.2",
"from": "glob@>=7.0.5 <8.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"dev": true
},
"minimatch": {
"version": "3.0.4",
"from": "minimatch@^3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"dev": true
},
"rimraf": {
"version": "2.6.2",
"from": "rimraf@>=2.5.2 <3.0.0",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"dev": true
}
}
},
"grunt-parallel": {
"version": "0.5.1",
"from": "grunt-parallel@>=0.5.1 <0.6.0",
"resolved": "https://registry.npmjs.org/grunt-parallel/-/grunt-parallel-0.5.1.tgz",
"dev": true,
"dependencies": {
"q": {
"version": "0.8.12",
"from": "q@>=0.8.12 <0.9.0",
"resolved": "https://registry.npmjs.org/q/-/q-0.8.12.tgz",
"dev": true
}
}
},
"grunt-sed": {
"version": "0.1.1",
"from": "grunt-sed@>=0.1.1 <0.2.0",
"resolved": "https://registry.npmjs.org/grunt-sed/-/grunt-sed-0.1.1.tgz",
"dev": true
},
"grunt-shell": {
"version": "2.1.0",
"from": "grunt-shell@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-2.1.0.tgz",
"dev": true
},
"handle-thing": {
"version": "1.2.5",
"from": "handle-thing@>=1.2.5 <2.0.0",
@ -4618,12 +4237,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-cors": {
"version": "1.1.0",
"from": "has-cors@1.1.0",
@ -4941,12 +4554,6 @@
}
}
},
"i": {
"version": "0.3.6",
"from": "i@>=0.3.0 <0.4.0",
"resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz",
"dev": true
},
"i18next": {
"version": "1.10.6",
"from": "i18next@>=1.10.6 <2.0.0",
@ -5853,12 +5460,6 @@
"resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
"dev": true
},
"lazy": {
"version": "1.0.11",
"from": "lazy@>=1.0.11 <1.1.0",
"resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz",
"dev": true
},
"lazy-cache": {
"version": "1.0.4",
"from": "lazy-cache@>=1.0.3 <2.0.0",
@ -6204,12 +5805,6 @@
"from": "libqp@1.1.0",
"resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz"
},
"livereload-js": {
"version": "2.3.0",
"from": "livereload-js@>=2.2.0 <3.0.0",
"resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz",
"dev": true
},
"load-json-file": {
"version": "2.0.0",
"from": "load-json-file@>=2.0.0 <3.0.0",
@ -6981,12 +6576,6 @@
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"dev": true
},
"lpad": {
"version": "0.1.0",
"from": "lpad@>=0.1.0 <0.2.0",
"resolved": "https://registry.npmjs.org/lpad/-/lpad-0.1.0.tgz",
"dev": true
},
"lru-cache": {
"version": "2.7.3",
"from": "lru-cache@>=2.0.0 <3.0.0",
@ -7684,32 +7273,6 @@
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"dev": true
},
"nconf": {
"version": "0.6.9",
"from": "nconf@>=0.6.9 <0.7.0",
"resolved": "https://registry.npmjs.org/nconf/-/nconf-0.6.9.tgz",
"dev": true,
"dependencies": {
"async": {
"version": "0.2.9",
"from": "async@0.2.9",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz",
"dev": true
},
"minimist": {
"version": "0.0.10",
"from": "minimist@>=0.0.1 <0.1.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"dev": true
},
"optimist": {
"version": "0.6.0",
"from": "optimist@0.6.0",
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz",
"dev": true
}
}
},
"ncp": {
"version": "2.0.0",
"from": "ncp@>=2.0.0 <2.1.0",
@ -8189,26 +7752,6 @@
}
}
},
"nomnom": {
"version": "1.6.2",
"from": "nomnom@>=1.6.0 <1.7.0",
"resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz",
"dev": true,
"dependencies": {
"colors": {
"version": "0.5.1",
"from": "colors@>=0.5.0 <0.6.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz",
"dev": true
},
"underscore": {
"version": "1.4.4",
"from": "underscore@>=1.4.4 <1.5.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
"dev": true
}
}
},
"nopt": {
"version": "3.0.6",
"from": "nopt@>=3.0.1 <3.1.0",
@ -8243,12 +7786,6 @@
"from": "npmlog@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz"
},
"nssocket": {
"version": "0.5.3",
"from": "nssocket@>=0.5.1 <0.6.0",
"resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.5.3.tgz",
"dev": true
},
"null-check": {
"version": "1.0.0",
"from": "null-check@>=1.0.0 <2.0.0",
@ -8931,12 +8468,6 @@
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
"dev": true
},
"pkginfo": {
"version": "0.3.1",
"from": "pkginfo@>=0.3.0 <0.4.0",
"resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz",
"dev": true
},
"platform": {
"version": "1.3.5",
"from": "platform@1.3.5",
@ -9235,12 +8766,6 @@
"dev": true,
"optional": true
},
"prompt": {
"version": "0.2.14",
"from": "prompt@0.2.14",
"resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz",
"dev": true
},
"prop-types": {
"version": "15.6.1",
"from": "prop-types@>=15.5.10 <16.0.0",
@ -9287,12 +8812,6 @@
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
"dev": true
},
"ps-tree": {
"version": "0.0.3",
"from": "ps-tree@>=0.0.0 <0.1.0",
"resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-0.0.3.tgz",
"dev": true
},
"pseudomap": {
"version": "1.0.2",
"from": "pseudomap@>=1.0.1 <2.0.0",
@ -9585,10 +9104,10 @@
"from": "react-dom@>=15.4.2 <16.0.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz"
},
"read": {
"version": "1.0.7",
"from": "read@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
"react-testing-library": {
"version": "5.4.4",
"from": "react-testing-library@>=5.4.2 <6.0.0",
"resolved": "https://registry.npmjs.org/react-testing-library/-/react-testing-library-5.4.4.tgz",
"dev": true
},
"read-pkg": {
@ -9790,20 +9309,6 @@
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
"dev": true
},
"replace": {
"version": "0.2.10",
"from": "replace@>=0.2.4 <0.3.0",
"resolved": "https://registry.npmjs.org/replace/-/replace-0.2.10.tgz",
"dev": true,
"dependencies": {
"colors": {
"version": "0.5.1",
"from": "colors@>=0.5.0 <0.6.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz",
"dev": true
}
}
},
"request": {
"version": "2.83.0",
"from": "request@>=2.69.0 <3.0.0",
@ -9944,12 +9449,6 @@
}
}
},
"revalidator": {
"version": "0.1.8",
"from": "revalidator@>=0.1.0 <0.2.0",
"resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz",
"dev": true
},
"right-align": {
"version": "0.1.3",
"from": "right-align@>=0.1.1 <0.2.0",
@ -10013,12 +9512,6 @@
"from": "safe-buffer@>=5.1.1 <5.2.0",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz"
},
"safe-json-parse": {
"version": "1.0.1",
"from": "safe-json-parse@>=1.0.1 <1.1.0",
"resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz",
"dev": true
},
"safe-json-stringify": {
"version": "1.0.4",
"from": "safe-json-stringify@>=1.0.0 <2.0.0",
@ -10903,12 +10396,6 @@
"from": "string_decoder@>=0.10.0 <0.11.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
},
"string-template": {
"version": "0.2.1",
"from": "string-template@>=0.2.1 <0.3.0",
"resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz",
"dev": true
},
"string-width": {
"version": "1.0.2",
"from": "string-width@>=1.0.1 <2.0.0",
@ -11150,21 +10637,8 @@
"version": "2.3.0",
"from": "timespan@>=2.3.0 <2.4.0",
"resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz",
"dev": true
},
"tiny-lr": {
"version": "1.1.1",
"from": "tiny-lr@>=1.1.1 <2.0.0",
"resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz",
"dev": true,
"dependencies": {
"debug": {
"version": "3.1.0",
"from": "debug@>=3.1.0 <4.0.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"dev": true
}
}
"optional": true
},
"tmp": {
"version": "0.0.33",
@ -11681,26 +11155,6 @@
"from": "util-deprecate@>=1.0.1 <1.1.0",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
},
"utile": {
"version": "0.2.1",
"from": "utile@>=0.2.1 <0.3.0",
"resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz",
"dev": true,
"dependencies": {
"async": {
"version": "0.2.10",
"from": "async@>=0.2.9 <0.3.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
"dev": true
},
"ncp": {
"version": "0.4.2",
"from": "ncp@>=0.4.0 <0.5.0",
"resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz",
"dev": true
}
}
},
"utils-merge": {
"version": "1.0.0",
"from": "utils-merge@1.0.0",
@ -11952,19 +11406,11 @@
}
}
},
"watch": {
"version": "0.13.0",
"from": "watch@>=0.13.0 <0.14.0",
"resolved": "https://registry.npmjs.org/watch/-/watch-0.13.0.tgz",
"dev": true,
"dependencies": {
"minimist": {
"version": "1.2.0",
"from": "minimist@>=1.1.0 <2.0.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"dev": true
}
}
"wait-for-expect": {
"version": "1.1.0",
"from": "wait-for-expect@>=1.1.0 <2.0.0",
"resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-1.1.0.tgz",
"dev": true
},
"watchpack": {
"version": "1.6.0",
@ -13031,20 +12477,6 @@
"from": "window-size@0.1.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz"
},
"winston": {
"version": "0.8.3",
"from": "winston@>=0.8.1 <0.9.0",
"resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz",
"dev": true,
"dependencies": {
"async": {
"version": "0.2.10",
"from": "async@>=0.2.0 <0.3.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
"dev": true
}
}
},
"with": {
"version": "3.0.1",
"from": "with@>=3.0.0 <3.1.0",

View file

@ -136,24 +136,11 @@
"eslint-plugin-react": "^7.11.1",
"eslint-plugin-standard": "^3.0.1",
"grunt": "0.4.5",
"grunt-available-tasks": "0.4.1",
"grunt-bunyan": "0.5.0",
"grunt-cli": "^1.2.0",
"grunt-contrib-clean": "0.5.0",
"grunt-contrib-coffee": "0.10.0",
"grunt-contrib-requirejs": "0.4.1",
"grunt-contrib-watch": "^1.0.0",
"grunt-env": "0.4.4",
"grunt-exec": "^0.4.7",
"grunt-execute": "^0.2.2",
"grunt-file-append": "0.0.6",
"grunt-forever": "^0.4.7",
"grunt-git-rev-parse": "^0.1.4",
"grunt-mocha-test": "0.9.0",
"grunt-newer": "^1.2.0",
"grunt-parallel": "^0.5.1",
"grunt-sed": "^0.1.1",
"grunt-shell": "^2.1.0",
"handlebars-loader": "^1.7.0",
"karma": "^2.0.0",
"karma-chai-sinon": "^0.1.5",