diff --git a/services/web/Gruntfile.coffee b/services/web/Gruntfile.coffee index 5e71b83f7a..841776fbe6 100644 --- a/services/web/Gruntfile.coffee +++ b/services/web/Gruntfile.coffee @@ -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= or --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= or --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"] diff --git a/services/web/Makefile b/services/web/Makefile index bee18713a3..dbeb2f3a0c 100644 --- a/services/web/Makefile +++ b/services/web/Makefile @@ -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 \ diff --git a/services/web/npm-shrinkwrap.json b/services/web/npm-shrinkwrap.json index 55d9bb68d0..e8eecb0300 100644 --- a/services/web/npm-shrinkwrap.json +++ b/services/web/npm-shrinkwrap.json @@ -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", diff --git a/services/web/package.json b/services/web/package.json index 8a70f3a226..7feb3649b2 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -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",