From 794c6431e3668d5efbb2f19ea166444aaad2832d Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 18 Oct 2016 15:53:56 +0100 Subject: [PATCH 01/41] project name should be clickable href in invite email --- services/web/app/coffee/Features/Email/EmailBuilder.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index f7a7a78a05..562fee0936 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -92,7 +92,7 @@ templates.projectInvite = layout: NotificationEmailLayout type:"notification" compiledTemplate: _.template """ -

Hi, <%= owner.email %> wants to share '<%= project.name %>' with you

+

Hi, <%= owner.email %> wants to share '<%= project.name %>' with you

From aacdb1e96bd58ba2c1ffcec4edf6ccab87c367f8 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Mon, 28 Nov 2016 19:19:00 +0000 Subject: [PATCH 02/41] to string record event check --- .../web/app/coffee/Features/Analytics/AnalyticsManager.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee b/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee index 6840f8fa88..9f34d6d9d1 100644 --- a/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee +++ b/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee @@ -18,7 +18,7 @@ module.exports = recordEvent: (user_id, event, segmentation = {}, callback = (error) ->) -> - if user_id == settings.smokeTest?.userId + if user_id+"" == settings.smokeTest?.userId+"" return callback() opts = body: From 6e9458e9e158ef4a6d30702d754b62b05a6ed62c Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 29 Nov 2016 14:38:25 +0000 Subject: [PATCH 03/41] wip --- .../infrastructure/ExpressLocals.coffee | 19 +++++++++++++++++++ services/web/app/views/project/list.jade | 3 ++- .../web/app/views/project/list/side-bar.jade | 9 ++++++++- .../left-hand-menu-promo-controller.coffee | 5 ++++- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/services/web/app/coffee/infrastructure/ExpressLocals.coffee b/services/web/app/coffee/infrastructure/ExpressLocals.coffee index e469df9422..ce997f2eaf 100644 --- a/services/web/app/coffee/infrastructure/ExpressLocals.coffee +++ b/services/web/app/coffee/infrastructure/ExpressLocals.coffee @@ -189,6 +189,25 @@ module.exports = (app, webRouter, apiRouter)-> return AuthenticationController.isUserLoggedIn(req) res.locals.getSessionUser = -> return AuthenticationController.getSessionUser(req) + + res.locals.caseStudyToShow = -> + Settings.caseStudysToShow = [ + { + url:"http://www.sharelatex.com/i/university/indiana", + domains: ["sharelatex.com", 'chicargo.edu'], + title: "Indiana University Case Study", + logo:"/img/crests/logo/iu.png" + } + + ] + + caseStudy = _.filter Settings.caseStudysToShow, (caseStudy)-> + matches = _.filter caseStudy.domains, (domain)-> + email = AuthenticationController.getSessionUser(req)?.email + return email.indexOf(domain) != -1 + return matches.length > 0 + + return caseStudy?[0] or {} next() webRouter.use (req, res, next) -> diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade index 6f1d87424a..9739e54621 100644 --- a/services/web/app/views/project/list.jade +++ b/services/web/app/views/project/list.jade @@ -10,7 +10,8 @@ block content window.data = { projects: !{JSON.stringify(projects).replace(/\//g, '\\/')}, tags: !{JSON.stringify(tags).replace(/\//g, '\\/')}, - notifications: !{JSON.stringify(notifications).replace(/\//g, '\\/')} + notifications: !{JSON.stringify(notifications).replace(/\//g, '\\/')}, + caseStudy: !{JSON.stringify(caseStudyToShow())} }; window.algolia = { institutions: { diff --git a/services/web/app/views/project/list/side-bar.jade b/services/web/app/views/project/list/side-bar.jade index 1fb0e2bda9..d3eaeaaba7 100644 --- a/services/web/app/views/project/list/side-bar.jade +++ b/services/web/app/views/project/list/side-bar.jade @@ -94,7 +94,7 @@ - if (showUserDetailsArea) span(ng-controller="LeftHandMenuPromoController", ng-cloak) - .row-spaced#userProfileInformation(ng-if="hasProjects") + .row-spaced#userProfileInformation(ng-if="hasProjects && !showCaseStudy") div(ng-controller="UserProfileController") hr(ng-show="percentComplete < 100") .text-centered.user-profile(ng-show="percentComplete < 100") @@ -108,6 +108,13 @@ ng-click="openUserProfileModal()" ) #{translate("complete")} + .row-spaced(ng-if="hasProjects && showCaseStudy", ng-cloak).text-centered + hr + a(href="{{caseStudy.url}}") + p.small read about: + p + img(src="{{caseStudy.logo}}") + a(href="{{caseStudy.url}}") {{caseStudy.title}} .row-spaced(ng-if="hasProjects && userHasNoSubscription", ng-cloak).text-centered hr diff --git a/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee b/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee index 5a96bde5c1..d5d1a2b110 100644 --- a/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee +++ b/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee @@ -6,4 +6,7 @@ define [ $scope.hasProjects = window.data.projects.length > 0 $scope.userHasNoSubscription = window.userHasNoSubscription - $scope.randomView = _.shuffle(["default", "dropbox", "github"])[0] + + $scope.showCaseStudy = window.data.caseStudy?.url? + $scope.caseStudy = window.data.caseStudy + From ef0a5801d5f111b3ed9beebec27d64b28c6ba734 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 12:17:02 +0000 Subject: [PATCH 04/41] Create a RedisWrapper, and use it for rate limiting. --- .../coffee/infrastructure/RateLimiter.coffee | 33 +- .../coffee/infrastructure/RedisWrapper.coffee | 28 + services/web/npm-shrinkwrap.json | 4311 ----------------- services/web/package.json | 1 - .../infrastructure/RateLimterTests.coffee | 91 +- 5 files changed, 98 insertions(+), 4366 deletions(-) create mode 100644 services/web/app/coffee/infrastructure/RedisWrapper.coffee delete mode 100644 services/web/npm-shrinkwrap.json diff --git a/services/web/app/coffee/infrastructure/RateLimiter.coffee b/services/web/app/coffee/infrastructure/RateLimiter.coffee index 7c84fc9db7..be96c6eda2 100644 --- a/services/web/app/coffee/infrastructure/RateLimiter.coffee +++ b/services/web/app/coffee/infrastructure/RateLimiter.coffee @@ -1,15 +1,28 @@ settings = require("settings-sharelatex") -redis = require("redis-sharelatex") -rclient = redis.createClient(settings.redis.web) -redback = require("redback").use(rclient) +RedisWrapper = require('./RedisWrapper') +rclient = RedisWrapper.client('ratelimiter') -module.exports = + +module.exports = RateLimiter = + + _buildKey: (endpoint, subject) -> + return "RateLimiter:#{endpoint}:{#{subject}}" addCount: (opts, callback = (opts, shouldProcess)->)-> - ratelimit = redback.createRateLimit(opts.endpointName) - ratelimit.addCount opts.subjectName, opts.timeInterval, (err, callCount)-> - shouldProcess = callCount < opts.throttle - callback(err, shouldProcess) - + k = RateLimiter._buildKey(opts.endpointName, opts.subjectName) + multi = rclient.multi() + multi.incr(k) + multi.get(k) + multi.expire(k, opts.timeInterval) + multi.exec (err, results)-> + console.log ">> results", results + count = results[1] + # account for the different results from `multi` when using cluster + if count instanceof Object + count = count[1] + allow = count < opts.throttle + callback err, allow + clearRateLimit: (endpointName, subject, callback) -> - rclient.del "#{endpointName}:#{subject}", callback \ No newline at end of file + k = RateLimiter._buildKey(endpointName, subject) + rclient.del k, callback diff --git a/services/web/app/coffee/infrastructure/RedisWrapper.coffee b/services/web/app/coffee/infrastructure/RedisWrapper.coffee new file mode 100644 index 0000000000..ae77918d2f --- /dev/null +++ b/services/web/app/coffee/infrastructure/RedisWrapper.coffee @@ -0,0 +1,28 @@ +Settings = require 'settings-sharelatex' +redis = require 'redis-sharelatex' +ioredis = require 'ioredis' +logger = require 'logger-sharelatex' + + +# A per-feature interface to Redis, +# looks up the feature in `settings.redis` +# and returns an appropriate client. +# Necessary because we don't want to migrate web over +# to redis-cluster all at once. + +# TODO: consider merging into `redis-sharelatex` + + +module.exports = Redis = + + # feature = 'websessions' | 'ratelimiter' | ... + client: (feature) -> + redisFeatureSettings = Settings.redis[feature] or Settings.redis.web + if redisFeatureSettings?.cluster? + logger.log {feature}, "creating redis-cluster client" + rclient = new ioredis.Cluster(redisFeatureSettings.cluster) + rclient._is_redis_cluster = true + else + logger.log {feature}, "creating redis client" + rclient = redis.createClient(redisFeatureSettings) + return rclient diff --git a/services/web/npm-shrinkwrap.json b/services/web/npm-shrinkwrap.json deleted file mode 100644 index 04fdfc0142..0000000000 --- a/services/web/npm-shrinkwrap.json +++ /dev/null @@ -1,4311 +0,0 @@ -{ - "name": "web-sharelatex", - "version": "0.1.4", - "dependencies": { - "archiver": { - "version": "0.9.0", - "from": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", - "dependencies": { - "buffer-crc32": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" - }, - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "tar-stream": { - "version": "0.3.3", - "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", - "dependencies": { - "bl": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz" - }, - "end-of-stream": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "dependencies": { - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - } - } - }, - "zip-stream": { - "version": "0.3.7", - "from": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", - "dependencies": { - "crc32-stream": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz" - }, - "debug": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", - "dependencies": { - "ms": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" - } - } - }, - "deflate-crc32-stream": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz" - } - } - }, - "lazystream": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz" - }, - "file-utils": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", - "dependencies": { - "lodash": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz" - }, - "iconv-lite": { - "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" - }, - "glob": { - "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "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" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - } - } - }, - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "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" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "findup-sync": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "dependencies": { - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - } - } - }, - "isbinaryfile": { - "version": "0.1.9", - "from": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz" - } - } - }, - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - } - } - }, - "async": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/async/-/async-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.6.2.tgz" - }, - "base64-stream": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", - "dependencies": { - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "basic-auth-connect": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" - }, - "bcrypt": { - "version": "0.8.3", - "from": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", - "dependencies": { - "bindings": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" - }, - "nan": { - "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" - } - } - }, - "body-parser": { - "version": "1.15.2", - "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", - "dependencies": { - "bytes": { - "version": "2.4.0", - "from": "bytes@2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" - }, - "content-type": { - "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" - }, - "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" - } - } - }, - "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "qs": { - "version": "6.2.0", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" - }, - "raw-body": { - "version": "2.1.7", - "from": "raw-body@~2.1.5", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", - "dependencies": { - "unpipe": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - } - } - }, - "type-is": { - "version": "1.6.13", - "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", - "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - } - } - } - } - }, - "bufferedstream": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz" - }, - "connect-redis": { - "version": "3.1.0", - "from": "connect-redis@3.1.0", - "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-3.1.0.tgz", - "dependencies": { - "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.2", - "from": "ms@0.7.2" - } - } - }, - "redis": { - "version": "2.6.3", - "from": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", - "dependencies": { - "double-ended-queue": { - "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" - }, - "redis-commands": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" - }, - "redis-parser": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz" - } - } - } - } - }, - "contentful": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", - "dependencies": { - "babel-runtime": { - "version": "6.11.6", - "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", - "dependencies": { - "core-js": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" - }, - "regenerator-runtime": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" - } - } - }, - "contentful-sdk-core": { - "version": "2.3.4", - "from": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", - "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", - "dependencies": { - "follow-redirects": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "stream-consume": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" - } - } - }, - "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" - } - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - } - } - }, - "cookie": { - "version": "0.2.4", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz" - }, - "cookie-parser": { - "version": "1.3.5", - "from": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "dependencies": { - "cookie": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - } - } - }, - "csurf": { - "version": "1.9.0", - "from": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", - "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", - "dependencies": { - "cookie": { - "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - }, - "csrf": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", - "dependencies": { - "base64-url": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz" - }, - "rndm": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz" - }, - "tsscmp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz" - }, - "uid-safe": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", - "dependencies": { - "random-bytes": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz" - } - } - } - } - }, - "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" - }, - "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" - } - } - } - } - }, - "dateformat": { - "version": "1.0.4-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz" - }, - "express": { - "version": "4.13.0", - "from": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", - "resolved": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", - "dependencies": { - "accepts": { - "version": "1.2.13", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", - "dependencies": { - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - }, - "negotiator": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" - } - } - }, - "array-flatten": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz" - }, - "content-disposition": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" - }, - "content-type": { - "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" - }, - "cookie": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@~2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" - }, - "escape-html": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" - }, - "etag": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" - }, - "finalhandler": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", - "dependencies": { - "unpipe": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - } - } - }, - "fresh": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" - }, - "merge-descriptors": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" - }, - "methods": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "parseurl": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - }, - "path-to-regexp": { - "version": "0.1.6", - "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz" - }, - "proxy-addr": { - "version": "1.0.10", - "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", - "dependencies": { - "forwarded": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" - }, - "ipaddr.js": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz" - } - } - }, - "qs": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" - }, - "range-parser": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz" - }, - "send": { - "version": "0.13.0", - "from": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", - "dependencies": { - "destroy": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" - }, - "http-errors": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "mime": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "statuses": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" - } - } - }, - "serve-static": { - "version": "1.10.3", - "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", - "dependencies": { - "escape-html": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - }, - "send": { - "version": "0.13.2", - "from": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "dependencies": { - "depd": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "destroy": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" - }, - "http-errors": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "mime": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "statuses": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" - } - } - } - } - }, - "type-is": { - "version": "1.6.13", - "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", - "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - } - } - }, - "vary": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" - }, - "utils-merge": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" - } - } - }, - "express-session": { - "version": "1.14.2", - "from": "express-session@1.14.2", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.14.2.tgz", - "dependencies": { - "cookie": { - "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "cookie-signature@1.0.6" - }, - "crc": { - "version": "3.4.1", - "from": "crc@3.4.1", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.1.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.1.0", - "from": "depd@1.1.0" - }, - "on-headers": { - "version": "1.0.1", - "from": "on-headers@1.0.1" - }, - "parseurl": { - "version": "1.3.1", - "from": "parseurl@1.3.1" - }, - "uid-safe": { - "version": "2.1.3", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", - "dependencies": { - "base64-url": { - "version": "1.3.3", - "from": "base64-url@1.3.3" - }, - "random-bytes": { - "version": "1.0.0", - "from": "random-bytes@1.0.0" - } - } - }, - "utils-merge": { - "version": "1.0.0", - "from": "utils-merge@1.0.0" - } - } - }, - "grunt": { - "version": "0.4.5", - "from": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", - "dependencies": { - "async": { - "version": "0.1.22", - "from": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" - }, - "coffee-script": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz" - }, - "colors": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" - }, - "dateformat": { - "version": "1.0.2-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz" - }, - "eventemitter2": { - "version": "0.4.14", - "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" - }, - "findup-sync": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "dependencies": { - "glob": { - "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "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" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - } - } - }, - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - } - } - }, - "glob": { - "version": "3.1.21", - "from": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "dependencies": { - "graceful-fs": { - "version": "1.2.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" - }, - "inherits": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" - } - } - }, - "hooker": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" - }, - "iconv-lite": { - "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" - }, - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "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" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "nopt": { - "version": "1.0.10", - "from": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - } - } - }, - "rimraf": { - "version": "2.2.8", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" - }, - "lodash": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" - }, - "underscore.string": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz" - }, - "which": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" - }, - "js-yaml": { - "version": "2.0.5", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "dependencies": { - "argparse": { - "version": "0.1.16", - "from": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "dependencies": { - "underscore": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" - }, - "underscore.string": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz" - } - } - }, - "esprima": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" - } - } - }, - "exit": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - }, - "getobject": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" - }, - "grunt-legacy-util": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz" - }, - "grunt-legacy-log": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", - "dependencies": { - "grunt-legacy-log-utils": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz" - }, - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - }, - "underscore.string": { - "version": "2.3.3", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz" - } - } - } - } - }, - "heapdump": { - "version": "0.3.7", - "from": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz" - }, - "http-proxy": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", - "dependencies": { - "eventemitter3": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" - }, - "requires-port": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - } - } - }, - "ioredis": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", - "dependencies": { - "bluebird": { - "version": "3.4.6", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz" - }, - "cluster-key-slot": { - "version": "1.0.8", - "from": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz" - }, - "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.2", - "from": "ms@0.7.2" - } - } - }, - "double-ended-queue": { - "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" - }, - "flexbuffer": { - "version": "0.0.6", - "from": "flexbuffer@0.0.6" - }, - "redis-commands": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" - }, - "redis-parser": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz" - } - } - }, - "jade": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", - "dependencies": { - "commander": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" - }, - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - }, - "transformers": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "dependencies": { - "promise": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "dependencies": { - "is-promise": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz" - } - } - }, - "css": { - "version": "1.0.8", - "from": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "dependencies": { - "css-parse": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz" - }, - "css-stringify": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" - } - } - }, - "uglify-js": { - "version": "2.2.5", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "dependencies": { - "source-map": { - "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "optimist": { - "version": "0.3.7", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - } - } - } - } - } - } - }, - "character-parser": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz" - }, - "monocle": { - "version": "1.1.51", - "from": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", - "resolved": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", - "dependencies": { - "readdirp": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", - "dependencies": { - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - } - } - } - } - }, - "with": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", - "dependencies": { - "uglify-js": { - "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" - }, - "yargs": { - "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "dependencies": { - "camelcase": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" - }, - "decamelize": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "window-size": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" - }, - "wordwrap": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" - } - } - } - } - } - } - }, - "constantinople": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", - "dependencies": { - "uglify-js": { - "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" - }, - "yargs": { - "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "dependencies": { - "camelcase": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" - }, - "decamelize": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "window-size": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" - }, - "wordwrap": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" - } - } - } - } - } - } - } - } - }, - "ldapjs": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", - "dependencies": { - "asn1": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "bunyan": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "dependencies": { - "mv": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "dependencies": { - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "ncp": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" - }, - "rimraf": { - "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "dependencies": { - "glob": { - "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "dependencies": { - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - } - } - }, - "safe-json-stringify": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" - } - } - }, - "dashdash": { - "version": "1.10.1", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz" - }, - "backoff": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", - "dependencies": { - "precond": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" - } - } - }, - "ldap-filter": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz" - }, - "once": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "vasync": { - "version": "1.6.3", - "from": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz", - "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz" - }, - "verror": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", - "dependencies": { - "extsprintf": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz" - } - } - }, - "dtrace-provider": { - "version": "0.6.0", - "from": "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", - "dependencies": { - "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" - } - } - } - } - }, - "lodash": { - "version": "4.14.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz" - }, - "logger-sharelatex": { - "version": "1.3.1", - "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", - "resolved": "git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", - "dependencies": { - "bunyan": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "dependencies": { - "dtrace-provider": { - "version": "0.6.0", - "from": "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", - "dependencies": { - "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" - } - } - }, - "mv": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "dependencies": { - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "ncp": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" - }, - "rimraf": { - "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "dependencies": { - "glob": { - "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "dependencies": { - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - } - } - }, - "safe-json-stringify": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" - } - } - }, - "coffee-script": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz" - }, - "raven": { - "version": "0.8.1", - "from": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", - "resolved": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", - "dependencies": { - "cookie": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" - }, - "lsmod": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz" - }, - "stack-trace": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz" - } - } - } - } - }, - "lynx": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", - "dependencies": { - "mersenne": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz" - }, - "statsd-parser": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz" - } - } - }, - "marked": { - "version": "0.3.6", - "from": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz" - }, - "method-override": { - "version": "2.3.6", - "from": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", - "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "methods": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - }, - "parseurl": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - }, - "vary": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz" - } - } - }, - "metrics-sharelatex": { - "version": "1.3.0", - "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", - "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", - "dependencies": { - "coffee-script": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" - } - } - }, - "mimelib": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", - "dependencies": { - "encoding": { - "version": "0.1.12", - "from": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "dependencies": { - "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" - } - } - }, - "addressparser": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz" - } - } - }, - "mocha": { - "version": "1.17.1", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", - "dependencies": { - "commander": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" - }, - "growl": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz" - }, - "jade": { - "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "dependencies": { - "commander": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" - }, - "mkdirp": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" - } - } - }, - "diff": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - }, - "glob": { - "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "dependencies": { - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "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" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "graceful-fs": { - "version": "2.0.3", - "from": "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" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "mongojs": { - "version": "0.18.2", - "from": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", - "resolved": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", - "dependencies": { - "thunky": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz" - }, - "readable-stream": { - "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "mongodb": { - "version": "1.4.32", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", - "dependencies": { - "bson": { - "version": "0.2.22", - "from": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", - "dependencies": { - "nan": { - "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" - } - } - }, - "kerberos": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", - "dependencies": { - "nan": { - "version": "1.6.2", - "from": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz" - } - } - }, - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - } - } - }, - "mongoose": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", - "dependencies": { - "async": { - "version": "0.9.0", - "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" - }, - "bson": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", - "dependencies": { - "bson-ext": { - "version": "0.1.13", - "from": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", - "resolved": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", - "dependencies": { - "bindings": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" - }, - "nan": { - "version": "2.0.9", - "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" - } - } - } - } - }, - "hooks-fixed": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz" - }, - "kareem": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz" - }, - "mongodb": { - "version": "2.0.34", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", - "dependencies": { - "mongodb-core": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", - "dependencies": { - "bson": { - "version": "0.4.23", - "from": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz" - }, - "kerberos": { - "version": "0.0.21", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", - "dependencies": { - "nan": { - "version": "2.3.5", - "from": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz" - } - } - } - } - }, - "readable-stream": { - "version": "1.0.31", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "mpath": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz" - }, - "mpromise": { - "version": "0.5.4", - "from": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz", - "resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz" - }, - "mquery": { - "version": "1.6.1", - "from": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", - "dependencies": { - "bluebird": { - "version": "2.9.26", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - } - } - }, - "ms": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz" - }, - "muri": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz" - }, - "regexp-clone": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz" - }, - "sliced": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz" - } - } - }, - "multer": { - "version": "0.1.8", - "from": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", - "dependencies": { - "busboy": { - "version": "0.2.13", - "from": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", - "dependencies": { - "dicer": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "dependencies": { - "streamsearch": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz" - } - } - }, - "readable-stream": { - "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - }, - "qs": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz" - }, - "type-is": { - "version": "1.5.7", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", - "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "mime-types": { - "version": "2.0.14", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "dependencies": { - "mime-db": { - "version": "1.12.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" - } - } - } - } - } - } - }, - "node-uuid": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz" - }, - "nodemailer": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", - "dependencies": { - "libmime": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", - "dependencies": { - "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" - }, - "libbase64": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" - }, - "libqp": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" - } - } - }, - "mailcomposer": { - "version": "3.3.2", - "from": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", - "dependencies": { - "buildmail": { - "version": "3.3.2", - "from": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", - "dependencies": { - "addressparser": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz" - }, - "libbase64": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" - }, - "libqp": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" - }, - "nodemailer-fetch": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" - } - } - } - } - }, - "nodemailer-direct-transport": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", - "dependencies": { - "smtp-connection": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" - } - } - }, - "nodemailer-shared": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", - "dependencies": { - "nodemailer-fetch": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" - } - } - }, - "nodemailer-smtp-pool": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", - "dependencies": { - "clone": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" - }, - "nodemailer-wellknown": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" - }, - "smtp-connection": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" - } - } - }, - "nodemailer-smtp-transport": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", - "dependencies": { - "clone": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" - }, - "nodemailer-wellknown": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" - }, - "smtp-connection": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" - } - } - } - } - }, - "nodemailer-sendgrid-transport": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", - "dependencies": { - "sendgrid": { - "version": "1.9.2", - "from": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", - "dependencies": { - "mime": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "lodash": { - "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "smtpapi": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz" - } - } - } - } - }, - "nodemailer-ses-transport": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", - "dependencies": { - "aws-sdk": { - "version": "2.4.14", - "from": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", - "dependencies": { - "sax": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz" - }, - "xml2js": { - "version": "0.4.15", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz" - }, - "xmlbuilder": { - "version": "2.6.2", - "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", - "dependencies": { - "lodash": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz" - } - } - }, - "jmespath": { - "version": "0.15.0", - "from": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" - } - } - } - } - }, - "optimist": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - } - } - }, - "passport": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", - "dependencies": { - "passport-strategy": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" - }, - "pause": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" - } - } - }, - "passport-ldapauth": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", - "dependencies": { - "passport-strategy": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" - }, - "ldapauth-fork": { - "version": "2.5.3", - "from": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", - "resolved": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", - "dependencies": { - "bcryptjs": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz" - }, - "lru-cache": { - "version": "3.2.0", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "dependencies": { - "pseudomap": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - } - } - } - } - } - } - }, - "passport-local": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "dependencies": { - "passport-strategy": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" - } - } - }, - "passport-saml": { - "version": "0.15.0", - "from": "passport-saml@", - "resolved": "https://registry.npmjs.org/passport-saml/-/passport-saml-0.15.0.tgz", - "dependencies": { - "passport-strategy": { - "version": "1.0.0", - "from": "passport-strategy@*" - }, - "q": { - "version": "1.1.2", - "from": "q@1.1.x" - }, - "xml2js": { - "version": "0.4.17", - "from": "xml2js@0.4.x", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", - "dependencies": { - "sax": { - "version": "1.2.1", - "from": "sax@>=0.6.0" - }, - "xmlbuilder": { - "version": "4.2.1", - "from": "xmlbuilder@^4.1.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz" - } - } - }, - "xml-crypto": { - "version": "0.8.4", - "from": "xml-crypto@0.8.x", - "dependencies": { - "xmldom": { - "version": "0.1.19", - "from": "xmldom@=0.1.19" - }, - "xpath.js": { - "version": "1.0.6", - "from": "xpath.js@>=0.0.3" - } - } - }, - "xmldom": { - "version": "0.1.22", - "from": "xmldom@0.1.x" - }, - "xmlbuilder": { - "version": "2.5.2", - "from": "xmlbuilder@2.5.x", - "dependencies": { - "lodash": { - "version": "3.2.0", - "from": "lodash@~3.2.0" - } - } - }, - "xml-encryption": { - "version": "0.7.4", - "from": "xml-encryption@~0.7", - "dependencies": { - "ejs": { - "version": "0.8.8", - "from": "ejs@~0.8.3" - }, - "async": { - "version": "0.2.10", - "from": "async@~0.2.7" - }, - "xpath": { - "version": "0.0.5", - "from": "xpath@0.0.5", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.5.tgz" - }, - "node-forge": { - "version": "0.2.24", - "from": "node-forge@0.2.24", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.2.24.tgz" - } - } - } - } - }, - "pg": { - "version": "6.0.3", - "from": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "resolved": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "dependencies": { - "buffer-writer": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz" - }, - "packet-reader": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz" - }, - "pg-connection-string": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz" - }, - "pg-pool": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "dependencies": { - "generic-pool": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "pg-types": { - "version": "1.11.0", - "from": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "dependencies": { - "ap": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz" - }, - "postgres-array": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz" - }, - "postgres-bytea": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" - }, - "postgres-date": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz" - }, - "postgres-interval": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "dependencies": { - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - } - } - }, - "pgpass": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "dependencies": { - "split": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "dependencies": { - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - } - } - }, - "semver": { - "version": "4.3.2", - "from": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz" - } - } - }, - "pg-hstore": { - "version": "2.3.2", - "from": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "dependencies": { - "underscore": { - "version": "1.8.3", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" - } - } - }, - "redback": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz" - }, - "redis": { - "version": "0.10.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz" - }, - "redis-sharelatex": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", - "dependencies": { - "chai": { - "version": "1.9.1", - "from": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", - "resolved": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", - "dependencies": { - "assertion-error": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz" - }, - "deep-eql": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "dependencies": { - "type-detect": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" - } - } - } - } - }, - "coffee-script": { - "version": "1.8.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", - "dependencies": { - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - } - } - }, - "grunt-contrib-coffee": { - "version": "0.11.1", - "from": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", - "dependencies": { - "coffee-script": { - "version": "1.7.1", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", - "dependencies": { - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - } - } - }, - "chalk": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "dependencies": { - "ansi-styles": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "supports-color": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - } - } - }, - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - } - } - }, - "grunt-mocha-test": { - "version": "0.12.0", - "from": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", - "dependencies": { - "hooker": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" - }, - "fs-extra": { - "version": "0.11.1", - "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", - "dependencies": { - "ncp": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "jsonfile": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz" - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "dependencies": { - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - } - } - } - } - }, - "mocha": { - "version": "1.21.4", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", - "dependencies": { - "commander": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" - }, - "growl": { - "version": "1.8.1", - "from": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" - }, - "jade": { - "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "dependencies": { - "commander": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" - }, - "mkdirp": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" - } - } - }, - "diff": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - }, - "glob": { - "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "dependencies": { - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "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" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "graceful-fs": { - "version": "2.0.3", - "from": "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" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "redis": { - "version": "0.12.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz" - }, - "redis-sentinel": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", - "dependencies": { - "redis": { - "version": "0.11.0", - "from": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz" - }, - "q": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/q/-/q-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-0.9.2.tgz" - } - } - }, - "sandboxed-module": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", - "dependencies": { - "require-like": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" - }, - "stack-trace": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" - } - } - }, - "sinon": { - "version": "1.10.3", - "from": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", - "dependencies": { - "formatio": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", - "dependencies": { - "samsam": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz" - } - } - }, - "util": { - "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "underscore": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" - } - } - }, - "request": { - "version": "2.74.0", - "from": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "dependencies": { - "aws-sign2": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "aws4": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" - }, - "bl": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "caseless": { - "version": "0.11.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - } - } - }, - "extend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "1.0.0-rc4", - "from": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", - "dependencies": { - "async": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - } - } - }, - "har-validator": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "dependencies": { - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "commander": { - "version": "2.9.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - } - } - }, - "is-my-json-valid": { - "version": "2.13.1", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "dependencies": { - "generate-function": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "dependencies": { - "is-property": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - } - } - }, - "jsonpointer": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - }, - "hawk": { - "version": "3.1.3", - "from": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "dependencies": { - "hoek": { - "version": "2.16.3", - "from": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - } - } - }, - "http-signature": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "dependencies": { - "assert-plus": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" - }, - "jsprim": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", - "dependencies": { - "extsprintf": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" - }, - "json-schema": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" - }, - "verror": { - "version": "1.3.6", - "from": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" - } - } - }, - "sshpk": { - "version": "1.9.2", - "from": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", - "dependencies": { - "asn1": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - }, - "dashdash": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" - }, - "getpass": { - "version": "0.1.6", - "from": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" - }, - "jsbn": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" - }, - "tweetnacl": { - "version": "0.13.3", - "from": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" - }, - "jodid25519": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" - }, - "ecc-jsbn": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" - } - } - } - } - }, - "is-typedarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, - "isstream": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "oauth-sign": { - "version": "0.8.2", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" - }, - "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@~0.0.4", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "tough-cookie": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" - }, - "tunnel-agent": { - "version": "0.4.3", - "from": "tunnel-agent@~0.4.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - } - } - }, - "requests": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", - "dependencies": { - "axo": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz" - }, - "eventemitter3": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz" - }, - "extendible": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz" - }, - "hang": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz" - }, - "loads": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", - "dependencies": { - "failure": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz" - }, - "one-time": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz" - }, - "xhr-response": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz" - }, - "xhr-status": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz" - } - } - }, - "xhr-send": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz" - } - } - }, - "rimraf": { - "version": "2.2.6", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz" - }, - "sanitizer": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz" - }, - "sequelize": { - "version": "3.23.6", - "from": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", - "dependencies": { - "bluebird": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" - }, - "depd": { - "version": "1.1.0", - "from": "depd@~1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "dottie": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz" - }, - "generic-pool": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" - }, - "inflection": { - "version": "1.10.0", - "from": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz" - }, - "lodash": { - "version": "4.12.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz" - }, - "moment": { - "version": "2.14.1", - "from": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz" - }, - "moment-timezone": { - "version": "0.5.5", - "from": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz" - }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "retry-as-promised": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - } - } - }, - "semver": { - "version": "5.3.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" - }, - "shimmer": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz" - }, - "terraformer-wkt-parser": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", - "dependencies": { - "terraformer": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz" - } - } - }, - "toposort-class": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" - }, - "validator": { - "version": "5.5.0", - "from": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz", - "resolved": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz" - }, - "wkx": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz" - } - } - }, - "settings-sharelatex": { - "version": "1.0.0", - "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", - "resolved": "git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", - "dependencies": { - "coffee-script": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" - } - } - }, - "sixpack-client": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz" - }, - "temp": { - "version": "0.8.3", - "from": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "dependencies": { - "os-tmpdir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" - } - } - }, - "underscore": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" - }, - "v8-profiler": { - "version": "5.6.5", - "from": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", - "resolved": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", - "dependencies": { - "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" - }, - "node-pre-gyp": { - "version": "0.6.29", - "from": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", - "dependencies": { - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "nopt": { - "version": "3.0.6", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - } - } - }, - "npmlog": { - "version": "3.1.2", - "from": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", - "dependencies": { - "are-we-there-yet": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "dependencies": { - "delegates": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - }, - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - }, - "gauge": { - "version": "2.6.0", - "from": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", - "dependencies": { - "aproba": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" - }, - "has-color": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" - }, - "has-unicode": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - }, - "signal-exit": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" - }, - "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "wide-align": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" - } - } - }, - "set-blocking": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - } - } - }, - "rc": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "dependencies": { - "deep-extend": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" - }, - "ini": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" - }, - "minimist": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "strip-json-comments": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" - } - } - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "dependencies": { - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - }, - "semver": { - "version": "5.2.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz" - }, - "tar": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "dependencies": { - "block-stream": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" - }, - "fstream": { - "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "tar-pack": { - "version": "3.1.4", - "from": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "fstream": { - "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "fstream-ignore": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - }, - "uid-number": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" - } - } - } - } - } - } - }, - "xml2js": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", - "dependencies": { - "sax": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" - } - } - } - } -} diff --git a/services/web/package.json b/services/web/package.json index cfd2379f73..38ec9aebf2 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -50,7 +50,6 @@ "passport": "^0.3.2", "passport-ldapauth": "^0.6.0", "passport-local": "^1.0.0", - "redback": "0.4.0", "redis": "0.10.1", "redis-sharelatex": "0.0.9", "request": "^2.69.0", diff --git a/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee b/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee index 21c0d96f4f..cb0bb5de09 100644 --- a/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee +++ b/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee @@ -6,7 +6,7 @@ expect = chai.expect modulePath = "../../../../app/js/infrastructure/RateLimiter.js" SandboxedModule = require('sandboxed-module') -describe "FileStoreHandler", -> +describe "RateLimiter", -> beforeEach -> @settings = @@ -15,23 +15,22 @@ describe "FileStoreHandler", -> port:"1234" host:"somewhere" password: "password" - @redbackInstance = - addCount: sinon.stub() - - @redback = - createRateLimit: sinon.stub().returns(@redbackInstance) - @redis = - createClient: -> - return auth:-> + @rclient = + incr: sinon.stub() + get: sinon.stub() + expire: sinon.stub() + exec: sinon.stub() + @rclient.multi = sinon.stub().returns(@rclient) + @RedisWrapper = + client: sinon.stub().returns(@rclient) @limiter = SandboxedModule.require modulePath, requires: "settings-sharelatex":@settings "logger-sharelatex" : @logger = {log:sinon.stub(), err:sinon.stub()} - "redis-sharelatex": @redis - "redback": use: => @redback + "./RedisWrapper": @RedisWrapper @endpointName = "compiles" - @subject = "some project id" + @subject = "some-project-id" @timeInterval = 20 @throttleLimit = 5 @@ -40,43 +39,47 @@ describe "FileStoreHandler", -> subjectName: @subject throttle: @throttleLimit timeInterval: @timeInterval + @key = "RateLimiter:#{@endpointName}:{#{@subject}}" + for redisType, resultSet of { + normal:[10, '10', 10], + cluster:[[null,10], [null,'10'], [null,10]] + } + do (redisType, resultSet) -> - describe "addCount", -> + describe "addCount with #{redisType} redis", -> - beforeEach -> - @redbackInstance.addCount.callsArgWith(2, null, 10) + beforeEach -> + @results = resultSet + @rclient.incr = sinon.stub() + @rclient.get = sinon.stub() + @rclient.expire = sinon.stub() + @rclient.exec = sinon.stub().callsArgWith(0, null, @results) - it "should use correct namespace", (done)-> - @limiter.addCount @details, => - @redback.createRateLimit.calledWith(@endpointName).should.equal true - done() + it "should use correct key", (done)-> + @limiter.addCount @details, => + @rclient.incr.calledWith(@key).should.equal true + done() - it "should only call it once", (done)-> - @limiter.addCount @details, => - @redbackInstance.addCount.callCount.should.equal 1 - done() + it "should only call it once", (done)-> + @limiter.addCount @details, => + @rclient.exec.callCount.should.equal 1 + done() - it "should use the subjectName", (done)-> - @limiter.addCount @details, => - @redbackInstance.addCount.calledWith(@details.subjectName, @details.timeInterval).should.equal true - done() + it "should return true if the count is less than throttle", (done)-> + @details.throttle = 100 + @limiter.addCount @details, (err, canProcess)=> + canProcess.should.equal true + done() - it "should return true if the count is less than throttle", (done)-> - @details.throttle = 100 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal true - done() - - it "should return true if the count is less than throttle", (done)-> - @details.throttle = 1 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal false - done() - - it "should return false if the limit is matched", (done)-> - @details.throttle = 10 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal false - done() + it "should return true if the count is less than throttle", (done)-> + @details.throttle = 1 + @limiter.addCount @details, (err, canProcess)=> + canProcess.should.equal false + done() + it "should return false if the limit is matched", (done)-> + @details.throttle = 10 + @limiter.addCount @details, (err, canProcess)=> + canProcess.should.equal false + done() From 9f787943b631104123921febf9291437d5484b5a Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 12:17:23 +0000 Subject: [PATCH 05/41] Remove stray redis imports. --- .../web/app/coffee/Features/ServerAdmin/AdminController.coffee | 2 -- .../web/app/coffee/Features/User/UserSessionsManager.coffee | 1 - services/web/app/coffee/infrastructure/Server.coffee | 1 - 3 files changed, 4 deletions(-) diff --git a/services/web/app/coffee/Features/ServerAdmin/AdminController.coffee b/services/web/app/coffee/Features/ServerAdmin/AdminController.coffee index 005f2d23d3..b813878335 100755 --- a/services/web/app/coffee/Features/ServerAdmin/AdminController.coffee +++ b/services/web/app/coffee/Features/ServerAdmin/AdminController.coffee @@ -6,8 +6,6 @@ Project = require('../../models/Project').Project DocumentUpdaterHandler = require('../DocumentUpdater/DocumentUpdaterHandler') Settings = require('settings-sharelatex') util = require('util') -redis = require("redis-sharelatex") -rclient = redis.createClient(Settings.redis.web) RecurlyWrapper = require('../Subscription/RecurlyWrapper') SubscriptionHandler = require('../Subscription/SubscriptionHandler') projectEntityHandler = require('../Project/ProjectEntityHandler') diff --git a/services/web/app/coffee/Features/User/UserSessionsManager.coffee b/services/web/app/coffee/Features/User/UserSessionsManager.coffee index 78016e8a09..2cd3b17e7f 100644 --- a/services/web/app/coffee/Features/User/UserSessionsManager.coffee +++ b/services/web/app/coffee/Features/User/UserSessionsManager.coffee @@ -1,5 +1,4 @@ Settings = require('settings-sharelatex') -redis = require('redis-sharelatex') logger = require("logger-sharelatex") Async = require('async') _ = require('underscore') diff --git a/services/web/app/coffee/infrastructure/Server.coffee b/services/web/app/coffee/infrastructure/Server.coffee index 43683bdd4e..01d431fa49 100644 --- a/services/web/app/coffee/infrastructure/Server.coffee +++ b/services/web/app/coffee/infrastructure/Server.coffee @@ -7,7 +7,6 @@ crawlerLogger = require('./CrawlerLogger') expressLocals = require('./ExpressLocals') Router = require('../router') metrics.inc("startup") -redis = require("redis-sharelatex") UserSessionsRedis = require('../Features/User/UserSessionsRedis') sessionsRedisClient = UserSessionsRedis.client() From 535e489ae541500b3458ea6f66be2a0f21324018 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 12:17:58 +0000 Subject: [PATCH 06/41] Add an example `redis.ratelimiter` config. --- services/web/config/settings.defaults.coffee | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/services/web/config/settings.defaults.coffee b/services/web/config/settings.defaults.coffee index e3b842a0d2..145da0b997 100644 --- a/services/web/config/settings.defaults.coffee +++ b/services/web/config/settings.defaults.coffee @@ -48,6 +48,16 @@ module.exports = settings = # {host: 'localhost', port: 7005} # ] + # ratelimiter: + # cluster: [ + # {host: 'localhost', port: 7000} + # {host: 'localhost', port: 7001} + # {host: 'localhost', port: 7002} + # {host: 'localhost', port: 7003} + # {host: 'localhost', port: 7004} + # {host: 'localhost', port: 7005} + # ] + api: host: "localhost" port: "6379" From 03b541fb64bd3c0d3ac7cf9bdf1b04bdf5b647c0 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 14:10:27 +0000 Subject: [PATCH 07/41] Fix small mistakes --- services/web/app/coffee/infrastructure/RateLimiter.coffee | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/services/web/app/coffee/infrastructure/RateLimiter.coffee b/services/web/app/coffee/infrastructure/RateLimiter.coffee index be96c6eda2..dd9c270794 100644 --- a/services/web/app/coffee/infrastructure/RateLimiter.coffee +++ b/services/web/app/coffee/infrastructure/RateLimiter.coffee @@ -8,14 +8,13 @@ module.exports = RateLimiter = _buildKey: (endpoint, subject) -> return "RateLimiter:#{endpoint}:{#{subject}}" - addCount: (opts, callback = (opts, shouldProcess)->)-> + addCount: (opts, callback = (err, shouldProcess)->)-> k = RateLimiter._buildKey(opts.endpointName, opts.subjectName) multi = rclient.multi() multi.incr(k) multi.get(k) multi.expire(k, opts.timeInterval) multi.exec (err, results)-> - console.log ">> results", results count = results[1] # account for the different results from `multi` when using cluster if count instanceof Object From d428f9adbc954c4b8d2251f29ff8822c07d02e02 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 14:10:51 +0000 Subject: [PATCH 08/41] Make `LoginRateLimiter` a thin wrapper around `RateLimiter` --- .../Features/Security/LoginRateLimiter.coffee | 28 +++--- .../Security/LoginRateLimiterTests.coffee | 96 +++++++++---------- 2 files changed, 59 insertions(+), 65 deletions(-) diff --git a/services/web/app/coffee/Features/Security/LoginRateLimiter.coffee b/services/web/app/coffee/Features/Security/LoginRateLimiter.coffee index a8453f9b81..20943628ed 100644 --- a/services/web/app/coffee/Features/Security/LoginRateLimiter.coffee +++ b/services/web/app/coffee/Features/Security/LoginRateLimiter.coffee @@ -1,23 +1,21 @@ -Settings = require('settings-sharelatex') -redis = require("redis-sharelatex") -rclient = redis.createClient(Settings.redis.web) +RateLimiter = require('../../infrastructure/RateLimiter') -buildKey = (k)-> - return "LoginRateLimit:#{k}" ONE_MIN = 60 ATTEMPT_LIMIT = 10 + module.exports = - processLoginRequest: (email, callback)-> - multi = rclient.multi() - multi.incr(buildKey(email)) - multi.get(buildKey(email)) - multi.expire(buildKey(email), ONE_MIN * 2) - multi.exec (err, results)-> - loginCount = results[1] - allow = loginCount <= ATTEMPT_LIMIT - callback err, allow + + processLoginRequest: (email, callback) -> + opts = + endpointName: 'login' + throttle: ATTEMPT_LIMIT + timeInterval: ONE_MIN * 2 + subjectName: email + RateLimiter.addCount opts, (err, shouldAllow) -> + callback(err, shouldAllow) recordSuccessfulLogin: (email, callback = ->)-> - rclient.del buildKey(email), callback \ No newline at end of file + RateLimiter.clearRateLimit 'login', email, callback + diff --git a/services/web/test/UnitTests/coffee/Security/LoginRateLimiterTests.coffee b/services/web/test/UnitTests/coffee/Security/LoginRateLimiterTests.coffee index 2c4dc59262..bbb4dcd675 100644 --- a/services/web/test/UnitTests/coffee/Security/LoginRateLimiterTests.coffee +++ b/services/web/test/UnitTests/coffee/Security/LoginRateLimiterTests.coffee @@ -1,78 +1,74 @@ SandboxedModule = require('sandboxed-module') sinon = require('sinon') require('chai').should() +expect = require('chai').expect modulePath = require('path').join __dirname, '../../../../app/js/Features/Security/LoginRateLimiter' -buildKey = (k)-> - return "LoginRateLimit:#{k}" describe "LoginRateLimiter", -> + beforeEach -> @email = "bob@bob.com" - @incrStub = sinon.stub() - @getStub = sinon.stub() - @execStub = sinon.stub() - @expireStub = sinon.stub() - @delStub = sinon.stub().callsArgWith(1) - - @rclient = - auth:-> - del: @delStub - multi: => - incr: @incrStub - expire: @expireStub - get: @getStub - exec: @execStub + @RateLimiter = + clearRateLimit: sinon.stub() + addCount: sinon.stub() @LoginRateLimiter = SandboxedModule.require modulePath, requires: - 'redis-sharelatex' : createClient: () => @rclient - "settings-sharelatex":{redis:{}} - + '../../infrastructure/RateLimiter': @RateLimiter + describe "processLoginRequest", -> - it "should inc the counter for login requests in redis", (done)-> - @execStub.callsArgWith(0, "null", ["",""]) - @LoginRateLimiter.processLoginRequest @email, => - @incrStub.calledWith(buildKey(@email)).should.equal true + beforeEach -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) + + it 'should call RateLimiter.addCount', (done) -> + @LoginRateLimiter.processLoginRequest @email, (err, allow) => + @RateLimiter.addCount.callCount.should.equal 1 + expect(@RateLimiter.addCount.lastCall.args[0].endpointName).to.equal 'login' + expect(@RateLimiter.addCount.lastCall.args[0].subjectName).to.equal @email done() - it "should set a expire", (done)-> - @execStub.callsArgWith(0, "null", ["",""]) - @LoginRateLimiter.processLoginRequest @email, => - @expireStub.calledWith(buildKey(@email), 60 * 2).should.equal true - done() + describe 'when login is allowed', -> - it "should return true if the count is below 10", (done)-> - @execStub.callsArgWith(0, "null", ["", 9]) - @LoginRateLimiter.processLoginRequest @email, (err, isAllowed)=> - isAllowed.should.equal true - done() + beforeEach -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) - it "should return true if the count is 10", (done)-> - @execStub.callsArgWith(0, "null", ["", 10]) - @LoginRateLimiter.processLoginRequest @email, (err, isAllowed)=> - isAllowed.should.equal true - done() + it 'should call pass allow=true', (done) -> + @LoginRateLimiter.processLoginRequest @email, (err, allow) => + expect(err).to.equal null + expect(allow).to.equal true + done() - it "should return false if the count is above 10", (done)-> - @execStub.callsArgWith(0, "null", ["", 11]) - @LoginRateLimiter.processLoginRequest @email, (err, isAllowed)=> - isAllowed.should.equal false - done() + describe 'when login is blocked', -> + beforeEach -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, false) - describe "smoke test user", -> - - it "should have a higher limit", (done)-> - done() + it 'should call pass allow=false', (done) -> + @LoginRateLimiter.processLoginRequest @email, (err, allow) => + expect(err).to.equal null + expect(allow).to.equal false + done() + describe 'when addCount produces an error', -> + beforeEach -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, new Error('woops')) + it 'should produce an error', (done) -> + @LoginRateLimiter.processLoginRequest @email, (err, allow) => + expect(err).to.not.equal null + expect(err).to.be.instanceof Error + done() describe "recordSuccessfulLogin", -> - it "should delete the user key", (done)-> + beforeEach -> + @RateLimiter.clearRateLimit = sinon.stub().callsArgWith 2, null + + it "should call clearRateLimit", (done)-> @LoginRateLimiter.recordSuccessfulLogin @email, => - @delStub.calledWith(buildKey(@email)).should.equal true - done() \ No newline at end of file + @RateLimiter.clearRateLimit.callCount.should.equal 1 + @RateLimiter.clearRateLimit.calledWith('login', @email).should.equal true + done() From 822f76a88327d4a05c7afe1f14e72280fd0c4ba9 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 15:12:22 +0000 Subject: [PATCH 09/41] Add unit tests for RedisWrapper --- .../coffee/infrastructure/RedisWrapper.coffee | 2 +- .../infrastructure/RedisWrapperTests.coffee | 66 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 services/web/test/UnitTests/coffee/infrastructure/RedisWrapperTests.coffee diff --git a/services/web/app/coffee/infrastructure/RedisWrapper.coffee b/services/web/app/coffee/infrastructure/RedisWrapper.coffee index ae77918d2f..5d8b5836b5 100644 --- a/services/web/app/coffee/infrastructure/RedisWrapper.coffee +++ b/services/web/app/coffee/infrastructure/RedisWrapper.coffee @@ -21,7 +21,7 @@ module.exports = Redis = if redisFeatureSettings?.cluster? logger.log {feature}, "creating redis-cluster client" rclient = new ioredis.Cluster(redisFeatureSettings.cluster) - rclient._is_redis_cluster = true + rclient.__is_redis_cluster = true else logger.log {feature}, "creating redis client" rclient = redis.createClient(redisFeatureSettings) diff --git a/services/web/test/UnitTests/coffee/infrastructure/RedisWrapperTests.coffee b/services/web/test/UnitTests/coffee/infrastructure/RedisWrapperTests.coffee new file mode 100644 index 0000000000..83ea202dcd --- /dev/null +++ b/services/web/test/UnitTests/coffee/infrastructure/RedisWrapperTests.coffee @@ -0,0 +1,66 @@ +assert = require("chai").assert +sinon = require('sinon') +chai = require('chai') +should = chai.should() +expect = chai.expect +modulePath = "../../../../app/js/infrastructure/RedisWrapper.js" +SandboxedModule = require('sandboxed-module') + +describe 'RedisWrapper', -> + + beforeEach -> + @featureName = 'somefeature' + @settings = + redis: + web: + port:"1234" + host:"somewhere" + password: "password" + somefeature: {} + @normalRedisInstance = + thisIsANormalRedisInstance: true + n: 1 + @clusterRedisInstance = + thisIsAClusterRedisInstance: true + n: 2 + @redis = + createClient: sinon.stub().returns(@normalRedisInstance) + @ioredis = + Cluster: sinon.stub().returns(@clusterRedisInstance) + @logger = {log: sinon.stub()} + + @RedisWrapper = SandboxedModule.require modulePath, requires: + 'logger-sharelatex': @logger + 'settings-sharelatex': @settings + 'redis-sharelatex': @redis + 'ioredis': @ioredis + + describe 'client', -> + + beforeEach -> + @call = () => + @RedisWrapper.client(@featureName) + + describe 'when feature uses cluster', -> + + beforeEach -> + @settings.redis.somefeature = + cluster: [1, 2, 3] + + it 'should return a cluster client', -> + client = @call() + expect(client).to.equal @clusterRedisInstance + expect(client.__is_redis_cluster).to.equal true + + describe 'when feature uses normal redis', -> + + beforeEach -> + @settings.redis.somefeature = + port:"1234" + host:"somewhere" + password: "password" + + it 'should return a regular redis client', -> + client = @call() + expect(client).to.equal @normalRedisInstance + expect(client.__is_redis_cluster).to.equal undefined From 5c25d15a182ffb0810f150bfe28e04fd6bf7af85 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Thu, 12 Jan 2017 09:25:18 +0000 Subject: [PATCH 10/41] WIP: try switch to rolling rate limiter --- .../coffee/infrastructure/RateLimiter.coffee | 36 ++++++++++--------- services/web/package.json | 3 +- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/services/web/app/coffee/infrastructure/RateLimiter.coffee b/services/web/app/coffee/infrastructure/RateLimiter.coffee index dd9c270794..7262890c4f 100644 --- a/services/web/app/coffee/infrastructure/RateLimiter.coffee +++ b/services/web/app/coffee/infrastructure/RateLimiter.coffee @@ -1,27 +1,29 @@ settings = require("settings-sharelatex") RedisWrapper = require('./RedisWrapper') rclient = RedisWrapper.client('ratelimiter') +RollingRateLimiter = require('rolling-rate-limiter') module.exports = RateLimiter = - _buildKey: (endpoint, subject) -> - return "RateLimiter:#{endpoint}:{#{subject}}" - addCount: (opts, callback = (err, shouldProcess)->)-> - k = RateLimiter._buildKey(opts.endpointName, opts.subjectName) - multi = rclient.multi() - multi.incr(k) - multi.get(k) - multi.expire(k, opts.timeInterval) - multi.exec (err, results)-> - count = results[1] - # account for the different results from `multi` when using cluster - if count instanceof Object - count = count[1] - allow = count < opts.throttle - callback err, allow + console.log ">> opts", opts + namespace = "RateLimit:#{opts.endpointName}:" + k = "{#{opts.subjectName}}" + limiter = RollingRateLimiter({ + redis: rclient, + namespace: namespace, + interval: opts.timeInterval * 1000, + maxInInterval: opts.throttle + }) + limiter k, (err, timeLeft, actionsLeft) -> + if err? + return callback(err) + allowed = timeLeft == 0 + console.log ">> limit", namespace, k, timeLeft, actionsLeft, ", allowed", allowed + callback(null, allowed) clearRateLimit: (endpointName, subject, callback) -> - k = RateLimiter._buildKey(endpointName, subject) - rclient.del k, callback + # same as the key which will be built by RollingRateLimiter (namespace+k) + keyName = "RateLimit:#{endpointName}:{#{subject}}" + rclient.del keyName, callback diff --git a/services/web/package.json b/services/web/package.json index 38ec9aebf2..27948d1645 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -63,7 +63,8 @@ "underscore": "1.6.0", "v8-profiler": "^5.2.3", "xml2js": "0.2.0", - "passport-saml": "^0.15.0" + "passport-saml": "^0.15.0", + "rolling-rate-limiter": "^0.1.4" }, "devDependencies": { "bunyan": "0.22.1", From 1ef1912cf85d8ded611f8dbdf82725c1213dab02 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Fri, 13 Jan 2017 15:21:05 +0000 Subject: [PATCH 11/41] Point to fork of `rolling-rate-limiter` that supports ioredis --- services/web/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/package.json b/services/web/package.json index 27948d1645..b658525760 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -64,7 +64,7 @@ "v8-profiler": "^5.2.3", "xml2js": "0.2.0", "passport-saml": "^0.15.0", - "rolling-rate-limiter": "^0.1.4" + "rolling-rate-limiter": "git+https://github.com/ShaneKilkelly/rolling-rate-limiter.git#master" }, "devDependencies": { "bunyan": "0.22.1", From 25956d4c62cda77ff0ffa3d30a52780164e36933 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Fri, 13 Jan 2017 16:04:26 +0000 Subject: [PATCH 12/41] Fix up tests --- .../coffee/infrastructure/RateLimiter.coffee | 1 - .../infrastructure/RateLimterTests.coffee | 76 ++++++++++--------- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/services/web/app/coffee/infrastructure/RateLimiter.coffee b/services/web/app/coffee/infrastructure/RateLimiter.coffee index 7262890c4f..69050939fd 100644 --- a/services/web/app/coffee/infrastructure/RateLimiter.coffee +++ b/services/web/app/coffee/infrastructure/RateLimiter.coffee @@ -7,7 +7,6 @@ RollingRateLimiter = require('rolling-rate-limiter') module.exports = RateLimiter = addCount: (opts, callback = (err, shouldProcess)->)-> - console.log ">> opts", opts namespace = "RateLimit:#{opts.endpointName}:" k = "{#{opts.subjectName}}" limiter = RollingRateLimiter({ diff --git a/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee b/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee index cb0bb5de09..06efac5d8b 100644 --- a/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee +++ b/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee @@ -24,7 +24,12 @@ describe "RateLimiter", -> @RedisWrapper = client: sinon.stub().returns(@rclient) + @limiterFn = sinon.stub() + @RollingRateLimiter = (opts) => + return @limiterFn + @limiter = SandboxedModule.require modulePath, requires: + "rolling-rate-limiter": @RollingRateLimiter "settings-sharelatex":@settings "logger-sharelatex" : @logger = {log:sinon.stub(), err:sinon.stub()} "./RedisWrapper": @RedisWrapper @@ -41,45 +46,46 @@ describe "RateLimiter", -> timeInterval: @timeInterval @key = "RateLimiter:#{@endpointName}:{#{@subject}}" - for redisType, resultSet of { - normal:[10, '10', 10], - cluster:[[null,10], [null,'10'], [null,10]] - } - do (redisType, resultSet) -> - describe "addCount with #{redisType} redis", -> - beforeEach -> - @results = resultSet - @rclient.incr = sinon.stub() - @rclient.get = sinon.stub() - @rclient.expire = sinon.stub() - @rclient.exec = sinon.stub().callsArgWith(0, null, @results) - it "should use correct key", (done)-> - @limiter.addCount @details, => - @rclient.incr.calledWith(@key).should.equal true - done() + describe 'when action is permitted', -> - it "should only call it once", (done)-> - @limiter.addCount @details, => - @rclient.exec.callCount.should.equal 1 - done() + beforeEach -> + @limiterFn = sinon.stub().callsArgWith(1, null, 0, 22) - it "should return true if the count is less than throttle", (done)-> - @details.throttle = 100 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal true - done() + it 'should not produce and error', (done) -> + @limiter.addCount {}, (err, should) -> + expect(err).to.equal null + done() - it "should return true if the count is less than throttle", (done)-> - @details.throttle = 1 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal false - done() + it 'should callback with true', (done) -> + @limiter.addCount {}, (err, should) -> + expect(should).to.equal true + done() - it "should return false if the limit is matched", (done)-> - @details.throttle = 10 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal false - done() + describe 'when action is not permitted', -> + + beforeEach -> + @limiterFn = sinon.stub().callsArgWith(1, null, 4000, 0) + + it 'should not produce and error', (done) -> + @limiter.addCount {}, (err, should) -> + expect(err).to.equal null + done() + + it 'should callback with false', (done) -> + @limiter.addCount {}, (err, should) -> + expect(should).to.equal false + done() + + describe 'when limiter produces an error', -> + + beforeEach -> + @limiterFn = sinon.stub().callsArgWith(1, new Error('woops')) + + it 'should produce and error', (done) -> + @limiter.addCount {}, (err, should) -> + expect(err).to.not.equal null + expect(err).to.be.instanceof Error + done() From 635b935acc7e7e3bbbf5abff6dbc99bfe9cf5d98 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 16 Jan 2017 11:46:59 +0000 Subject: [PATCH 13/41] Add an acceptance test for login rate limits, cleanup --- .../coffee/infrastructure/RateLimiter.coffee | 1 - .../coffee/RegistrationTests.coffee | 37 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/services/web/app/coffee/infrastructure/RateLimiter.coffee b/services/web/app/coffee/infrastructure/RateLimiter.coffee index 69050939fd..c749fa7e83 100644 --- a/services/web/app/coffee/infrastructure/RateLimiter.coffee +++ b/services/web/app/coffee/infrastructure/RateLimiter.coffee @@ -19,7 +19,6 @@ module.exports = RateLimiter = if err? return callback(err) allowed = timeLeft == 0 - console.log ">> limit", namespace, k, timeLeft, actionsLeft, ", allowed", allowed callback(null, allowed) clearRateLimit: (endpointName, subject, callback) -> diff --git a/services/web/test/acceptance/coffee/RegistrationTests.coffee b/services/web/test/acceptance/coffee/RegistrationTests.coffee index 2bf96f86de..20ea0a31b1 100644 --- a/services/web/test/acceptance/coffee/RegistrationTests.coffee +++ b/services/web/test/acceptance/coffee/RegistrationTests.coffee @@ -1,9 +1,11 @@ expect = require("chai").expect +assert = require("chai").assert async = require("async") User = require "./helpers/User" request = require "./helpers/request" settings = require "settings-sharelatex" redis = require "./helpers/redis" +_ = require 'lodash' @@ -32,6 +34,41 @@ tryLoginThroughRegistrationForm = (user, email, password, callback=(err, respons }, callback +describe "LoginRateLimit", -> + + before -> + @user = new User() + @badEmail = 'bademail@example.com' + @badPassword = 'badpassword' + + it 'should rate limit login attempts after 10 within two minutes', (done) -> + @user.request.get '/login', (err, res, body) => + async.timesSeries( + 15 + , (n, cb) => + @user.getCsrfToken (error) => + return cb(error) if error? + @user.request.post { + url: "/login" + json: + email: @badEmail + password: @badPassword + }, (err, response, body) => + cb(null, body?.message?.text) + , (err, results) => + # ten incorrect-credentials messages, then five rate-limit messages + expect(results.length).to.equal 15 + assert.deepEqual( + results, + _.concat( + _.fill([1..10], 'Your email or password is incorrect. Please try again'), + _.fill([1..5], 'This account has had too many login requests. Please wait 2 minutes before trying to log in again') + ) + ) + done() + ) + + describe "LoginViaRegistration", -> before (done) -> From e0f3593bffc3d6d51bece67b6a9c07ed0b6d1acd Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 18 Jan 2017 15:38:18 +0000 Subject: [PATCH 14/41] Add autoprefixer to Grunt tasks. --- services/web/Gruntfile.coffee | 14 +++++++++++--- services/web/package.json | 9 ++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/services/web/Gruntfile.coffee b/services/web/Gruntfile.coffee index 2444c8cb0d..7ae6cba36c 100644 --- a/services/web/Gruntfile.coffee +++ b/services/web/Gruntfile.coffee @@ -1,5 +1,6 @@ fs = require "fs" PackageVersions = require "./app/coffee/infrastructure/PackageVersions" +require('es6-promise').polyfill() module.exports = (grunt) -> grunt.loadNpmTasks 'grunt-contrib-coffee' @@ -18,6 +19,7 @@ module.exports = (grunt) -> grunt.loadNpmTasks 'grunt-contrib-watch' grunt.loadNpmTasks 'grunt-parallel' grunt.loadNpmTasks 'grunt-exec' + grunt.loadNpmTasks 'grunt-postcss' # grunt.loadNpmTasks 'grunt-contrib-imagemin' # grunt.loadNpmTasks 'grunt-sprity' @@ -136,8 +138,14 @@ module.exports = (grunt) -> files: "public/stylesheets/style.css": "public/stylesheets/style.less" - - + postcss: + options: + map: true, + processors: [ + require('autoprefixer')({browsers: [ 'last 2 versions', 'ie >= 10' ]}) + ] + dist: + src: 'public/stylesheets/style.css' env: run: @@ -366,7 +374,7 @@ module.exports = (grunt) -> 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'] + grunt.registerTask 'compile:css', 'Compile the less files to css', ['less', 'postcss:dist'] grunt.registerTask 'compile:minify', 'Concat and minify the client side js', ['requirejs', "file_append", "exec:cssmin",] 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'] diff --git a/services/web/package.json b/services/web/package.json index cfd2379f73..cd1d43c455 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -67,10 +67,12 @@ "passport-saml": "^0.15.0" }, "devDependencies": { + "autoprefixer": "^6.6.1", "bunyan": "0.22.1", - "translations-sharelatex": "git+https://github.com/sharelatex/translations-sharelatex.git#master", "chai": "", "chai-spies": "", + "clean-css": "^3.4.18", + "es6-promise": "^4.0.5", "grunt-available-tasks": "0.4.1", "grunt-bunyan": "0.5.0", "grunt-contrib-clean": "0.5.0", @@ -79,7 +81,6 @@ "grunt-contrib-requirejs": "0.4.1", "grunt-contrib-watch": "^1.0.0", "grunt-env": "0.4.4", - "clean-css": "^3.4.18", "grunt-exec": "^0.4.7", "grunt-execute": "^0.2.2", "grunt-file-append": "0.0.6", @@ -87,9 +88,11 @@ "grunt-mocha-test": "0.9.0", "grunt-newer": "^1.2.0", "grunt-parallel": "^0.5.1", + "grunt-postcss": "^0.8.0", "grunt-sed": "^0.1.1", "sandboxed-module": "0.2.0", "sinon": "", - "timekeeper": "" + "timekeeper": "", + "translations-sharelatex": "git+https://github.com/sharelatex/translations-sharelatex.git#master" } } From 5489514d7a7ae410229550c179fc6bc1f1dfd3ed Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 18 Jan 2017 15:38:34 +0000 Subject: [PATCH 15/41] Add some compatibility style rules for IE10. --- .../web/app/views/project/editor/review-panel.jade | 1 + .../public/stylesheets/app/editor/review-panel.less | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 0419884502..ccb5cb035f 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -1,6 +1,7 @@ #review-panel .review-panel-toolbar resolved-comments-dropdown( + class="rp-flex-block" entries="reviewPanel.resolvedComments" threads="reviewPanel.commentThreads" resolved-ids="reviewPanel.resolvedThreadIds" diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 54142f2dcc..5de21f913a 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -32,6 +32,7 @@ .rp-button() { + display: block; // IE doesn't do flex with inline items. background-color: @rp-highlight-blue; color: #FFF; text-align: center; @@ -119,6 +120,7 @@ .rp-size-expanded & { display: flex; align-items: center; + justify-content: space-around; padding: 0 5px; } // .rp-state-current-file & { @@ -592,6 +594,7 @@ z-index: 2; } .rp-nav-item { + display: block; color: lighten(@rp-type-blue, 25%); flex: 0 0 50%; border-top: solid 3px transparent; @@ -813,7 +816,8 @@ } } .resolved-comments-scroller { - flex: 0 0 100%; + flex: 0 0 auto; // Can't use 100% in the flex-basis key here, IE won't account for padding. + width: 100%; // We need to set the width explicitly, as flex-basis won't work. padding: 5px; overflow-y: auto; } @@ -865,3 +869,10 @@ display: block; } } + +// Helper class for elements which aren't treated as flex-items by IE10, e.g: +// * inline items; +// * unknown elements (elements which aren't standard DOM elements, such as custom element directives) +.rp-flex-block { + display: block; +} From 3b9a599276ed5adf00e63ee5a4935be772c9eed3 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 11:57:49 +0000 Subject: [PATCH 16/41] Fix entries z-index issues on IE10. --- .../public/stylesheets/app/editor/review-panel.less | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 5de21f913a..0d167a1b3e 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -123,12 +123,8 @@ justify-content: space-around; padding: 0 5px; } - // .rp-state-current-file & { - // position: absolute; - // top: 0; - // left: 0; - // right: 0; - // } + + position: relative; height: @rp-toolbar-height; border-bottom: 1px solid @rp-border-grey; background-color: @rp-bg-dim-blue; @@ -793,7 +789,7 @@ position: absolute; width: 300px; left: -150px; - max-height: 90%; + max-height: ~"calc(100vh - 100px)"; margin-top: @rp-entry-arrow-width * 1.5; margin-left: 1em; background-color: @rp-bg-blue; From 76ea469970c068147da6ec7579a58b93c1d28009 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 12:12:34 +0000 Subject: [PATCH 17/41] Reposition the track-changes indicator element to avoid issues with IE positioning. --- services/web/app/views/project/editor/editor.jade | 9 --------- services/web/app/views/project/editor/review-panel.jade | 8 ++++++++ .../web/public/stylesheets/app/editor/review-panel.less | 1 + 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index e02b9ec3d0..bcb778fda4 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -59,15 +59,6 @@ div.full-size( renderer-data="reviewPanel.rendererData" ) - a.rp-track-changes-indicator( - href - ng-if="editor.wantTrackChanges" - ng-click="toggleReviewPanel();" - ng-class="{ 'rp-track-changes-indicator-on-dark' : darkTheme }" - ) Track changes is - strong on - - include ./review-panel .ui-layout-east diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index ccb5cb035f..cdd99612da 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -1,4 +1,12 @@ #review-panel + a.rp-track-changes-indicator( + href + ng-if="editor.wantTrackChanges" + ng-click="toggleReviewPanel();" + ng-class="{ 'rp-track-changes-indicator-on-dark' : darkTheme }" + ) Track changes is + strong on + .review-panel-toolbar resolved-comments-dropdown( class="rp-flex-block" diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 0d167a1b3e..d66c7b8f7c 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -841,6 +841,7 @@ border-bottom-left-radius: 3px; font-size: 10px; z-index: 2; + white-space: nowrap; &.rp-track-changes-indicator-on-dark { background-color: rgba(88, 88, 88, .8); From cd975c6190859d56df7bb588dd0d9a6c703f9153 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 15:43:26 +0000 Subject: [PATCH 18/41] Make resolved comments dropdown scrollable in IE. --- services/web/public/stylesheets/app/editor/review-panel.less | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index d66c7b8f7c..97d93e8b9f 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -814,6 +814,7 @@ .resolved-comments-scroller { flex: 0 0 auto; // Can't use 100% in the flex-basis key here, IE won't account for padding. width: 100%; // We need to set the width explicitly, as flex-basis won't work. + max-height: ~"calc(100vh - 100px)"; // We also need to explicitly set the max-height, IE won't compute the flex-determined height. padding: 5px; overflow-y: auto; } From a4ca7e2ca99149c358e8db27fce9982a332aea6b Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 16:54:34 +0000 Subject: [PATCH 19/41] Fix padding in the review panel toolbar for IE. --- services/web/public/stylesheets/app/editor/review-panel.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 97d93e8b9f..2b933afdbe 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -120,7 +120,7 @@ .rp-size-expanded & { display: flex; align-items: center; - justify-content: space-around; + justify-content: space-between; padding: 0 5px; } From 1970ab4e63fd9c9431d77135f487461d22fcf0c1 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 16:55:21 +0000 Subject: [PATCH 20/41] Ensure that the change text fits the entry UI in IE. --- services/web/public/stylesheets/app/editor/review-panel.less | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 2b933afdbe..0696a8640c 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -336,6 +336,9 @@ .rp-entry-details { line-height: 1.4; margin-left: 5px; + // We need to set any low-enough flex base size (0px), making it growable (1) and non-shrinkable (0). + // This is needed to ensure that IE makes the element fill the available space. + flex: 1 0 0px; .rp-state-overview & { margin-left: 0; From 73c1016f4a89d8304af1fbb91a4a8b5ebd5aacd7 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 16:58:16 +0000 Subject: [PATCH 21/41] Avoid using 0px, because minifiers might convert the value to 0, which will still cause issues on IE. --- services/web/public/stylesheets/app/editor/review-panel.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 0696a8640c..5fba75c032 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -338,7 +338,7 @@ margin-left: 5px; // We need to set any low-enough flex base size (0px), making it growable (1) and non-shrinkable (0). // This is needed to ensure that IE makes the element fill the available space. - flex: 1 0 0px; + flex: 1 0 1px; .rp-state-overview & { margin-left: 0; From 1de8b3bce7886f3904239de1212a4de4090e9631 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Tue, 24 Jan 2017 15:19:48 +0000 Subject: [PATCH 22/41] Disable text selection with right click on file tree. --- services/web/public/stylesheets/app/editor/file-tree.less | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/web/public/stylesheets/app/editor/file-tree.less b/services/web/public/stylesheets/app/editor/file-tree.less index 5a4d7feed1..7847822bf9 100644 --- a/services/web/public/stylesheets/app/editor/file-tree.less +++ b/services/web/public/stylesheets/app/editor/file-tree.less @@ -35,6 +35,10 @@ aside#file-tree { line-height: 2.6; position: relative; + .entity { + user-select: none; + } + .entity-name { color: @gray-darker; cursor: pointer; From f9ba7392e9e1fe8809d85f6c5c4894145432113b Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 24 Jan 2017 16:18:49 +0100 Subject: [PATCH 23/41] Allow editing/deleting of comments and threads --- .../Features/Chat/ChatApiHandler.coffee | 23 +++++- .../Comments/CommentsController.coffee | 28 +++++++ .../DocumentUpdaterHandler.coffee | 16 ++++ services/web/app/coffee/router.coffee | 3 + .../views/project/editor/review-panel.jade | 58 ++++++++++---- .../ide/review-panel/RangesTracker.coffee | 1 - .../controllers/ReviewPanelController.coffee | 65 ++++++++++++++-- .../directives/commentEntry.coffee | 33 +++++++- .../resolvedCommentsDropdown.coffee | 5 +- .../stylesheets/app/editor/review-panel.less | 10 +-- .../Comments/CommentsControllerTests.coffee | 75 +++++++++++++++++++ .../DocumentUpdaterHandlerTests.coffee | 35 +++++++++ 12 files changed, 318 insertions(+), 34 deletions(-) diff --git a/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee b/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee index aa4b75ce11..3cae19b7f3 100644 --- a/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee +++ b/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee @@ -58,4 +58,25 @@ module.exports = ChatApiHandler = ChatApiHandler._apiRequest { url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/reopen" method: "POST" - }, callback \ No newline at end of file + }, callback + + deleteThread: (project_id, thread_id, callback = (error) ->) -> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}" + method: "DELETE" + }, callback + + editMessage: (project_id, thread_id, message_id, content, callback = (error) ->) -> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/messages/#{message_id}/edit" + method: "POST" + json: + content: content + }, callback + + deleteMessage: (project_id, thread_id, message_id, callback = (error) ->) -> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/messages/#{message_id}" + method: "DELETE" + }, callback + \ No newline at end of file diff --git a/services/web/app/coffee/Features/Comments/CommentsController.coffee b/services/web/app/coffee/Features/Comments/CommentsController.coffee index ee9b8b9f84..bda006eb8f 100644 --- a/services/web/app/coffee/Features/Comments/CommentsController.coffee +++ b/services/web/app/coffee/Features/Comments/CommentsController.coffee @@ -4,6 +4,7 @@ logger = require("logger-sharelatex") AuthenticationController = require('../Authentication/AuthenticationController') UserInfoManager = require('../User/UserInfoManager') UserInfoController = require('../User/UserInfoController') +DocumentUpdaterHandler = require "../DocumentUpdater/DocumentUpdaterHandler" async = require "async" module.exports = CommentsController = @@ -50,6 +51,33 @@ module.exports = CommentsController = return next(err) if err? EditorRealTimeController.emitToRoom project_id, "reopen-thread", thread_id, (err)-> res.send 204 + + deleteThread: (req, res, next) -> + {project_id, doc_id, thread_id} = req.params + logger.log {project_id, doc_id, thread_id}, "deleting comment thread" + DocumentUpdaterHandler.deleteThread project_id, doc_id, thread_id, (err) -> + return next(err) if err? + ChatApiHandler.deleteThread project_id, thread_id, (err, threads) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "delete-thread", thread_id, (err)-> + res.send 204 + + editMessage: (req, res, next) -> + {project_id, thread_id, message_id} = req.params + {content} = req.body + logger.log {project_id, thread_id, message_id}, "editing message thread" + ChatApiHandler.editMessage project_id, thread_id, message_id, content, (err) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "edit-message", thread_id, message_id, content, (err)-> + res.send 204 + + deleteMessage: (req, res, next) -> + {project_id, thread_id, message_id} = req.params + logger.log {project_id, thread_id, message_id}, "deleting message" + ChatApiHandler.deleteMessage project_id, thread_id, message_id, (err, threads) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "delete-message", thread_id, message_id, (err)-> + res.send 204 _injectUserInfoIntoThreads: (threads, callback = (error, threads) ->) -> userCache = {} diff --git a/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee b/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee index bb4922704f..5c15735410 100644 --- a/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee +++ b/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee @@ -153,6 +153,22 @@ module.exports = DocumentUpdaterHandler = logger.error {project_id, doc_id, change_id}, "doc updater returned a non-success status code: #{res.statusCode}" callback new Error("doc updater returned a non-success status code: #{res.statusCode}") + deleteThread: (project_id, doc_id, thread_id, callback = (error) ->) -> + timer = new metrics.Timer("delete-thread") + url = "#{settings.apis.documentupdater.url}/project/#{project_id}/doc/#{doc_id}/comment/#{thread_id}" + logger.log {project_id, doc_id, thread_id}, "deleting comment range in document updater" + request.del url, (error, res, body)-> + timer.done() + if error? + logger.error {err:error, project_id, doc_id, thread_id}, "error deleting comment range in doc updater" + return callback(error) + if res.statusCode >= 200 and res.statusCode < 300 + logger.log {project_id, doc_id, thread_id}, "deleted comment rangee in document updater" + return callback(null) + else + logger.error {project_id, doc_id, thread_id}, "doc updater returned a non-success status code: #{res.statusCode}" + callback new Error("doc updater returned a non-success status code: #{res.statusCode}") + PENDINGUPDATESKEY = "PendingUpdates" DOCLINESKEY = "doclines" DOCIDSWITHPENDINGUPDATES = "DocsWithPendingUpdates" diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index a9105a1d46..62d5ec0865 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -238,6 +238,9 @@ module.exports = class Router webRouter.get "/project/:project_id/threads", AuthorizationMiddlewear.ensureUserCanReadProject, CommentsController.getThreads webRouter.post "/project/:project_id/thread/:thread_id/resolve", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.resolveThread webRouter.post "/project/:project_id/thread/:thread_id/reopen", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.reopenThread + webRouter.delete "/project/:project_id/doc/:doc_id/thread/:thread_id", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.deleteThread + webRouter.post "/project/:project_id/thread/:thread_id/messages/:message_id/edit", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.editMessage + webRouter.delete "/project/:project_id/thread/:thread_id/messages/:message_id", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.deleteMessage webRouter.post "/project/:Project_id/references/index", AuthorizationMiddlewear.ensureUserCanReadProject, ReferencesController.index webRouter.post "/project/:Project_id/references/indexAll", AuthorizationMiddlewear.ensureUserCanReadProject, ReferencesController.indexAll diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 0419884502..98aeefee97 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -7,7 +7,7 @@ docs="docs" on-open="refreshResolvedCommentsDropdown();" on-unresolve="unresolveComment(threadId);" - on-delete="deleteComment(entryId, threadId);" + on-delete="deleteThread(entryId, docId, threadId);" is-loading="reviewPanel.dropdown.loading" permissions="permissions" ) @@ -51,6 +51,8 @@ on-resolve="resolveComment(entry, entry_id)" on-reply="submitReply(entry, entry_id);" on-indicator-click="toggleReviewPanel();" + on-save-edit="saveEdit(entry.thread_id, comment)" + on-delete="deleteComment(entry.thread_id, comment)" permissions="permissions" ng-if="!reviewPanel.loadingThreads" ) @@ -94,6 +96,8 @@ entry="entry" threads="reviewPanel.commentThreads" on-reply="submitReply(entry, entry_id);" + on-save-edit="saveEdit(entry.thread_id, comment)" + on-delete="deleteComment(entry.thread_id, comment)" on-indicator-click="toggleReviewPanel();" ng-click="gotoEntry(doc.doc.id, entry)" permissions="permissions" @@ -175,18 +179,42 @@ script(type='text/ng-template', id='commentEntryTemplate') .rp-entry.rp-entry-comment( ng-class="{ 'rp-entry-focused': entry.focused, 'rp-entry-comment-resolving': state.animating }" ) + + .rp-loading(ng-if="!threads[entry.thread_id] || threads[entry.thread_id].messages.length == 0") + | No comments div .rp-comment( ng-repeat="comment in threads[entry.thread_id].messages track by comment.id" ) - p.rp-comment-content - span.rp-entry-user( - style="color: hsl({{ comment.user.hue }}, 70%, 40%);" - ) {{ comment.user.name }}:  - | {{ comment.content }} - .rp-entry-metadata - | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} - .rp-loading(ng-if="!threads[entry.thread_id] || threads[entry.thread_id].submitting") + p.rp-comment-content + span(ng-if="!comment.editing") + span.rp-entry-user( + style="color: hsl({{ comment.user.hue }}, 70%, 40%);", + ) {{ comment.user.name }}:  + | {{ comment.content }} + textarea.rp-comment-input( + ng-if="comment.editing" + ng-model="comment.content" + ng-keypress="saveEditOnEnter($event, comment);" + ng-blur="saveEdit(comment)" + autofocus + stop-propagation="click" + ) + .rp-entry-metadata(ng-if="!comment.editing") + span(ng-if="!comment.deleting") {{ comment.timestamp | date : 'MMM d, y h:mm a' }} + span.rp-comment-actions(ng-if="comment.user.isSelf && !comment.deleting") + |  •  + a(href, ng-click="startEditing(comment)") Edit + |  •  + a(href, ng-click="confirmDelete(comment)") Delete + span.rp-confim-delete(ng-if="comment.user.isSelf && comment.deleting") + | Are you sure? + | •  + a(href, ng-click="doDelete(comment)") Delete + |  •  + a(href, ng-click="cancelDelete(comment)") Cancel + + .rp-loading(ng-if="threads[entry.thread_id].submitting") i.fa.fa-spinner.fa-spin .rp-comment-reply(ng-if="permissions.comment") textarea.rp-comment-input( @@ -249,11 +277,11 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') ng-click="onUnresolve({ 'threadId': thread.threadId });" ) |  Re-open - //- a.rp-entry-button( - //- href - //- ng-click="onDelete({ 'entryId': thread.entryId, 'threadId': thread.threadId });" - //- ) - //- |  Delete + a.rp-entry-button( + href + ng-click="onDelete({ 'entryId': thread.entryId, 'docId': thread.docId, 'threadId': thread.threadId });" + ) + |  Delete script(type='text/ng-template', id='addCommentEntryTemplate') @@ -324,7 +352,7 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') ng-repeat="thread in resolvedComments | orderBy:'resolved_at':true" thread="thread" on-unresolve="handleUnresolve(threadId);" - on-delete="handleDelete(entryId, threadId);" + on-delete="handleDelete(entryId, docId, threadId);" permissions="permissions" ) .rp-loading(ng-if="!resolvedComments.length") diff --git a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee index 7a679bb6e3..e31b84f051 100644 --- a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -105,7 +105,6 @@ load = (EventEmitter) -> throw new Error("unknown op type") addComment: (op, metadata) -> - # TODO: Don't allow overlapping comments? @comments.push comment = { id: op.t or @newId() op: # Copy because we'll modify in place diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 723afdc648..5dc2cd3715 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -65,6 +65,14 @@ define [ ide.socket.on "reopen-thread", (thread_id) -> _onCommentReopened(thread_id) + + ide.socket.on "edit-message", (thread_id, message_id, content) -> + _onCommentEdited(thread_id, message_id, content) + $scope.$apply () -> + + ide.socket.on "delete-message", (thread_id, message_id) -> + _onCommentDeleted(thread_id, message_id) + $scope.$apply () -> rangesTrackers = {} @@ -342,7 +350,8 @@ define [ event_tracking.sendMB "rp-comment-reopen" _onCommentResolved = (thread_id, user) -> - thread = $scope.reviewPanel.commentThreads[thread_id] + thread = getThread(thread_id) + return if !thread? thread.resolved = true thread.resolved_by_user = formatUser(user) thread.resolved_at = new Date() @@ -350,23 +359,63 @@ define [ $scope.$broadcast "comment:resolve_thread", thread_id _onCommentReopened = (thread_id) -> - thread = $scope.reviewPanel.commentThreads[thread_id] + thread = getThread(thread_id) + return if !thread? delete thread.resolved delete thread.resolved_by_user delete thread.resolved_at delete $scope.reviewPanel.resolvedThreadIds[thread_id] $scope.$broadcast "comment:unresolve_thread", thread_id - _onCommentDeleted = (thread_id) -> - if $scope.reviewPanel.resolvedThreadIds[thread_id]? - delete $scope.reviewPanel.resolvedThreadIds[thread_id] - + _onThreadDeleted = (thread_id) -> + delete $scope.reviewPanel.resolvedThreadIds[thread_id] delete $scope.reviewPanel.commentThreads[thread_id] - $scope.deleteComment = (entry_id, thread_id) -> - _onCommentDeleted(thread_id) + _onCommentEdited = (thread_id, comment_id, content) -> + thread = getThread(thread_id) + return if !thread? + for message in thread.messages + if message.id == comment_id + message.content = content + updateEntries() + + _onCommentDeleted = (thread_id, comment_id) -> + thread = getThread(thread_id) + return if !thread? + thread.messages = thread.messages.filter (m) -> m.id != comment_id + updateEntries() + + $scope.deleteThread = (entry_id, doc_id, thread_id) -> + _onThreadDeleted(thread_id) + $http({ + method: "DELETE" + url: "/project/#{$scope.project_id}/doc/#{doc_id}/thread/#{thread_id}", + headers: { + 'X-CSRF-Token': window.csrfToken + } + }) $scope.$broadcast "comment:remove", entry_id event_tracking.sendMB "rp-comment-delete" + + $scope.saveEdit = (thread_id, comment) -> + $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages/#{comment.id}/edit", { + content: comment.content + _csrf: window.csrfToken + }) + $timeout () -> + $scope.$broadcast "review-panel:layout" + + $scope.deleteComment = (thread_id, comment) -> + _onCommentDeleted(thread_id, comment.id) + $http({ + method: "DELETE" + url: "/project/#{$scope.project_id}/thread/#{thread_id}/messages/#{comment.id}", + headers: { + 'X-CSRF-Token': window.csrfToken + } + }) + $timeout () -> + $scope.$broadcast "review-panel:layout" $scope.setSubView = (subView) -> $scope.reviewPanel.subView = subView diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee index db54574d27..7c7811d553 100644 --- a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -11,6 +11,8 @@ define [ onResolve: "&" onReply: "&" onIndicatorClick: "&" + onSaveEdit: "&" + onDelete: "&" link: (scope, element, attrs) -> scope.state = animating: false @@ -26,4 +28,33 @@ define [ scope.state.animating = true element.find(".rp-entry").css("top", 0) $timeout((() -> scope.onResolve()), 350) - return true \ No newline at end of file + return true + + scope.startEditing = (comment) -> + comment.editing = true + setTimeout () -> + scope.$emit "review-panel:layout" + + scope.saveEdit = (comment) -> + comment.editing = false + scope.onSaveEdit({comment:comment}) + + scope.confirmDelete = (comment) -> + comment.deleting = true + setTimeout () -> + scope.$emit "review-panel:layout" + + scope.cancelDelete = (comment) -> + comment.deleting = false + setTimeout () -> + scope.$emit "review-panel:layout" + + scope.doDelete = (comment) -> + comment.deleting = false + scope.onDelete({comment: comment}) + + scope.saveEditOnEnter = (ev, comment) -> + if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey + ev.preventDefault() + scope.saveEdit(comment) + \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index fa556e2939..d500d24db8 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -31,8 +31,9 @@ define [ scope.onUnresolve({ threadId }) scope.resolvedComments = scope.resolvedComments.filter (c) -> c.threadId != threadId - scope.handleDelete = (entryId, threadId) -> - scope.onDelete({ entryId, threadId }) + scope.handleDelete = (entryId, docId, threadId) -> + scope.onDelete({ entryId, docId, threadId }) + scope.resolvedComments = scope.resolvedComments.filter (c) -> c.threadId != threadId getDocNameById = (docId) -> doc = _.find(scope.docs, (doc) -> doc.doc.id == docId) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 54142f2dcc..bba679eb17 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -351,6 +351,9 @@ font-weight: @rp-semibold-weight; font-style: normal; } + .rp-comment-actions { + a { color: @rp-type-blue; } + } .rp-content-highlight { color: @rp-type-darkgrey; @@ -414,12 +417,6 @@ margin: 0; color: @rp-type-darkgrey; } - - .rp-comment-metadata { - color: @rp-type-blue; - font-size: @rp-small-font-size; - margin: 0; - } .rp-comment-resolver { color: @rp-type-blue; @@ -452,6 +449,7 @@ border: solid 1px @rp-border-grey; resize: vertical; color: @rp-type-darkgrey; + margin-top: 3px; } .rp-icon-delete { diff --git a/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee b/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee index cbc24bca1f..e55f0d04da 100644 --- a/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee @@ -23,6 +23,7 @@ describe "CommentsController", -> '../Authentication/AuthenticationController': @AuthenticationController '../User/UserInfoManager': @UserInfoManager = {} '../User/UserInfoController': @UserInfoController = {} + "../DocumentUpdater/DocumentUpdaterHandler": @DocumentUpdaterHandler = {} @req = {} @res = json: sinon.stub() @@ -134,6 +135,80 @@ describe "CommentsController", -> it "should return a success code", -> @res.send.calledWith(204).should.equal + describe "deleteThread", -> + beforeEach -> + @req.params = + project_id: @project_id = "mock-project-id" + doc_id: @doc_id = "mock-doc-id" + thread_id: @thread_id = "mock-thread-id" + @DocumentUpdaterHandler.deleteThread = sinon.stub().yields() + @ChatApiHandler.deleteThread = sinon.stub().yields() + @CommentsController.deleteThread @req, @res + + it "should ask the doc udpater to delete the thread", -> + @DocumentUpdaterHandler.deleteThread + .calledWith(@project_id, @doc_id, @thread_id) + .should.equal true + + it "should ask the chat handler to delete the thread", -> + @ChatApiHandler.deleteThread + .calledWith(@project_id, @thread_id) + .should.equal true + + it "should tell the client the thread was deleted", -> + @EditorRealTimeController.emitToRoom + .calledWith(@project_id, "delete-thread", @thread_id) + .should.equal true + + it "should return a success code", -> + @res.send.calledWith(204).should.equal + + describe "editMessage", -> + beforeEach -> + @req.params = + project_id: @project_id = "mock-project-id" + thread_id: @thread_id = "mock-thread-id" + message_id: @message_id = "mock-thread-id" + @req.body = + content: @content = "mock-content" + @ChatApiHandler.editMessage = sinon.stub().yields() + @CommentsController.editMessage @req, @res + + it "should ask the chat handler to edit the comment", -> + @ChatApiHandler.editMessage + .calledWith(@project_id, @thread_id, @message_id, @content) + .should.equal true + + it "should tell the client the comment was edited", -> + @EditorRealTimeController.emitToRoom + .calledWith(@project_id, "edit-message", @thread_id, @message_id, @content) + .should.equal true + + it "should return a success code", -> + @res.send.calledWith(204).should.equal + + describe "deleteMessage", -> + beforeEach -> + @req.params = + project_id: @project_id = "mock-project-id" + thread_id: @thread_id = "mock-thread-id" + message_id: @message_id = "mock-thread-id" + @ChatApiHandler.deleteMessage = sinon.stub().yields() + @CommentsController.deleteMessage @req, @res + + it "should ask the chat handler to deleted the message", -> + @ChatApiHandler.deleteMessage + .calledWith(@project_id, @thread_id, @message_id) + .should.equal true + + it "should tell the client the message was deleted", -> + @EditorRealTimeController.emitToRoom + .calledWith(@project_id, "delete-message", @thread_id, @message_id) + .should.equal true + + it "should return a success code", -> + @res.send.calledWith(204).should.equal + describe "_injectUserInfoIntoThreads", -> beforeEach -> @users = { diff --git a/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee b/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee index 3bde5e991a..681915abc6 100644 --- a/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee @@ -330,3 +330,38 @@ describe 'DocumentUpdaterHandler', -> @callback .calledWith(new Error("doc updater returned failure status code: 500")) .should.equal true + + describe "deleteThread", -> + beforeEach -> + @thread_id = "mock-thread-id-1" + @callback = sinon.stub() + + describe "successfully", -> + beforeEach -> + @request.del = sinon.stub().callsArgWith(1, null, {statusCode: 200}, @body) + @handler.deleteThread @project_id, @doc_id, @thread_id, @callback + + it 'should delete the thread in the document updater', -> + url = "#{@settings.apis.documentupdater.url}/project/#{@project_id}/doc/#{@doc_id}/comment/#{@thread_id}" + @request.del.calledWith(url).should.equal true + + it "should call the callback", -> + @callback.calledWith(null).should.equal true + + describe "when the document updater API returns an error", -> + beforeEach -> + @request.del = sinon.stub().callsArgWith(1, @error = new Error("something went wrong"), null, null) + @handler.deleteThread @project_id, @doc_id, @thread_id, @callback + + it "should return an error to the callback", -> + @callback.calledWith(@error).should.equal true + + describe "when the document updater returns a failure error code", -> + beforeEach -> + @request.del = sinon.stub().callsArgWith(1, null, { statusCode: 500 }, "") + @handler.deleteThread @project_id, @doc_id, @thread_id, @callback + + it "should return the callback with an error", -> + @callback + .calledWith(new Error("doc updater returned failure status code: 500")) + .should.equal true \ No newline at end of file From 798e09f0117115d2cf0eff259b8ee77d9e5db04c Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 24 Jan 2017 16:56:08 +0100 Subject: [PATCH 24/41] Don't show 'no comments' when submitting --- services/web/app/views/project/editor/review-panel.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 98aeefee97..bb50dfc024 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -180,7 +180,7 @@ script(type='text/ng-template', id='commentEntryTemplate') ng-class="{ 'rp-entry-focused': entry.focused, 'rp-entry-comment-resolving': state.animating }" ) - .rp-loading(ng-if="!threads[entry.thread_id] || threads[entry.thread_id].messages.length == 0") + .rp-loading(ng-if="!threads[entry.thread_id].submitting && (!threads[entry.thread_id] || threads[entry.thread_id].messages.length == 0)") | No comments div .rp-comment( From 13d21b881f7a17a7c4b0a986545a2d271303e9f9 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 24 Jan 2017 16:03:05 +0000 Subject: [PATCH 25/41] use new annoncments feature for case study info --- .../AnnouncementsController.coffee | 6 ++-- .../Announcements/AnnouncementsHandler.coffee | 36 +++++++++++++++---- .../infrastructure/ExpressLocals.coffee | 18 ---------- services/web/app/views/project/list.jade | 1 - .../web/app/views/project/list/side-bar.jade | 9 +---- .../left-hand-menu-promo-controller.coffee | 3 -- .../AnnouncementsHandlerTests.coffee | 36 ++++++++++++++++--- 7 files changed, 65 insertions(+), 44 deletions(-) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee index 65013eae46..aeda79b003 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee @@ -9,9 +9,9 @@ module.exports = if !settings?.apis?.analytics?.url? or !settings.apis.blog.url? return res.json [] - user_id = AuthenticationController.getLoggedInUserId(req) - logger.log {user_id}, "getting unread announcements" - AnnouncementsHandler.getUnreadAnnouncements user_id, (err, announcements)-> + user = AuthenticationController.getSessionUser(req) + logger.log {user_id:user?._id}, "getting unread announcements" + AnnouncementsHandler.getUnreadAnnouncements user, (err, announcements)-> if err? logger.err {err, user_id}, "unable to get unread announcements" next(err) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee index ce41e3b96c..1ea675fbf3 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee @@ -5,20 +5,44 @@ _ = require("lodash") logger = require("logger-sharelatex") settings = require("settings-sharelatex") -module.exports = - getUnreadAnnouncements : (user_id, callback = (err, announcements)->)-> + + +module.exports = AnnouncementsHandler = + + + + _domainSpecificAnnouncements : (email)-> + domainSpecific = _.filter settings?.domainAnnouncmentsToShow, (domainAnnouncment)-> + matches = _.filter domainAnnouncment.domains, (domain)-> + return email.indexOf(domain) != -1 + return matches.length > 0 + return domainSpecific or [] + + + getUnreadAnnouncements : (user, callback = (err, announcements)->)-> async.parallel { lastEvent: (cb)-> - AnalyticsManager.getLastOccurance user_id, "announcement-alert-dismissed", cb + AnalyticsManager.getLastOccurance user?._id, "announcement-alert-dismissed", cb announcements: (cb)-> BlogHandler.getLatestAnnouncements cb }, (err, results)-> if err? - logger.err err:err, user_id:user_id, "error getting unread announcements" + logger.err err:err, user_id:user?._id, "error getting unread announcements" return callback(err) - announcements = _.sortBy(results.announcements, "date").reverse() + domainSpecific = AnnouncementsHandler._domainSpecificAnnouncements(user?.email) + + domainSpecific = _.map domainSpecific, (domainAnnouncment)-> + try + domainAnnouncment.date = new Date(domainAnnouncment.date) + return domainAnnouncment + catch e + return callback(e) + + announcements = results.announcements + announcements = _.union announcements, domainSpecific + announcements = _.sortBy(announcements, "date").reverse() lastSeenBlogId = results?.lastEvent?.segmentation?.blogPostId @@ -35,6 +59,6 @@ module.exports = announcement.read = read return announcement - logger.log announcementsLength:announcements?.length, user_id:user_id, "returning announcements" + logger.log announcementsLength:announcements?.length, user_id:user?._id, "returning announcements" callback null, announcements diff --git a/services/web/app/coffee/infrastructure/ExpressLocals.coffee b/services/web/app/coffee/infrastructure/ExpressLocals.coffee index c0b4412d19..8124d13d93 100644 --- a/services/web/app/coffee/infrastructure/ExpressLocals.coffee +++ b/services/web/app/coffee/infrastructure/ExpressLocals.coffee @@ -190,24 +190,6 @@ module.exports = (app, webRouter, apiRouter)-> res.locals.getSessionUser = -> return AuthenticationController.getSessionUser(req) - res.locals.caseStudyToShow = -> - Settings.caseStudysToShow = [ - { - url:"http://www.sharelatex.com/i/university/indiana", - domains: ["sharelatex.com", 'chicargo.edu'], - title: "Indiana University Case Study", - logo:"/img/crests/logo/iu.png" - } - - ] - - caseStudy = _.filter Settings.caseStudysToShow, (caseStudy)-> - matches = _.filter caseStudy.domains, (domain)-> - email = AuthenticationController.getSessionUser(req)?.email - return email.indexOf(domain) != -1 - return matches.length > 0 - - return caseStudy?[0] or {} next() webRouter.use (req, res, next) -> diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade index 5d5729ad08..44fa99a5e3 100644 --- a/services/web/app/views/project/list.jade +++ b/services/web/app/views/project/list.jade @@ -11,7 +11,6 @@ block content projects: !{JSON.stringify(projects).replace(/\//g, '\\/')}, tags: !{JSON.stringify(tags).replace(/\//g, '\\/')}, notifications: !{JSON.stringify(notifications).replace(/\//g, '\\/')}, - caseStudy: !{JSON.stringify(caseStudyToShow())} }; window.algolia = { institutions: { diff --git a/services/web/app/views/project/list/side-bar.jade b/services/web/app/views/project/list/side-bar.jade index d3eaeaaba7..1fb0e2bda9 100644 --- a/services/web/app/views/project/list/side-bar.jade +++ b/services/web/app/views/project/list/side-bar.jade @@ -94,7 +94,7 @@ - if (showUserDetailsArea) span(ng-controller="LeftHandMenuPromoController", ng-cloak) - .row-spaced#userProfileInformation(ng-if="hasProjects && !showCaseStudy") + .row-spaced#userProfileInformation(ng-if="hasProjects") div(ng-controller="UserProfileController") hr(ng-show="percentComplete < 100") .text-centered.user-profile(ng-show="percentComplete < 100") @@ -108,13 +108,6 @@ ng-click="openUserProfileModal()" ) #{translate("complete")} - .row-spaced(ng-if="hasProjects && showCaseStudy", ng-cloak).text-centered - hr - a(href="{{caseStudy.url}}") - p.small read about: - p - img(src="{{caseStudy.logo}}") - a(href="{{caseStudy.url}}") {{caseStudy.title}} .row-spaced(ng-if="hasProjects && userHasNoSubscription", ng-cloak).text-centered hr diff --git a/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee b/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee index d5d1a2b110..9fdb3e9ca2 100644 --- a/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee +++ b/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee @@ -7,6 +7,3 @@ define [ $scope.hasProjects = window.data.projects.length > 0 $scope.userHasNoSubscription = window.userHasNoSubscription - $scope.showCaseStudy = window.data.caseStudy?.url? - $scope.caseStudy = window.data.caseStudy - diff --git a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee index 49e8292f97..e1d9fcc7f6 100644 --- a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee @@ -10,7 +10,9 @@ expect = require("chai").expect describe 'AnnouncementsHandler', -> beforeEach -> - @user_id = "some_id" + @user = + _id:"some_id" + email: "someone@gmail.com" @AnalyticsManager = getLastOccurance: sinon.stub() @BlogHandler = @@ -44,7 +46,7 @@ describe 'AnnouncementsHandler', -> it "should mark all announcements as read is false", (done)-> @AnalyticsManager.getLastOccurance.callsArgWith(2, null, []) - @handler.getUnreadAnnouncements @user_id, (err, announcements)=> + @handler.getUnreadAnnouncements @user, (err, announcements)=> announcements[0].read.should.equal false announcements[1].read.should.equal false announcements[2].read.should.equal false @@ -53,7 +55,7 @@ describe 'AnnouncementsHandler', -> it "should should be sorted again to ensure correct order", (done)-> @AnalyticsManager.getLastOccurance.callsArgWith(2, null, []) - @handler.getUnreadAnnouncements @user_id, (err, announcements)=> + @handler.getUnreadAnnouncements @user, (err, announcements)=> announcements[3].should.equal @stubbedAnnouncements[2] announcements[2].should.equal @stubbedAnnouncements[3] announcements[1].should.equal @stubbedAnnouncements[1] @@ -62,7 +64,7 @@ describe 'AnnouncementsHandler', -> it "should return older ones marked as read as well", (done)-> @AnalyticsManager.getLastOccurance.callsArgWith(2, null, {segmentation:{blogPostId:"/2014/04/12/title-date-irrelivant"}}) - @handler.getUnreadAnnouncements @user_id, (err, announcements)=> + @handler.getUnreadAnnouncements @user, (err, announcements)=> announcements[0].id.should.equal @stubbedAnnouncements[0].id announcements[0].read.should.equal false @@ -79,7 +81,7 @@ describe 'AnnouncementsHandler', -> it "should return all of them marked as read", (done)-> @AnalyticsManager.getLastOccurance.callsArgWith(2, null, {segmentation:{blogPostId:"/2016/11/01/introducting-latex-code-checker"}}) - @handler.getUnreadAnnouncements @user_id, (err, announcements)=> + @handler.getUnreadAnnouncements @user, (err, announcements)=> announcements[0].read.should.equal true announcements[1].read.should.equal true announcements[2].read.should.equal true @@ -87,3 +89,27 @@ describe 'AnnouncementsHandler', -> done() + describe "with custom domain announcements", -> + beforeEach -> + @stubbedDomainSpecificAnn = [ + { + domains: ["gmail.com", 'yahoo.edu'] + title: "some message" + excerpt: "read this" + url:"http://www.sharelatex.com/i/somewhere" + id:"iaaa" + date: new Date(1308369600000).toString() + } + ] + + @handler._domainSpecificAnnouncements = sinon.stub().returns(@stubbedDomainSpecificAnn) + + it "should insert the domain specific in the correct place", (done)-> + @AnalyticsManager.getLastOccurance.callsArgWith(2, null, []) + @handler.getUnreadAnnouncements @user, (err, announcements)=> + announcements[4].should.equal @stubbedAnnouncements[2] + announcements[3].should.equal @stubbedAnnouncements[3] + announcements[2].should.equal @stubbedAnnouncements[1] + announcements[1].should.equal @stubbedDomainSpecificAnn[0] + announcements[0].should.equal @stubbedAnnouncements[0] + done() From 59c40ea5cc7d79d398f55a99bace9248c18894d9 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 24 Jan 2017 17:03:32 +0100 Subject: [PATCH 26/41] Only show delete options when thread has more than one message! --- services/web/app/views/project/editor/review-panel.jade | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index bb50dfc024..b16230c24c 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -205,8 +205,9 @@ script(type='text/ng-template', id='commentEntryTemplate') span.rp-comment-actions(ng-if="comment.user.isSelf && !comment.deleting") |  •  a(href, ng-click="startEditing(comment)") Edit - |  •  - a(href, ng-click="confirmDelete(comment)") Delete + span(ng-if="threads[entry.thread_id].messages.length > 1") + |  •  + a(href, ng-click="confirmDelete(comment)") Delete span.rp-confim-delete(ng-if="comment.user.isSelf && comment.deleting") | Are you sure? | •  From 69ab275404057696ebcabb8f605116f9d2c43266 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 25 Jan 2017 09:14:21 +0000 Subject: [PATCH 27/41] Update list.jade --- services/web/app/views/project/list.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade index 44fa99a5e3..f707cd9411 100644 --- a/services/web/app/views/project/list.jade +++ b/services/web/app/views/project/list.jade @@ -10,7 +10,7 @@ block content window.data = { projects: !{JSON.stringify(projects).replace(/\//g, '\\/')}, tags: !{JSON.stringify(tags).replace(/\//g, '\\/')}, - notifications: !{JSON.stringify(notifications).replace(/\//g, '\\/')}, + notifications: !{JSON.stringify(notifications).replace(/\//g, '\\/')} }; window.algolia = { institutions: { @@ -73,4 +73,4 @@ block content .col-md-offset-2.col-md-8.col-md-offset-2.col-xs-8 include ./list/empty-project-list - include ./list/modals \ No newline at end of file + include ./list/modals From 1280a2313d177a563422c408e6613b2a5567a73a Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 25 Jan 2017 09:34:53 +0000 Subject: [PATCH 28/41] add check for id to exist in domain announcments null check user at start of getUnreadAnnouncements fix spelling mistake --- .../Announcements/AnnouncementsHandler.coffee | 15 +++--- .../AnnouncementsHandlerTests.coffee | 46 ++++++++++++++++++- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee index 1ea675fbf3..161815dc6d 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee @@ -1,9 +1,9 @@ AnalyticsManager = require("../Analytics/AnalyticsManager") BlogHandler = require("../Blog/BlogHandler") -async = require("async") -_ = require("lodash") logger = require("logger-sharelatex") settings = require("settings-sharelatex") +async = require("async") +_ = require("lodash") @@ -13,22 +13,25 @@ module.exports = AnnouncementsHandler = _domainSpecificAnnouncements : (email)-> - domainSpecific = _.filter settings?.domainAnnouncmentsToShow, (domainAnnouncment)-> + domainSpecific = _.filter settings?.domainAnnouncementsToShow, (domainAnnouncment)-> matches = _.filter domainAnnouncment.domains, (domain)-> return email.indexOf(domain) != -1 - return matches.length > 0 + return matches.length > 0 and domainAnnouncment.id? return domainSpecific or [] getUnreadAnnouncements : (user, callback = (err, announcements)->)-> + if !user? and !user._id? + return callback("user not supplied") + async.parallel { lastEvent: (cb)-> - AnalyticsManager.getLastOccurance user?._id, "announcement-alert-dismissed", cb + AnalyticsManager.getLastOccurance user._id, "announcement-alert-dismissed", cb announcements: (cb)-> BlogHandler.getLatestAnnouncements cb }, (err, results)-> if err? - logger.err err:err, user_id:user?._id, "error getting unread announcements" + logger.err err:err, user_id:user._id, "error getting unread announcements" return callback(err) domainSpecific = AnnouncementsHandler._domainSpecificAnnouncements(user?.email) diff --git a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee index e1d9fcc7f6..bd5070644e 100644 --- a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee @@ -17,13 +17,14 @@ describe 'AnnouncementsHandler', -> getLastOccurance: sinon.stub() @BlogHandler = getLatestAnnouncements:sinon.stub() + @settings = {} @handler = SandboxedModule.require modulePath, requires: "../Analytics/AnalyticsManager":@AnalyticsManager "../Blog/BlogHandler":@BlogHandler + "settings-sharelatex":@settings "logger-sharelatex": log:-> - describe "getUnreadAnnouncements", -> beforeEach -> @stubbedAnnouncements = [ @@ -113,3 +114,46 @@ describe 'AnnouncementsHandler', -> announcements[1].should.equal @stubbedDomainSpecificAnn[0] announcements[0].should.equal @stubbedAnnouncements[0] done() + + describe "_domainSpecificAnnouncements", -> + beforeEach -> + @settings.domainAnnouncementsToShow = [ + { + domains: ["gmail.com", 'yahoo.edu'] + title: "some message" + excerpt: "read this" + url:"http://www.sharelatex.com/i/somewhere" + id:"id1" + date: new Date(1308369600000).toString() + }, { + domains: ["gmail.com", 'yahoo.edu'] + title: "some message" + excerpt: "read this" + url:"http://www.sharelatex.com/i/somewhere" + date: new Date(1308369600000).toString() + }, { + domains: ["gmail.com", 'yahoo.edu'] + title: "some message" + excerpt: "read this" + url:"http://www.sharelatex.com/i/somewhere" + id:"id3" + date: new Date(1308369600000).toString() + } + ] + + it "should filter announcments which don't have an id", (done) -> + result = @handler._domainSpecificAnnouncements "someone@gmail.com" + result.length.should.equal 2 + result[0].id.should.equal "id1" + result[1].id.should.equal "id3" + done() + + + it "should match on domain", (done) -> + @settings.domainAnnouncementsToShow[2].domains = ["yahoo.com"] + result = @handler._domainSpecificAnnouncements "someone@gmail.com" + result.length.should.equal 1 + result[0].id.should.equal "id1" + done() + + From cc717f035761e62d93a1fc1137c5ee6acea08a13 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 25 Jan 2017 09:43:42 +0000 Subject: [PATCH 29/41] domainAnnouncementsToShow -> domainAnnouncements --- .../Features/Announcements/AnnouncementsHandler.coffee | 7 +------ .../coffee/Announcement/AnnouncementsHandlerTests.coffee | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee index 161815dc6d..9934a8bf69 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee @@ -5,15 +5,10 @@ settings = require("settings-sharelatex") async = require("async") _ = require("lodash") - - - module.exports = AnnouncementsHandler = - - _domainSpecificAnnouncements : (email)-> - domainSpecific = _.filter settings?.domainAnnouncementsToShow, (domainAnnouncment)-> + domainSpecific = _.filter settings?.domainAnnouncements, (domainAnnouncment)-> matches = _.filter domainAnnouncment.domains, (domain)-> return email.indexOf(domain) != -1 return matches.length > 0 and domainAnnouncment.id? diff --git a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee index bd5070644e..daa0da0531 100644 --- a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee @@ -117,7 +117,7 @@ describe 'AnnouncementsHandler', -> describe "_domainSpecificAnnouncements", -> beforeEach -> - @settings.domainAnnouncementsToShow = [ + @settings.domainAnnouncements = [ { domains: ["gmail.com", 'yahoo.edu'] title: "some message" @@ -150,7 +150,7 @@ describe 'AnnouncementsHandler', -> it "should match on domain", (done) -> - @settings.domainAnnouncementsToShow[2].domains = ["yahoo.com"] + @settings.domainAnnouncements[2].domains = ["yahoo.com"] result = @handler._domainSpecificAnnouncements "someone@gmail.com" result.length.should.equal 1 result[0].id.should.equal "id1" From f7b4e00466602f44832e60ae8b8f0884c88d636a Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 25 Jan 2017 10:30:53 +0000 Subject: [PATCH 30/41] Restore npm-shrinkwrap.json --- services/web/npm-shrinkwrap.json | 4311 ++++++++++++++++++++++++++++++ 1 file changed, 4311 insertions(+) create mode 100644 services/web/npm-shrinkwrap.json diff --git a/services/web/npm-shrinkwrap.json b/services/web/npm-shrinkwrap.json new file mode 100644 index 0000000000..04fdfc0142 --- /dev/null +++ b/services/web/npm-shrinkwrap.json @@ -0,0 +1,4311 @@ +{ + "name": "web-sharelatex", + "version": "0.1.4", + "dependencies": { + "archiver": { + "version": "0.9.0", + "from": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", + "dependencies": { + "buffer-crc32": { + "version": "0.2.5", + "from": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" + }, + "readable-stream": { + "version": "1.0.34", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "tar-stream": { + "version": "0.3.3", + "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", + "dependencies": { + "bl": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz" + }, + "end-of-stream": { + "version": "0.1.5", + "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "dependencies": { + "once": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + } + } + } + } + }, + "zip-stream": { + "version": "0.3.7", + "from": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", + "dependencies": { + "crc32-stream": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz" + }, + "debug": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", + "dependencies": { + "ms": { + "version": "0.6.2", + "from": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" + } + } + }, + "deflate-crc32-stream": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz" + } + } + }, + "lazystream": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz" + }, + "file-utils": { + "version": "0.1.5", + "from": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", + "dependencies": { + "lodash": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz" + }, + "iconv-lite": { + "version": "0.2.11", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + }, + "glob": { + "version": "3.2.11", + "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "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" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + } + } + }, + "minimatch": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "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" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "findup-sync": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "dependencies": { + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + } + } + }, + "isbinaryfile": { + "version": "0.1.9", + "from": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz" + } + } + }, + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + } + } + }, + "async": { + "version": "0.6.2", + "from": "https://registry.npmjs.org/async/-/async-0.6.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.6.2.tgz" + }, + "base64-stream": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", + "dependencies": { + "readable-stream": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "dependencies": { + "buffer-shims": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + }, + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + } + } + } + }, + "basic-auth-connect": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" + }, + "bcrypt": { + "version": "0.8.3", + "from": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", + "dependencies": { + "bindings": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + }, + "nan": { + "version": "1.8.4", + "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + } + } + }, + "body-parser": { + "version": "1.15.2", + "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", + "dependencies": { + "bytes": { + "version": "2.4.0", + "from": "bytes@2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" + }, + "content-type": { + "version": "1.0.2", + "from": "content-type@~1.0.1", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "depd": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + }, + "http-errors": { + "version": "1.5.0", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "setprototypeof": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + }, + "statuses": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + } + } + }, + "iconv-lite": { + "version": "0.4.13", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + }, + "on-finished": { + "version": "2.3.0", + "from": "on-finished@~2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "dependencies": { + "ee-first": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + } + } + }, + "qs": { + "version": "6.2.0", + "from": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" + }, + "raw-body": { + "version": "2.1.7", + "from": "raw-body@~2.1.5", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "dependencies": { + "unpipe": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + } + } + }, + "type-is": { + "version": "1.6.13", + "from": "type-is@~1.6.10", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "dependencies": { + "media-typer": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + }, + "mime-types": { + "version": "2.1.11", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "dependencies": { + "mime-db": { + "version": "1.23.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + } + } + } + } + } + } + }, + "bufferedstream": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz" + }, + "connect-redis": { + "version": "3.1.0", + "from": "connect-redis@3.1.0", + "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-3.1.0.tgz", + "dependencies": { + "debug": { + "version": "2.3.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.2", + "from": "ms@0.7.2" + } + } + }, + "redis": { + "version": "2.6.3", + "from": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", + "resolved": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", + "dependencies": { + "double-ended-queue": { + "version": "2.1.0-0", + "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", + "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + }, + "redis-commands": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + }, + "redis-parser": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz" + } + } + } + } + }, + "contentful": { + "version": "3.5.0", + "from": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", + "resolved": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", + "dependencies": { + "babel-runtime": { + "version": "6.11.6", + "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "from": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "from": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + }, + "contentful-sdk-core": { + "version": "2.3.4", + "from": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", + "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", + "dependencies": { + "follow-redirects": { + "version": "0.0.7", + "from": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "dependencies": { + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "stream-consume": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" + } + } + }, + "qs": { + "version": "6.2.1", + "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + } + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@~5.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + } + } + }, + "cookie": { + "version": "0.2.4", + "from": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz" + }, + "cookie-parser": { + "version": "1.3.5", + "from": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "dependencies": { + "cookie": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + } + } + }, + "csurf": { + "version": "1.9.0", + "from": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", + "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", + "dependencies": { + "cookie": { + "version": "0.3.1", + "from": "cookie@0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + }, + "csrf": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", + "dependencies": { + "base64-url": { + "version": "1.2.2", + "from": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz" + }, + "rndm": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz" + }, + "tsscmp": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz" + }, + "uid-safe": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", + "dependencies": { + "random-bytes": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz" + } + } + } + } + }, + "http-errors": { + "version": "1.5.0", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "setprototypeof": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + }, + "statuses": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + } + } + } + } + }, + "dateformat": { + "version": "1.0.4-1.2.3", + "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz" + }, + "express": { + "version": "4.13.0", + "from": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", + "resolved": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", + "dependencies": { + "accepts": { + "version": "1.2.13", + "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "dependencies": { + "mime-types": { + "version": "2.1.11", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "dependencies": { + "mime-db": { + "version": "1.23.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + } + } + }, + "negotiator": { + "version": "0.5.3", + "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + } + } + }, + "array-flatten": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz" + }, + "content-disposition": { + "version": "0.5.0", + "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" + }, + "content-type": { + "version": "1.0.2", + "from": "content-type@~1.0.1", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + }, + "cookie": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "debug@~2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "depd": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + }, + "escape-html": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" + }, + "etag": { + "version": "1.7.0", + "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" + }, + "finalhandler": { + "version": "0.4.0", + "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "dependencies": { + "unpipe": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + } + } + }, + "fresh": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" + }, + "merge-descriptors": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" + }, + "methods": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + }, + "on-finished": { + "version": "2.3.0", + "from": "on-finished@~2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "dependencies": { + "ee-first": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + } + } + }, + "parseurl": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + }, + "path-to-regexp": { + "version": "0.1.6", + "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz" + }, + "proxy-addr": { + "version": "1.0.10", + "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", + "dependencies": { + "forwarded": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" + }, + "ipaddr.js": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz" + } + } + }, + "qs": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" + }, + "range-parser": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz" + }, + "send": { + "version": "0.13.0", + "from": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "dependencies": { + "destroy": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" + }, + "http-errors": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "mime": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + }, + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + }, + "statuses": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + } + } + }, + "serve-static": { + "version": "1.10.3", + "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "dependencies": { + "escape-html": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + }, + "send": { + "version": "0.13.2", + "from": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "dependencies": { + "depd": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + }, + "destroy": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + }, + "http-errors": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "mime": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + }, + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + }, + "statuses": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + } + } + } + } + }, + "type-is": { + "version": "1.6.13", + "from": "type-is@~1.6.10", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "dependencies": { + "media-typer": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + }, + "mime-types": { + "version": "2.1.11", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "dependencies": { + "mime-db": { + "version": "1.23.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + } + } + } + } + }, + "vary": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" + }, + "utils-merge": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" + } + } + }, + "express-session": { + "version": "1.14.2", + "from": "express-session@1.14.2", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.14.2.tgz", + "dependencies": { + "cookie": { + "version": "0.3.1", + "from": "cookie@0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "cookie-signature@1.0.6" + }, + "crc": { + "version": "3.4.1", + "from": "crc@3.4.1", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.1.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "debug@2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "ms@0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "depd": { + "version": "1.1.0", + "from": "depd@1.1.0" + }, + "on-headers": { + "version": "1.0.1", + "from": "on-headers@1.0.1" + }, + "parseurl": { + "version": "1.3.1", + "from": "parseurl@1.3.1" + }, + "uid-safe": { + "version": "2.1.3", + "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", + "dependencies": { + "base64-url": { + "version": "1.3.3", + "from": "base64-url@1.3.3" + }, + "random-bytes": { + "version": "1.0.0", + "from": "random-bytes@1.0.0" + } + } + }, + "utils-merge": { + "version": "1.0.0", + "from": "utils-merge@1.0.0" + } + } + }, + "grunt": { + "version": "0.4.5", + "from": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "dependencies": { + "async": { + "version": "0.1.22", + "from": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" + }, + "coffee-script": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz" + }, + "colors": { + "version": "0.6.2", + "from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + }, + "dateformat": { + "version": "1.0.2-1.2.3", + "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz" + }, + "eventemitter2": { + "version": "0.4.14", + "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" + }, + "findup-sync": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "dependencies": { + "glob": { + "version": "3.2.11", + "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "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" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + } + } + }, + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + } + } + }, + "glob": { + "version": "3.1.21", + "from": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "dependencies": { + "graceful-fs": { + "version": "1.2.3", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" + }, + "inherits": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" + } + } + }, + "hooker": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + }, + "iconv-lite": { + "version": "0.2.11", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + }, + "minimatch": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "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" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "nopt": { + "version": "1.0.10", + "from": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "dependencies": { + "abbrev": { + "version": "1.0.9", + "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + } + } + }, + "rimraf": { + "version": "2.2.8", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + }, + "lodash": { + "version": "0.9.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" + }, + "underscore.string": { + "version": "2.2.1", + "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz" + }, + "which": { + "version": "1.0.9", + "from": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" + }, + "js-yaml": { + "version": "2.0.5", + "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "dependencies": { + "argparse": { + "version": "0.1.16", + "from": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "dependencies": { + "underscore": { + "version": "1.7.0", + "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + }, + "underscore.string": { + "version": "2.4.0", + "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz" + } + } + }, + "esprima": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" + } + } + }, + "exit": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + }, + "getobject": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" + }, + "grunt-legacy-util": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz" + }, + "grunt-legacy-log": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "dependencies": { + "grunt-legacy-log-utils": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz" + }, + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + }, + "underscore.string": { + "version": "2.3.3", + "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz" + } + } + } + } + }, + "heapdump": { + "version": "0.3.7", + "from": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz", + "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz" + }, + "http-proxy": { + "version": "1.14.0", + "from": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", + "dependencies": { + "eventemitter3": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" + }, + "requires-port": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + } + } + }, + "ioredis": { + "version": "2.4.0", + "from": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", + "dependencies": { + "bluebird": { + "version": "3.4.6", + "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz" + }, + "cluster-key-slot": { + "version": "1.0.8", + "from": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz" + }, + "debug": { + "version": "2.3.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.2", + "from": "ms@0.7.2" + } + } + }, + "double-ended-queue": { + "version": "2.1.0-0", + "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", + "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + }, + "flexbuffer": { + "version": "0.0.6", + "from": "flexbuffer@0.0.6" + }, + "redis-commands": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + }, + "redis-parser": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz" + } + } + }, + "jade": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", + "dependencies": { + "commander": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" + }, + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + }, + "transformers": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "dependencies": { + "promise": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", + "dependencies": { + "is-promise": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz" + } + } + }, + "css": { + "version": "1.0.8", + "from": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", + "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", + "dependencies": { + "css-parse": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz" + }, + "css-stringify": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" + } + } + }, + "uglify-js": { + "version": "2.2.5", + "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "dependencies": { + "source-map": { + "version": "0.1.43", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "optimist": { + "version": "0.3.7", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + } + } + } + } + } + } + }, + "character-parser": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz" + }, + "monocle": { + "version": "1.1.51", + "from": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", + "resolved": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", + "dependencies": { + "readdirp": { + "version": "0.2.5", + "from": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", + "dependencies": { + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + } + } + } + } + }, + "with": { + "version": "3.0.1", + "from": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", + "dependencies": { + "uglify-js": { + "version": "2.4.24", + "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "source-map": { + "version": "0.1.34", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + }, + "yargs": { + "version": "3.5.4", + "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + }, + "decamelize": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + }, + "window-size": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + }, + "wordwrap": { + "version": "0.0.2", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + } + } + } + } + } + } + }, + "constantinople": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", + "dependencies": { + "uglify-js": { + "version": "2.4.24", + "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "source-map": { + "version": "0.1.34", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + }, + "yargs": { + "version": "3.5.4", + "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + }, + "decamelize": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + }, + "window-size": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + }, + "wordwrap": { + "version": "0.0.2", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + } + } + } + } + } + } + } + } + }, + "ldapjs": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", + "dependencies": { + "asn1": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + }, + "assert-plus": { + "version": "0.1.5", + "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + }, + "bunyan": { + "version": "1.5.1", + "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "dependencies": { + "mv": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "ncp": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + }, + "rimraf": { + "version": "2.4.5", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "dependencies": { + "glob": { + "version": "6.0.4", + "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "dependencies": { + "inflight": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + } + } + } + } + } + } + }, + "safe-json-stringify": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + } + } + }, + "dashdash": { + "version": "1.10.1", + "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz" + }, + "backoff": { + "version": "2.4.1", + "from": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", + "dependencies": { + "precond": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" + } + } + }, + "ldap-filter": { + "version": "0.2.2", + "from": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz" + }, + "once": { + "version": "1.3.2", + "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "vasync": { + "version": "1.6.3", + "from": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz", + "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz" + }, + "verror": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "dependencies": { + "extsprintf": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz" + } + } + }, + "dtrace-provider": { + "version": "0.6.0", + "from": "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", + "dependencies": { + "nan": { + "version": "2.4.0", + "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + } + } + } + } + }, + "lodash": { + "version": "4.14.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz" + }, + "logger-sharelatex": { + "version": "1.3.1", + "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", + "resolved": "git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", + "dependencies": { + "bunyan": { + "version": "1.5.1", + "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "dependencies": { + "dtrace-provider": { + "version": "0.6.0", + "from": "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", + "dependencies": { + "nan": { + "version": "2.4.0", + "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + } + } + }, + "mv": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "ncp": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + }, + "rimraf": { + "version": "2.4.5", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "dependencies": { + "glob": { + "version": "6.0.4", + "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "dependencies": { + "inflight": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "once": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + } + } + } + } + } + } + }, + "safe-json-stringify": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + } + } + }, + "coffee-script": { + "version": "1.4.0", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz" + }, + "raven": { + "version": "0.8.1", + "from": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", + "resolved": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", + "dependencies": { + "cookie": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" + }, + "lsmod": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz" + }, + "stack-trace": { + "version": "0.0.7", + "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz" + } + } + } + } + }, + "lynx": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", + "dependencies": { + "mersenne": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz" + }, + "statsd-parser": { + "version": "0.0.4", + "from": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz" + } + } + }, + "marked": { + "version": "0.3.6", + "from": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz" + }, + "method-override": { + "version": "2.3.6", + "from": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", + "dependencies": { + "debug": { + "version": "2.2.0", + "from": "debug@2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "methods": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + }, + "parseurl": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + }, + "vary": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz" + } + } + }, + "metrics-sharelatex": { + "version": "1.3.0", + "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", + "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", + "dependencies": { + "coffee-script": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + } + } + }, + "mimelib": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", + "dependencies": { + "encoding": { + "version": "0.1.12", + "from": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "dependencies": { + "iconv-lite": { + "version": "0.4.13", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + } + } + }, + "addressparser": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz" + } + } + }, + "mocha": { + "version": "1.17.1", + "from": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", + "dependencies": { + "commander": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" + }, + "growl": { + "version": "1.7.0", + "from": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz" + }, + "jade": { + "version": "0.26.3", + "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "dependencies": { + "commander": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" + }, + "mkdirp": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + } + } + }, + "diff": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + }, + "glob": { + "version": "3.2.3", + "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "dependencies": { + "minimatch": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "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" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "graceful-fs": { + "version": "2.0.3", + "from": "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" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "mongojs": { + "version": "0.18.2", + "from": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", + "resolved": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", + "dependencies": { + "thunky": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz" + }, + "readable-stream": { + "version": "1.1.14", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "mongodb": { + "version": "1.4.32", + "from": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", + "dependencies": { + "bson": { + "version": "0.2.22", + "from": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", + "resolved": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", + "dependencies": { + "nan": { + "version": "1.8.4", + "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + } + } + }, + "kerberos": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", + "dependencies": { + "nan": { + "version": "1.6.2", + "from": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz" + } + } + }, + "readable-stream": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "dependencies": { + "buffer-shims": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + }, + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + } + } + } + } + } + }, + "mongoose": { + "version": "4.1.0", + "from": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", + "dependencies": { + "async": { + "version": "0.9.0", + "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" + }, + "bson": { + "version": "0.3.2", + "from": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", + "resolved": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", + "dependencies": { + "bson-ext": { + "version": "0.1.13", + "from": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", + "resolved": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", + "dependencies": { + "bindings": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + }, + "nan": { + "version": "2.0.9", + "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + } + } + } + } + }, + "hooks-fixed": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz" + }, + "kareem": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz" + }, + "mongodb": { + "version": "2.0.34", + "from": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", + "dependencies": { + "mongodb-core": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", + "dependencies": { + "bson": { + "version": "0.4.23", + "from": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz", + "resolved": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz" + }, + "kerberos": { + "version": "0.0.21", + "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", + "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", + "dependencies": { + "nan": { + "version": "2.3.5", + "from": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz" + } + } + } + } + }, + "readable-stream": { + "version": "1.0.31", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "mpath": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz" + }, + "mpromise": { + "version": "0.5.4", + "from": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz", + "resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz" + }, + "mquery": { + "version": "1.6.1", + "from": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", + "dependencies": { + "bluebird": { + "version": "2.9.26", + "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + } + } + }, + "ms": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz" + }, + "muri": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz" + }, + "regexp-clone": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz" + }, + "sliced": { + "version": "0.0.5", + "from": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz" + } + } + }, + "multer": { + "version": "0.1.8", + "from": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", + "dependencies": { + "busboy": { + "version": "0.2.13", + "from": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", + "dependencies": { + "dicer": { + "version": "0.2.5", + "from": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "dependencies": { + "streamsearch": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz" + } + } + }, + "readable-stream": { + "version": "1.1.14", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + }, + "qs": { + "version": "1.2.2", + "from": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz" + }, + "type-is": { + "version": "1.5.7", + "from": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", + "dependencies": { + "media-typer": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + }, + "mime-types": { + "version": "2.0.14", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "dependencies": { + "mime-db": { + "version": "1.12.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + } + } + } + } + } + } + }, + "node-uuid": { + "version": "1.4.1", + "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz" + }, + "nodemailer": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", + "dependencies": { + "libmime": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", + "dependencies": { + "iconv-lite": { + "version": "0.4.13", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + }, + "libbase64": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + }, + "libqp": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + } + } + }, + "mailcomposer": { + "version": "3.3.2", + "from": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", + "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", + "dependencies": { + "buildmail": { + "version": "3.3.2", + "from": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", + "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", + "dependencies": { + "addressparser": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz" + }, + "libbase64": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + }, + "libqp": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + }, + "nodemailer-fetch": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + } + } + } + } + }, + "nodemailer-direct-transport": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", + "dependencies": { + "smtp-connection": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + } + } + }, + "nodemailer-shared": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", + "dependencies": { + "nodemailer-fetch": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + } + } + }, + "nodemailer-smtp-pool": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", + "dependencies": { + "clone": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + }, + "nodemailer-wellknown": { + "version": "0.1.7", + "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + }, + "smtp-connection": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + } + } + }, + "nodemailer-smtp-transport": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", + "dependencies": { + "clone": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + }, + "nodemailer-wellknown": { + "version": "0.1.7", + "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + }, + "smtp-connection": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + } + } + } + } + }, + "nodemailer-sendgrid-transport": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", + "dependencies": { + "sendgrid": { + "version": "1.9.2", + "from": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", + "resolved": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", + "dependencies": { + "mime": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + }, + "lodash": { + "version": "3.10.1", + "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + }, + "smtpapi": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz" + } + } + } + } + }, + "nodemailer-ses-transport": { + "version": "1.4.0", + "from": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", + "dependencies": { + "aws-sdk": { + "version": "2.4.14", + "from": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", + "dependencies": { + "sax": { + "version": "1.1.5", + "from": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz" + }, + "xml2js": { + "version": "0.4.15", + "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz" + }, + "xmlbuilder": { + "version": "2.6.2", + "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", + "dependencies": { + "lodash": { + "version": "3.5.0", + "from": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz" + } + } + }, + "jmespath": { + "version": "0.15.0", + "from": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" + } + } + } + } + }, + "optimist": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + }, + "minimist": { + "version": "0.0.10", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + } + } + }, + "passport": { + "version": "0.3.2", + "from": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", + "dependencies": { + "passport-strategy": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + }, + "pause": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" + } + } + }, + "passport-ldapauth": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", + "dependencies": { + "passport-strategy": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + }, + "ldapauth-fork": { + "version": "2.5.3", + "from": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", + "resolved": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", + "dependencies": { + "bcryptjs": { + "version": "2.3.0", + "from": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz" + }, + "lru-cache": { + "version": "3.2.0", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + } + } + } + } + } + } + }, + "passport-local": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "dependencies": { + "passport-strategy": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + } + } + }, + "passport-saml": { + "version": "0.15.0", + "from": "passport-saml@", + "resolved": "https://registry.npmjs.org/passport-saml/-/passport-saml-0.15.0.tgz", + "dependencies": { + "passport-strategy": { + "version": "1.0.0", + "from": "passport-strategy@*" + }, + "q": { + "version": "1.1.2", + "from": "q@1.1.x" + }, + "xml2js": { + "version": "0.4.17", + "from": "xml2js@0.4.x", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", + "dependencies": { + "sax": { + "version": "1.2.1", + "from": "sax@>=0.6.0" + }, + "xmlbuilder": { + "version": "4.2.1", + "from": "xmlbuilder@^4.1.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz" + } + } + }, + "xml-crypto": { + "version": "0.8.4", + "from": "xml-crypto@0.8.x", + "dependencies": { + "xmldom": { + "version": "0.1.19", + "from": "xmldom@=0.1.19" + }, + "xpath.js": { + "version": "1.0.6", + "from": "xpath.js@>=0.0.3" + } + } + }, + "xmldom": { + "version": "0.1.22", + "from": "xmldom@0.1.x" + }, + "xmlbuilder": { + "version": "2.5.2", + "from": "xmlbuilder@2.5.x", + "dependencies": { + "lodash": { + "version": "3.2.0", + "from": "lodash@~3.2.0" + } + } + }, + "xml-encryption": { + "version": "0.7.4", + "from": "xml-encryption@~0.7", + "dependencies": { + "ejs": { + "version": "0.8.8", + "from": "ejs@~0.8.3" + }, + "async": { + "version": "0.2.10", + "from": "async@~0.2.7" + }, + "xpath": { + "version": "0.0.5", + "from": "xpath@0.0.5", + "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.5.tgz" + }, + "node-forge": { + "version": "0.2.24", + "from": "node-forge@0.2.24", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.2.24.tgz" + } + } + } + } + }, + "pg": { + "version": "6.0.3", + "from": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", + "resolved": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", + "dependencies": { + "buffer-writer": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz" + }, + "packet-reader": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz" + }, + "pg-connection-string": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz" + }, + "pg-pool": { + "version": "1.4.0", + "from": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", + "dependencies": { + "generic-pool": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" + }, + "object-assign": { + "version": "4.1.0", + "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" + } + } + }, + "pg-types": { + "version": "1.11.0", + "from": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", + "dependencies": { + "ap": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz" + }, + "postgres-array": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz" + }, + "postgres-bytea": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" + }, + "postgres-date": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz" + }, + "postgres-interval": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", + "dependencies": { + "xtend": { + "version": "4.0.1", + "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + } + } + } + }, + "pgpass": { + "version": "0.0.6", + "from": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", + "dependencies": { + "split": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "dependencies": { + "through": { + "version": "2.3.8", + "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + } + } + } + } + }, + "semver": { + "version": "4.3.2", + "from": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz" + } + } + }, + "pg-hstore": { + "version": "2.3.2", + "from": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", + "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", + "dependencies": { + "underscore": { + "version": "1.8.3", + "from": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" + } + } + }, + "redback": { + "version": "0.4.0", + "from": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz", + "resolved": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz" + }, + "redis": { + "version": "0.10.1", + "from": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz", + "resolved": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz" + }, + "redis-sharelatex": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", + "dependencies": { + "chai": { + "version": "1.9.1", + "from": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", + "resolved": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", + "dependencies": { + "assertion-error": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz" + }, + "deep-eql": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "dependencies": { + "type-detect": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" + } + } + } + } + }, + "coffee-script": { + "version": "1.8.0", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", + "dependencies": { + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + } + } + }, + "grunt-contrib-coffee": { + "version": "0.11.1", + "from": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", + "resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", + "dependencies": { + "coffee-script": { + "version": "1.7.1", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", + "dependencies": { + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + } + } + }, + "chalk": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "dependencies": { + "ansi-styles": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + }, + "has-ansi": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + } + } + }, + "strip-ansi": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + } + } + }, + "supports-color": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" + } + } + }, + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + } + } + }, + "grunt-mocha-test": { + "version": "0.12.0", + "from": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", + "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", + "dependencies": { + "hooker": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + }, + "fs-extra": { + "version": "0.11.1", + "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", + "dependencies": { + "ncp": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz" + }, + "mkdirp": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "jsonfile": { + "version": "2.3.1", + "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz" + }, + "rimraf": { + "version": "2.5.4", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "dependencies": { + "glob": { + "version": "7.0.5", + "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "dependencies": { + "fs.realpath": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + }, + "inflight": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "once": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + } + } + } + } + } + } + } + } + }, + "mocha": { + "version": "1.21.4", + "from": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", + "dependencies": { + "commander": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" + }, + "growl": { + "version": "1.8.1", + "from": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" + }, + "jade": { + "version": "0.26.3", + "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "dependencies": { + "commander": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" + }, + "mkdirp": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + } + } + }, + "diff": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + }, + "glob": { + "version": "3.2.3", + "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "dependencies": { + "minimatch": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "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" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "graceful-fs": { + "version": "2.0.3", + "from": "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" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "redis": { + "version": "0.12.1", + "from": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz", + "resolved": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz" + }, + "redis-sentinel": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", + "dependencies": { + "redis": { + "version": "0.11.0", + "from": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz", + "resolved": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz" + }, + "q": { + "version": "0.9.2", + "from": "https://registry.npmjs.org/q/-/q-0.9.2.tgz", + "resolved": "https://registry.npmjs.org/q/-/q-0.9.2.tgz" + } + } + }, + "sandboxed-module": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", + "dependencies": { + "require-like": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" + }, + "stack-trace": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + } + } + }, + "sinon": { + "version": "1.10.3", + "from": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", + "dependencies": { + "formatio": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", + "dependencies": { + "samsam": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz" + } + } + }, + "util": { + "version": "0.10.3", + "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "underscore": { + "version": "1.7.0", + "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + } + } + }, + "request": { + "version": "2.74.0", + "from": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", + "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", + "dependencies": { + "aws-sign2": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" + }, + "aws4": { + "version": "1.4.1", + "from": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" + }, + "bl": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + } + } + } + }, + "caseless": { + "version": "0.11.0", + "from": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + }, + "combined-stream": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + } + }, + "extend": { + "version": "3.0.0", + "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" + }, + "forever-agent": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + }, + "form-data": { + "version": "1.0.0-rc4", + "from": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "dependencies": { + "async": { + "version": "1.5.2", + "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + } + } + }, + "har-validator": { + "version": "2.0.6", + "from": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "dependencies": { + "chalk": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + }, + "escape-string-regexp": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + }, + "has-ansi": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "supports-color": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + } + }, + "commander": { + "version": "2.9.0", + "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "dependencies": { + "graceful-readlink": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + } + } + }, + "is-my-json-valid": { + "version": "2.13.1", + "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", + "dependencies": { + "generate-function": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + }, + "generate-object-property": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "dependencies": { + "is-property": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + } + } + }, + "jsonpointer": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + }, + "xtend": { + "version": "4.0.1", + "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + } + }, + "pinkie-promise": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "dependencies": { + "pinkie": { + "version": "2.0.4", + "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + } + } + } + } + }, + "hawk": { + "version": "3.1.3", + "from": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "dependencies": { + "hoek": { + "version": "2.16.3", + "from": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + }, + "boom": { + "version": "2.10.1", + "from": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + }, + "cryptiles": { + "version": "2.0.5", + "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + }, + "sntp": { + "version": "1.0.9", + "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + } + }, + "http-signature": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "dependencies": { + "assert-plus": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" + }, + "jsprim": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", + "dependencies": { + "extsprintf": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + }, + "json-schema": { + "version": "0.2.2", + "from": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" + }, + "verror": { + "version": "1.3.6", + "from": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + } + } + }, + "sshpk": { + "version": "1.9.2", + "from": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", + "dependencies": { + "asn1": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + }, + "assert-plus": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dashdash": { + "version": "1.14.0", + "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" + }, + "getpass": { + "version": "0.1.6", + "from": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" + }, + "jsbn": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" + }, + "tweetnacl": { + "version": "0.13.3", + "from": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" + }, + "jodid25519": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" + }, + "ecc-jsbn": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" + } + } + } + } + }, + "is-typedarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + }, + "isstream": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@~5.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "mime-types": { + "version": "2.1.11", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "dependencies": { + "mime-db": { + "version": "1.23.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + } + } + }, + "node-uuid": { + "version": "1.4.7", + "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" + }, + "oauth-sign": { + "version": "0.8.2", + "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" + }, + "qs": { + "version": "6.2.1", + "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + }, + "stringstream": { + "version": "0.0.5", + "from": "stringstream@~0.0.4", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" + }, + "tough-cookie": { + "version": "2.3.1", + "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" + }, + "tunnel-agent": { + "version": "0.4.3", + "from": "tunnel-agent@~0.4.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" + } + } + }, + "requests": { + "version": "0.1.7", + "from": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", + "dependencies": { + "axo": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz" + }, + "eventemitter3": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz" + }, + "extendible": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz" + }, + "hang": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz" + }, + "loads": { + "version": "0.0.4", + "from": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", + "dependencies": { + "failure": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz" + }, + "one-time": { + "version": "0.0.4", + "from": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz" + }, + "xhr-response": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz" + }, + "xhr-status": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz" + } + } + }, + "xhr-send": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz" + } + } + }, + "rimraf": { + "version": "2.2.6", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz" + }, + "sanitizer": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz" + }, + "sequelize": { + "version": "3.23.6", + "from": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", + "dependencies": { + "bluebird": { + "version": "3.4.1", + "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" + }, + "depd": { + "version": "1.1.0", + "from": "depd@~1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + }, + "dottie": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz" + }, + "generic-pool": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" + }, + "inflection": { + "version": "1.10.0", + "from": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz" + }, + "lodash": { + "version": "4.12.0", + "from": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz" + }, + "moment": { + "version": "2.14.1", + "from": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz" + }, + "moment-timezone": { + "version": "0.5.5", + "from": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz" + }, + "node-uuid": { + "version": "1.4.7", + "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" + }, + "retry-as-promised": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", + "dependencies": { + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + } + } + }, + "semver": { + "version": "5.3.0", + "from": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + }, + "shimmer": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz" + }, + "terraformer-wkt-parser": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", + "dependencies": { + "terraformer": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz" + } + } + }, + "toposort-class": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" + }, + "validator": { + "version": "5.5.0", + "from": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz", + "resolved": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz" + }, + "wkx": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz" + } + } + }, + "settings-sharelatex": { + "version": "1.0.0", + "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", + "resolved": "git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", + "dependencies": { + "coffee-script": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + } + } + }, + "sixpack-client": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz" + }, + "temp": { + "version": "0.8.3", + "from": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "dependencies": { + "os-tmpdir": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + } + } + }, + "underscore": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" + }, + "v8-profiler": { + "version": "5.6.5", + "from": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", + "resolved": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", + "dependencies": { + "nan": { + "version": "2.4.0", + "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + }, + "node-pre-gyp": { + "version": "0.6.29", + "from": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "nopt": { + "version": "3.0.6", + "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "dependencies": { + "abbrev": { + "version": "1.0.9", + "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + } + } + }, + "npmlog": { + "version": "3.1.2", + "from": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", + "dependencies": { + "are-we-there-yet": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "dependencies": { + "delegates": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + }, + "readable-stream": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "dependencies": { + "buffer-shims": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + }, + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + } + } + } + }, + "console-control-strings": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + }, + "gauge": { + "version": "2.6.0", + "from": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", + "dependencies": { + "aproba": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" + }, + "has-color": { + "version": "0.1.7", + "from": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" + }, + "has-unicode": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + }, + "object-assign": { + "version": "4.1.0", + "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" + }, + "signal-exit": { + "version": "3.0.0", + "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" + }, + "string-width": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", + "dependencies": { + "code-point-at": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + } + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "wide-align": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" + } + } + }, + "set-blocking": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + } + } + }, + "rc": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "dependencies": { + "deep-extend": { + "version": "0.4.1", + "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" + }, + "ini": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" + }, + "minimist": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + }, + "strip-json-comments": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" + } + } + }, + "rimraf": { + "version": "2.5.4", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "dependencies": { + "glob": { + "version": "7.0.5", + "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "dependencies": { + "fs.realpath": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + }, + "inflight": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "once": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + } + } + } + } + }, + "semver": { + "version": "5.2.0", + "from": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz" + }, + "tar": { + "version": "2.2.1", + "from": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "dependencies": { + "block-stream": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" + }, + "fstream": { + "version": "1.0.10", + "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.5", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "tar-pack": { + "version": "3.1.4", + "from": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", + "dependencies": { + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "fstream": { + "version": "1.0.10", + "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.5", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "fstream-ignore": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + } + } + }, + "once": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "readable-stream": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "dependencies": { + "buffer-shims": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + }, + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + } + }, + "uid-number": { + "version": "0.0.6", + "from": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" + } + } + } + } + } + } + }, + "xml2js": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", + "dependencies": { + "sax": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" + } + } + } + } +} From f11926d0a9db66282035e4dd1a60869ab2557b6b Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 25 Jan 2017 10:31:02 +0000 Subject: [PATCH 31/41] Make sure layout math is done on load. --- .../public/coffee/main/project-list/project-list.coffee | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/services/web/public/coffee/main/project-list/project-list.coffee b/services/web/public/coffee/main/project-list/project-list.coffee index 431c24ada7..161598d32d 100644 --- a/services/web/public/coffee/main/project-list/project-list.coffee +++ b/services/web/public/coffee/main/project-list/project-list.coffee @@ -14,10 +14,9 @@ define [ $scope.searchText = value : "" - if $scope.projects.length == 0 - $timeout () -> - recalculateProjectListHeight() - , 10 + $timeout () -> + recalculateProjectListHeight() + , 10 recalculateProjectListHeight = () -> topOffset = $(".project-list-card")?.offset()?.top From 2a00b9c7a2469b299fc3dd4ffd8a795b6e313118 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 25 Jan 2017 10:33:08 +0000 Subject: [PATCH 32/41] use user._id for error log --- .../Features/Announcements/AnnouncementsController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee index aeda79b003..a0f92c73bd 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee @@ -13,7 +13,7 @@ module.exports = logger.log {user_id:user?._id}, "getting unread announcements" AnnouncementsHandler.getUnreadAnnouncements user, (err, announcements)-> if err? - logger.err {err, user_id}, "unable to get unread announcements" + logger.err {err, user._id}, "unable to get unread announcements" next(err) else res.json announcements From 3eb13ccdd11009560328f629640a9c73b1e3eceb Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 25 Jan 2017 10:38:39 +0000 Subject: [PATCH 33/41] fix stupid mistake --- .../Features/Announcements/AnnouncementsController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee index a0f92c73bd..9c3a9f4deb 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee @@ -13,7 +13,7 @@ module.exports = logger.log {user_id:user?._id}, "getting unread announcements" AnnouncementsHandler.getUnreadAnnouncements user, (err, announcements)-> if err? - logger.err {err, user._id}, "unable to get unread announcements" + logger.err {err:err, user_id:user._id}, "unable to get unread announcements" next(err) else res.json announcements From 60500bc4eaf05716be11bf6ed63275ad42cf3812 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 25 Jan 2017 10:52:08 +0000 Subject: [PATCH 34/41] update shrinkwrap --- services/web/npm-shrinkwrap.json | 2813 +++++++++++------------------- 1 file changed, 1037 insertions(+), 1776 deletions(-) diff --git a/services/web/npm-shrinkwrap.json b/services/web/npm-shrinkwrap.json index 04fdfc0142..03abe920f9 100644 --- a/services/web/npm-shrinkwrap.json +++ b/services/web/npm-shrinkwrap.json @@ -4,65 +4,53 @@ "dependencies": { "archiver": { "version": "0.9.0", - "from": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", + "from": "archiver@0.9.0", "dependencies": { "buffer-crc32": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" + "version": "0.2.13", + "from": "buffer-crc32@~0.2.1" }, "readable-stream": { "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "from": "readable-stream@~1.0.24", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "tar-stream": { "version": "0.3.3", - "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", + "from": "tar-stream@~0.3.0", "dependencies": { "bl": { "version": "0.6.0", - "from": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz" + "from": "bl@~0.6.0" }, "end-of-stream": { "version": "0.1.5", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "from": "end-of-stream@~0.1.3", "dependencies": { "once": { "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "from": "once@~1.3.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } } @@ -72,77 +60,63 @@ }, "zip-stream": { "version": "0.3.7", - "from": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", + "from": "zip-stream@~0.3.0", "dependencies": { "crc32-stream": { "version": "0.2.0", - "from": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz" + "from": "crc32-stream@~0.2.0" }, "debug": { "version": "1.0.4", - "from": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", + "from": "debug@~1.0.2", "dependencies": { "ms": { "version": "0.6.2", - "from": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" + "from": "ms@0.6.2" } } }, "deflate-crc32-stream": { "version": "0.1.2", - "from": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz" + "from": "deflate-crc32-stream@~0.1.0" } } }, "lazystream": { "version": "0.1.0", - "from": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz" + "from": "lazystream@~0.1.0" }, "file-utils": { "version": "0.1.5", - "from": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", + "from": "file-utils@~0.1.5", "dependencies": { "lodash": { "version": "2.1.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz" + "from": "lodash@~2.1.0" }, "iconv-lite": { "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + "from": "iconv-lite@~0.2.11" }, "glob": { "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "from": "glob@~3.2.6", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "from": "minimatch@0.3", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "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" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } } @@ -150,96 +124,79 @@ }, "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.12", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "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" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "findup-sync": { "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "from": "findup-sync@~0.1.2", "dependencies": { "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "isbinaryfile": { "version": "0.1.9", - "from": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz" + "from": "isbinaryfile@~0.1.9" } } }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.0" } } }, "async": { "version": "0.6.2", - "from": "https://registry.npmjs.org/async/-/async-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.6.2.tgz" + "from": "async@0.6.2" }, "base64-stream": { "version": "0.1.3", - "from": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", + "from": "base64-stream@^0.1.2", "dependencies": { "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@^2.0.2", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -247,133 +204,109 @@ }, "basic-auth-connect": { "version": "1.0.0", - "from": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" + "from": "basic-auth-connect@^1.0.0" }, "bcrypt": { "version": "0.8.3", - "from": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", + "from": "bcrypt@0.8.3", "dependencies": { "bindings": { "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + "from": "bindings@1.2.1" }, "nan": { "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + "from": "nan@1.8.4" } } }, "body-parser": { - "version": "1.15.2", - "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", + "version": "1.16.0", + "from": "body-parser@^1.13.1", "dependencies": { "bytes": { "version": "2.4.0", - "from": "bytes@2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" + "from": "bytes@2.4.0" }, "content-type": { "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + "from": "content-type@~1.0.2" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "depd": { "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@~1.1.0" }, "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "version": "1.5.1", + "from": "http-errors@~1.5.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2.0.3" }, "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + "version": "1.0.2", + "from": "setprototypeof@1.0.2" }, "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + "version": "1.3.1", + "from": "statuses@>= 1.3.1 < 2" } } }, "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "version": "0.4.15", + "from": "iconv-lite@0.4.15" }, "on-finished": { "version": "2.3.0", "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "from": "ee-first@1.1.1" } } }, "qs": { - "version": "6.2.0", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" + "version": "6.2.1", + "from": "qs@6.2.1" }, "raw-body": { - "version": "2.1.7", - "from": "raw-body@~2.1.5", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "version": "2.2.0", + "from": "raw-body@~2.2.0", "dependencies": { "unpipe": { "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "from": "unpipe@1.0.0" } } }, "type-is": { - "version": "1.6.13", - "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "version": "1.6.14", + "from": "type-is@~1.6.14", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } } @@ -383,18 +316,15 @@ }, "bufferedstream": { "version": "1.6.0", - "from": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz" + "from": "bufferedstream@1.6.0" }, "connect-redis": { - "version": "3.1.0", - "from": "connect-redis@3.1.0", - "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-3.1.0.tgz", + "version": "3.2.0", + "from": "connect-redis@^3.1.0", "dependencies": { "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { "version": "0.7.2", @@ -403,184 +333,152 @@ } }, "redis": { - "version": "2.6.3", - "from": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", + "version": "2.6.5", + "from": "redis@^2.1.0", "dependencies": { "double-ended-queue": { "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + "from": "double-ended-queue@^2.1.0-0" }, "redis-commands": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + "from": "redis-commands@^1.2.0" }, "redis-parser": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz" + "version": "2.3.0", + "from": "redis-parser@^2.0.0" } } } } }, "contentful": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", + "version": "3.8.0", + "from": "contentful@^3.3.14", "dependencies": { "babel-runtime": { - "version": "6.11.6", - "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "version": "6.3.19", + "from": "babel-runtime@~6.3.19", "dependencies": { "core-js": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" - }, - "regenerator-runtime": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + "version": "1.2.7", + "from": "core-js@^1.2.0" } } }, "contentful-sdk-core": { - "version": "2.3.4", - "from": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", - "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", + "version": "2.5.0", + "from": "contentful-sdk-core@~2.5.0", "dependencies": { "follow-redirects": { "version": "0.0.7", - "from": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "from": "follow-redirects@0.0.7", "dependencies": { "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "stream-consume": { "version": "0.1.0", - "from": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" + "from": "stream-consume@^0.1.0" } } }, "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + "version": "6.3.0", + "from": "qs@^6.1.0" } } }, "json-stringify-safe": { "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "from": "json-stringify-safe@~5.0.1" + }, + "lodash": { + "version": "4.2.1", + "from": "lodash@~4.2.0" } } }, "cookie": { "version": "0.2.4", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz" + "from": "cookie@^0.2.3" }, "cookie-parser": { "version": "1.3.5", - "from": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "from": "cookie-parser@1.3.5", "dependencies": { "cookie": { "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + "from": "cookie@0.1.3" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" } } }, "csurf": { "version": "1.9.0", - "from": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", - "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", + "from": "csurf@^1.8.3", "dependencies": { "cookie": { "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + "from": "cookie@0.3.1" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" }, "csrf": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", + "version": "3.0.4", + "from": "csrf@~3.0.3", "dependencies": { "base64-url": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz" + "version": "1.3.3", + "from": "base64-url@1.3.3" }, "rndm": { "version": "1.2.0", - "from": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz" + "from": "rndm@1.2.0" }, "tsscmp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz" + "from": "tsscmp@1.0.5" }, "uid-safe": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", + "version": "2.1.3", + "from": "uid-safe@2.1.3", "dependencies": { "random-bytes": { "version": "1.0.0", - "from": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz" + "from": "random-bytes@~1.0.0" } } } } }, "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "version": "1.5.1", + "from": "http-errors@~1.5.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2.0.3" }, "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + "version": "1.0.2", + "from": "setprototypeof@1.0.2" }, "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + "version": "1.3.1", + "from": "statuses@>= 1.3.1 < 2" } } } @@ -588,280 +486,229 @@ }, "dateformat": { "version": "1.0.4-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz" + "from": "dateformat@1.0.4-1.2.3" }, "express": { "version": "4.13.0", - "from": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", - "resolved": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", + "from": "express@4.13.0", "dependencies": { "accepts": { "version": "1.2.13", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "from": "accepts@~1.2.9", "dependencies": { "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } }, "negotiator": { "version": "0.5.3", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + "from": "negotiator@0.5.3" } } }, "array-flatten": { "version": "1.1.0", - "from": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz" + "from": "array-flatten@1.1.0" }, "content-disposition": { "version": "0.5.0", - "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" + "from": "content-disposition@0.5.0" }, "content-type": { "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + "from": "content-type@~1.0.1" }, "cookie": { "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + "from": "cookie@0.1.3" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" }, "debug": { "version": "2.2.0", "from": "debug@~2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } }, "depd": { "version": "1.0.1", - "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + "from": "depd@~1.0.1" }, "escape-html": { "version": "1.0.2", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" + "from": "escape-html@1.0.2" }, "etag": { "version": "1.7.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" + "from": "etag@~1.7.0" }, "finalhandler": { "version": "0.4.0", - "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "from": "finalhandler@0.4.0", "dependencies": { "unpipe": { "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "from": "unpipe@~1.0.0" } } }, "fresh": { "version": "0.3.0", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" + "from": "fresh@0.3.0" }, "merge-descriptors": { "version": "1.0.0", - "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" + "from": "merge-descriptors@1.0.0" }, "methods": { "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "from": "methods@~1.1.1" }, "on-finished": { "version": "2.3.0", "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "from": "ee-first@1.1.1" } } }, "parseurl": { "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + "from": "parseurl@~1.3.0" }, "path-to-regexp": { "version": "0.1.6", - "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz" + "from": "path-to-regexp@0.1.6" }, "proxy-addr": { "version": "1.0.10", - "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", + "from": "proxy-addr@~1.0.8", "dependencies": { "forwarded": { "version": "0.1.0", - "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" + "from": "forwarded@~0.1.0" }, "ipaddr.js": { "version": "1.0.5", - "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz" + "from": "ipaddr.js@1.0.5" } } }, "qs": { "version": "2.4.2", - "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" + "from": "qs@2.4.2" }, "range-parser": { "version": "1.0.3", - "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz" + "from": "range-parser@~1.0.2" }, "send": { "version": "0.13.0", - "from": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "from": "send@0.13.0", "dependencies": { "destroy": { "version": "1.0.3", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" + "from": "destroy@1.0.3" }, "http-errors": { "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "from": "http-errors@~1.3.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@1.3.4" }, "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" }, "statuses": { "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + "from": "statuses@~1.2.1" } } }, "serve-static": { "version": "1.10.3", - "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "from": "serve-static@~1.10.0", "dependencies": { "escape-html": { "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "from": "escape-html@~1.0.3" }, "send": { "version": "0.13.2", - "from": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "from": "send@0.13.2", "dependencies": { "depd": { "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@~1.1.0" }, "destroy": { "version": "1.0.4", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + "from": "destroy@~1.0.4" }, "http-errors": { "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "from": "http-errors@~1.3.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@1.3.4" }, "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" }, "statuses": { "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + "from": "statuses@~1.2.1" } } } } }, "type-is": { - "version": "1.6.13", - "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "version": "1.6.14", + "from": "type-is@~1.6.3", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } } @@ -869,63 +716,55 @@ }, "vary": { "version": "1.0.1", - "from": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" + "from": "vary@~1.0.0" }, "utils-merge": { "version": "1.0.0", - "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" + "from": "utils-merge@1.0.0" } } }, "express-session": { - "version": "1.14.2", - "from": "express-session@1.14.2", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.14.2.tgz", + "version": "1.15.0", + "from": "express-session@^1.14.2", "dependencies": { "cookie": { "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + "from": "cookie@0.3.1" }, "cookie-signature": { "version": "1.0.6", "from": "cookie-signature@1.0.6" }, "crc": { - "version": "3.4.1", - "from": "crc@3.4.1", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.1.tgz" + "version": "3.4.4", + "from": "crc@3.4.4" }, "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "depd": { "version": "1.1.0", - "from": "depd@1.1.0" + "from": "depd@~1.1.0" }, "on-headers": { "version": "1.0.1", - "from": "on-headers@1.0.1" + "from": "on-headers@~1.0.1" }, "parseurl": { "version": "1.3.1", - "from": "parseurl@1.3.1" + "from": "parseurl@~1.3.1" }, "uid-safe": { "version": "2.1.3", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", + "from": "uid-safe@~2.1.3", "dependencies": { "base64-url": { "version": "1.3.3", @@ -933,7 +772,7 @@ }, "random-bytes": { "version": "1.0.0", - "from": "random-bytes@1.0.0" + "from": "random-bytes@~1.0.0" } } }, @@ -945,63 +784,51 @@ }, "grunt": { "version": "0.4.5", - "from": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "from": "grunt@^0.4.5", "dependencies": { "async": { "version": "0.1.22", - "from": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" + "from": "async@~0.1.22" }, "coffee-script": { "version": "1.3.3", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz" + "from": "coffee-script@~1.3.3" }, "colors": { "version": "0.6.2", - "from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + "from": "colors@~0.6.2" }, "dateformat": { "version": "1.0.2-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz" + "from": "dateformat@1.0.2-1.2.3" }, "eventemitter2": { "version": "0.4.14", - "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" + "from": "eventemitter2@~0.4.13" }, "findup-sync": { "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "from": "findup-sync@~0.1.2", "dependencies": { "glob": { "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "from": "glob@~3.2.9", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "from": "minimatch@0.3", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "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" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } } @@ -1009,150 +836,123 @@ }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "glob": { "version": "3.1.21", - "from": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "from": "glob@~3.1.21", "dependencies": { "graceful-fs": { "version": "1.2.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" + "from": "graceful-fs@~1.2.0" }, "inherits": { "version": "1.0.2", - "from": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" + "from": "inherits@1" } } }, "hooker": { "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + "from": "hooker@~0.2.3" }, "iconv-lite": { "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + "from": "iconv-lite@~0.2.11" }, "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.12", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "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" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "nopt": { "version": "1.0.10", - "from": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "from": "nopt@~1.0.10", "dependencies": { "abbrev": { "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + "from": "abbrev@1" } } }, "rimraf": { "version": "2.2.8", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + "from": "rimraf@~2.2.8" }, "lodash": { "version": "0.9.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" + "from": "lodash@~0.9.2" }, "underscore.string": { "version": "2.2.1", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz" + "from": "underscore.string@~2.2.1" }, "which": { "version": "1.0.9", - "from": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" + "from": "which@~1.0.5" }, "js-yaml": { "version": "2.0.5", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "from": "js-yaml@~2.0.5", "dependencies": { "argparse": { "version": "0.1.16", - "from": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "from": "argparse@~ 0.1.11", "dependencies": { "underscore": { "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + "from": "underscore@~1.7.0" }, "underscore.string": { "version": "2.4.0", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz" + "from": "underscore.string@~2.4.0" } } }, "esprima": { "version": "1.0.4", - "from": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" + "from": "esprima@~ 1.0.2" } } }, "exit": { "version": "0.1.2", - "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + "from": "exit@~0.1.1" }, "getobject": { "version": "0.1.0", - "from": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" + "from": "getobject@~0.1.0" }, "grunt-legacy-util": { "version": "0.2.0", - "from": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz" + "from": "grunt-legacy-util@~0.2.0" }, "grunt-legacy-log": { "version": "0.1.3", - "from": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "from": "grunt-legacy-log@~0.1.0", "dependencies": { "grunt-legacy-log-utils": { "version": "0.1.1", - "from": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz" + "from": "grunt-legacy-log-utils@~0.1.1" }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" }, "underscore.string": { "version": "2.3.3", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz" + "from": "underscore.string@~2.3.3" } } } @@ -1160,45 +960,37 @@ }, "heapdump": { "version": "0.3.7", - "from": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz" + "from": "heapdump@^0.3.7" }, "http-proxy": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", + "version": "1.16.2", + "from": "http-proxy@^1.8.1", "dependencies": { "eventemitter3": { "version": "1.2.0", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" + "from": "eventemitter3@1.x.x" }, "requires-port": { "version": "1.0.0", - "from": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "from": "requires-port@1.x.x" } } }, "ioredis": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", + "version": "2.5.0", + "from": "ioredis@^2.4.0", "dependencies": { "bluebird": { - "version": "3.4.6", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz" + "version": "3.4.7", + "from": "bluebird@^3.3.4" }, "cluster-key-slot": { "version": "1.0.8", - "from": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz" + "from": "cluster-key-slot@^1.0.6" }, "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { "version": "0.7.2", @@ -1208,8 +1000,7 @@ }, "double-ended-queue": { "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + "from": "double-ended-queue@^2.1.0-0" }, "flexbuffer": { "version": "0.0.6", @@ -1217,91 +1008,75 @@ }, "redis-commands": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + "from": "redis-commands@^1.2.0" }, "redis-parser": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz" + "from": "redis-parser@^1.3.0" } } }, "jade": { "version": "1.3.1", - "from": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", + "from": "jade@~1.3.1", "dependencies": { "commander": { "version": "2.1.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" + "from": "commander@2.1.0" }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" }, "transformers": { "version": "2.1.0", - "from": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "from": "transformers@2.1.0", "dependencies": { "promise": { "version": "2.0.0", - "from": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", + "from": "promise@~2.0", "dependencies": { "is-promise": { "version": "1.0.1", - "from": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz" + "from": "is-promise@~1" } } }, "css": { "version": "1.0.8", - "from": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", + "from": "css@~1.0.8", "dependencies": { "css-parse": { "version": "1.0.4", - "from": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz" + "from": "css-parse@1.0.4" }, "css-stringify": { "version": "1.0.5", - "from": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" + "from": "css-stringify@1.0.5" } } }, "uglify-js": { "version": "2.2.5", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "from": "uglify-js@~2.2.5", "dependencies": { "source-map": { "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "from": "source-map@~0.1.7", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4" } } }, "optimist": { "version": "0.3.7", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "from": "optimist@~0.3.5", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "from": "wordwrap@~0.0.2" } } } @@ -1311,38 +1086,31 @@ }, "character-parser": { "version": "1.2.0", - "from": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz" + "from": "character-parser@1.2.0" }, "monocle": { "version": "1.1.51", - "from": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", - "resolved": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", + "from": "monocle@1.1.51", "dependencies": { "readdirp": { "version": "0.2.5", - "from": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", + "from": "readdirp@~0.2.3", "dependencies": { "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@>=0.2.4", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } @@ -1354,60 +1122,49 @@ }, "with": { "version": "3.0.1", - "from": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", + "from": "with@~3.0.0", "dependencies": { "uglify-js": { "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "from": "uglify-js@~2.4.12", "dependencies": { "async": { "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + "from": "async@~0.2.6" }, "source-map": { "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "from": "source-map@0.1.34", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4" } } }, "uglify-to-browserify": { "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + "from": "uglify-to-browserify@~1.0.0" }, "yargs": { "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "from": "yargs@~3.5.4", "dependencies": { "camelcase": { "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + "from": "camelcase@^1.0.2" }, "decamelize": { "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "from": "decamelize@^1.0.0" }, "window-size": { "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + "from": "window-size@0.1.0" }, "wordwrap": { "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + "from": "wordwrap@0.0.2" } } } @@ -1417,60 +1174,49 @@ }, "constantinople": { "version": "2.0.1", - "from": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", + "from": "constantinople@~2.0.0", "dependencies": { "uglify-js": { "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "from": "uglify-js@~2.4.0", "dependencies": { "async": { "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + "from": "async@~0.2.6" }, "source-map": { "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "from": "source-map@0.1.34", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4" } } }, "uglify-to-browserify": { "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + "from": "uglify-to-browserify@~1.0.0" }, "yargs": { "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "from": "yargs@~3.5.4", "dependencies": { "camelcase": { "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + "from": "camelcase@^1.0.2" }, "decamelize": { "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "from": "decamelize@^1.0.0" }, "window-size": { "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + "from": "window-size@0.1.0" }, "wordwrap": { "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + "from": "wordwrap@0.0.2" } } } @@ -1481,102 +1227,94 @@ } }, "ldapjs": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", + "version": "1.0.1", + "from": "ldapjs@^1.0.0", "dependencies": { "asn1": { "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + "from": "asn1@0.2.3" }, "assert-plus": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + "version": "1.0.0", + "from": "assert-plus@^1.0.0" }, "bunyan": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "version": "1.8.5", + "from": "bunyan@^1.8.3", "dependencies": { + "dtrace-provider": { + "version": "0.8.0", + "from": "dtrace-provider@~0.8", + "dependencies": { + "nan": { + "version": "2.5.1", + "from": "nan@^2.3.3" + } + } + }, "mv": { "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "from": "mv@~2", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "ncp": { "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + "from": "ncp@~2.0.0" }, "rimraf": { "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "from": "rimraf@~2.4.0", "dependencies": { "glob": { "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "from": "glob@^6.0.1", "dependencies": { "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@2 || 3", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0" } } } @@ -1586,192 +1324,186 @@ }, "safe-json-stringify": { "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + "from": "safe-json-stringify@~1" + }, + "moment": { + "version": "2.17.1", + "from": "moment@^2.10.6" } } }, "dashdash": { - "version": "1.10.1", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz" + "version": "1.14.1", + "from": "dashdash@^1.14.0" }, "backoff": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", + "version": "2.5.0", + "from": "backoff@^2.5.0", "dependencies": { "precond": { "version": "0.2.3", - "from": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" + "from": "precond@0.2" } } }, "ldap-filter": { "version": "0.2.2", - "from": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz" + "from": "ldap-filter@0.2.2", + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@0.1.5" + } + } }, "once": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "version": "1.4.0", + "from": "once@^1.4.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "vasync": { - "version": "1.6.3", - "from": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz", - "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz" + "version": "1.6.4", + "from": "vasync@^1.6.4", + "dependencies": { + "verror": { + "version": "1.6.0", + "from": "verror@1.6.0", + "dependencies": { + "extsprintf": { + "version": "1.2.0", + "from": "extsprintf@1.2.0" + } + } + } + } }, "verror": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "version": "1.9.0", + "from": "verror@^1.8.1", "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "core-util-is@1.0.2" + }, "extsprintf": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz" + "version": "1.3.0", + "from": "extsprintf@^1.2.0" } } }, "dtrace-provider": { - "version": "0.6.0", - "from": "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", + "version": "0.7.1", + "from": "dtrace-provider@^0.7.0", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.1", + "from": "nan@^2.3.3" } } } } }, "lodash": { - "version": "4.14.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz" + "version": "4.17.4", + "from": "lodash@^4.13.1" }, "logger-sharelatex": { "version": "1.3.1", - "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", + "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#v1.3.1", "resolved": "git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", "dependencies": { "bunyan": { "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "from": "bunyan@1.5.1", "dependencies": { "dtrace-provider": { "version": "0.6.0", - "from": "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", + "from": "dtrace-provider@~0.6", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.1", + "from": "nan@^2.0.8" } } }, "mv": { "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "from": "mv@~2", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "ncp": { "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + "from": "ncp@~2.0.0" }, "rimraf": { "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "from": "rimraf@~2.4.0", "dependencies": { "glob": { "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "from": "glob@^6.0.1", "dependencies": { "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@2 || 3", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0" } } } @@ -1781,35 +1513,29 @@ }, "safe-json-stringify": { "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + "from": "safe-json-stringify@~1" } } }, "coffee-script": { "version": "1.4.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz" + "from": "coffee-script@1.4.0" }, "raven": { "version": "0.8.1", - "from": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", - "resolved": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", + "from": "raven@^0.8.0", "dependencies": { "cookie": { "version": "0.1.0", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" + "from": "cookie@0.1.0" }, "lsmod": { "version": "0.0.3", - "from": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz" + "from": "lsmod@~0.0.3" }, "stack-trace": { "version": "0.0.7", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz" + "from": "stack-trace@0.0.7" } } } @@ -1817,181 +1543,150 @@ }, "lynx": { "version": "0.1.1", - "from": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", + "from": "lynx@0.1.1", "dependencies": { "mersenne": { "version": "0.0.3", - "from": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz" + "from": "mersenne@~0.0.3" }, "statsd-parser": { "version": "0.0.4", - "from": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz" + "from": "statsd-parser@~0.0.4" } } }, "marked": { "version": "0.3.6", - "from": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz" + "from": "marked@^0.3.5" }, "method-override": { - "version": "2.3.6", - "from": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", - "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", + "version": "2.3.7", + "from": "method-override@^2.3.3", "dependencies": { "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.3.3", + "from": "debug@2.3.3", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "methods": { "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "from": "methods@~1.1.2" }, "parseurl": { "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + "from": "parseurl@~1.3.1" }, "vary": { "version": "1.1.0", - "from": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz" + "from": "vary@~1.1.0" } } }, "metrics-sharelatex": { - "version": "1.3.0", - "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", - "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", + "version": "1.6.0", + "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#v1.6.0", + "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#718f1144407ab2c867b869ebb38e07de2be1933b", "dependencies": { "coffee-script": { "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + "from": "coffee-script@1.6.0" } } }, "mimelib": { "version": "0.2.14", - "from": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", + "from": "mimelib@0.2.14", "dependencies": { "encoding": { "version": "0.1.12", - "from": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "from": "encoding@~0.1", "dependencies": { "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "version": "0.4.15", + "from": "iconv-lite@~0.4.13" } } }, "addressparser": { "version": "0.2.1", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz" + "from": "addressparser@~0.2.0" } } }, "mocha": { "version": "1.17.1", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", + "from": "mocha@1.17.1", "dependencies": { "commander": { "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" + "from": "commander@2.0.0" }, "growl": { "version": "1.7.0", - "from": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz" + "from": "growl@1.7.x" }, "jade": { "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "from": "jade@0.26.3", "dependencies": { "commander": { "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" + "from": "commander@0.6.1" }, "mkdirp": { "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + "from": "mkdirp@0.3.0" } } }, "diff": { "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + "from": "diff@1.0.7" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@*", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@0.3.5" }, "glob": { "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "from": "glob@3.2.3", "dependencies": { "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.11", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "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" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "graceful-fs": { "version": "2.0.3", - "from": "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" + "from": "graceful-fs@~2.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } } @@ -1999,109 +1694,89 @@ }, "mongojs": { "version": "0.18.2", - "from": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", - "resolved": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", + "from": "mongojs@0.18.2", "dependencies": { "thunky": { "version": "0.1.0", - "from": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz" + "from": "thunky@~0.1.0" }, "readable-stream": { "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "from": "readable-stream@~1.1.9", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mongodb": { "version": "1.4.32", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", + "from": "mongodb@1.4.32", "dependencies": { "bson": { "version": "0.2.22", - "from": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", + "from": "bson@~0.2", "dependencies": { "nan": { "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + "from": "nan@~1.8" } } }, "kerberos": { "version": "0.0.9", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", + "from": "kerberos@0.0.9", "dependencies": { "nan": { "version": "1.6.2", - "from": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz" + "from": "nan@1.6.2" } } }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@latest", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -2111,33 +1786,27 @@ }, "mongoose": { "version": "4.1.0", - "from": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", + "from": "mongoose@4.1.0", "dependencies": { "async": { "version": "0.9.0", - "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" + "from": "async@0.9.0" }, "bson": { "version": "0.3.2", - "from": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", + "from": "bson@~0.3", "dependencies": { "bson-ext": { "version": "0.1.13", - "from": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", - "resolved": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", + "from": "bson-ext@~0.1", "dependencies": { "bindings": { "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + "from": "bindings@^1.2.1" }, "nan": { "version": "2.0.9", - "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + "from": "nan@~2.0.9" } } } @@ -2145,38 +1814,31 @@ }, "hooks-fixed": { "version": "1.1.0", - "from": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz" + "from": "hooks-fixed@1.1.0" }, "kareem": { "version": "1.0.1", - "from": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz" + "from": "kareem@1.0.1" }, "mongodb": { "version": "2.0.34", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", + "from": "mongodb@2.0.34", "dependencies": { "mongodb-core": { "version": "1.2.0", - "from": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", + "from": "mongodb-core@1.2.0", "dependencies": { "bson": { "version": "0.4.23", - "from": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz" + "from": "bson@~0.4" }, "kerberos": { - "version": "0.0.21", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", + "version": "0.0.22", + "from": "kerberos@~0.0", "dependencies": { "nan": { - "version": "2.3.5", - "from": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz" + "version": "2.4.0", + "from": "nan@~2.4" } } } @@ -2184,28 +1846,23 @@ }, "readable-stream": { "version": "1.0.31", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", + "from": "readable-stream@1.0.31", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } } @@ -2213,33 +1870,27 @@ }, "mpath": { "version": "0.1.1", - "from": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz" + "from": "mpath@0.1.1" }, "mpromise": { "version": "0.5.4", - "from": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz", - "resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz" + "from": "mpromise@0.5.4" }, "mquery": { "version": "1.6.1", - "from": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", + "from": "mquery@1.6.1", "dependencies": { "bluebird": { "version": "2.9.26", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz" + "from": "bluebird@2.9.26" }, "debug": { "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@2.2.0", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } } @@ -2247,72 +1898,59 @@ }, "ms": { "version": "0.1.0", - "from": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz" + "from": "ms@0.1.0" }, "muri": { "version": "1.0.0", - "from": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz" + "from": "muri@1.0.0" }, "regexp-clone": { "version": "0.0.1", - "from": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz" + "from": "regexp-clone@0.0.1" }, "sliced": { "version": "0.0.5", - "from": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz" + "from": "sliced@0.0.5" } } }, "multer": { "version": "0.1.8", - "from": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", + "from": "multer@^0.1.8", "dependencies": { "busboy": { - "version": "0.2.13", - "from": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", + "version": "0.2.14", + "from": "busboy@~0.2.9", "dependencies": { "dicer": { "version": "0.2.5", - "from": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "from": "dicer@0.2.5", "dependencies": { "streamsearch": { "version": "0.1.2", - "from": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz" + "from": "streamsearch@0.1.2" } } }, "readable-stream": { "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "from": "readable-stream@1.1.x", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } } @@ -2320,33 +1958,27 @@ }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" }, "qs": { "version": "1.2.2", - "from": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz" + "from": "qs@~1.2.2" }, "type-is": { "version": "1.5.7", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", + "from": "type-is@~1.5.2", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { "version": "2.0.14", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "from": "mime-types@~2.0.9", "dependencies": { "mime-db": { "version": "1.12.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + "from": "mime-db@~1.12.0" } } } @@ -2356,65 +1988,53 @@ }, "node-uuid": { "version": "1.4.1", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz" + "from": "node-uuid@1.4.1" }, "nodemailer": { "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", + "from": "nodemailer@2.1.0", "dependencies": { "libmime": { "version": "2.0.0", - "from": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", + "from": "libmime@2.0.0", "dependencies": { "iconv-lite": { "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "from": "iconv-lite@0.4.13" }, "libbase64": { "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + "from": "libbase64@0.1.0" }, "libqp": { "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + "from": "libqp@1.1.0" } } }, "mailcomposer": { "version": "3.3.2", - "from": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", + "from": "mailcomposer@3.3.2", "dependencies": { "buildmail": { "version": "3.3.2", - "from": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", + "from": "buildmail@3.3.2", "dependencies": { "addressparser": { "version": "1.0.0", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz" + "from": "addressparser@1.0.0" }, "libbase64": { "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + "from": "libbase64@0.1.0" }, "libqp": { "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + "from": "libqp@1.1.0" }, "nodemailer-fetch": { "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + "from": "nodemailer-fetch@1.2.1" } } } @@ -2422,69 +2042,57 @@ }, "nodemailer-direct-transport": { "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", + "from": "nodemailer-direct-transport@2.0.1", "dependencies": { "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } }, "nodemailer-shared": { "version": "1.0.3", - "from": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", + "from": "nodemailer-shared@1.0.3", "dependencies": { "nodemailer-fetch": { "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + "from": "nodemailer-fetch@1.2.1" } } }, "nodemailer-smtp-pool": { "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", + "from": "nodemailer-smtp-pool@2.1.0", "dependencies": { "clone": { "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + "from": "clone@1.0.2" }, "nodemailer-wellknown": { "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + "from": "nodemailer-wellknown@0.1.7" }, "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } }, "nodemailer-smtp-transport": { "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", + "from": "nodemailer-smtp-transport@2.0.1", "dependencies": { "clone": { "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + "from": "clone@1.0.2" }, "nodemailer-wellknown": { "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + "from": "nodemailer-wellknown@0.1.7" }, "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } } @@ -2492,69 +2100,97 @@ }, "nodemailer-sendgrid-transport": { "version": "0.2.0", - "from": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", + "from": "nodemailer-sendgrid-transport@^0.2.0", "dependencies": { "sendgrid": { "version": "1.9.2", - "from": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", + "from": "sendgrid@^1.8.0", "dependencies": { "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@^1.2.9" }, "lodash": { "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + "from": "lodash@^3.0.1 || ^2.0.0" }, "smtpapi": { "version": "1.2.0", - "from": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz" + "from": "smtpapi@^1.2.0" } } } } }, "nodemailer-ses-transport": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", + "version": "1.5.0", + "from": "nodemailer-ses-transport@^1.3.0", "dependencies": { "aws-sdk": { - "version": "2.4.14", - "from": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", + "version": "2.7.28", + "from": "aws-sdk@^2.6.12", "dependencies": { - "sax": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz" - }, - "xml2js": { - "version": "0.4.15", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz" - }, - "xmlbuilder": { - "version": "2.6.2", - "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", + "buffer": { + "version": "4.9.1", + "from": "buffer@4.9.1", "dependencies": { - "lodash": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz" + "base64-js": { + "version": "1.2.0", + "from": "base64-js@^1.0.2" + }, + "ieee754": { + "version": "1.1.8", + "from": "ieee754@^1.1.4" + }, + "isarray": { + "version": "1.0.0", + "from": "isarray@^1.0.0" } } }, + "crypto-browserify": { + "version": "1.0.9", + "from": "crypto-browserify@1.0.9" + }, "jmespath": { "version": "0.15.0", - "from": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" + "from": "jmespath@0.15.0" + }, + "querystring": { + "version": "0.2.0", + "from": "querystring@0.2.0" + }, + "sax": { + "version": "1.1.5", + "from": "sax@1.1.5" + }, + "url": { + "version": "0.10.3", + "from": "url@0.10.3", + "dependencies": { + "punycode": { + "version": "1.3.2", + "from": "punycode@1.3.2" + } + } + }, + "uuid": { + "version": "3.0.0", + "from": "uuid@3.0.0" + }, + "xml2js": { + "version": "0.4.15", + "from": "xml2js@0.4.15" + }, + "xmlbuilder": { + "version": "2.6.2", + "from": "xmlbuilder@2.6.2", + "dependencies": { + "lodash": { + "version": "3.5.0", + "from": "lodash@~3.5.0" + } + } } } } @@ -2562,67 +2198,55 @@ }, "optimist": { "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "from": "optimist@0.6.1", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "from": "wordwrap@~0.0.2" }, "minimist": { "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + "from": "minimist@~0.0.1" } } }, "passport": { "version": "0.3.2", - "from": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", + "from": "passport@^0.3.2", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" }, "pause": { "version": "0.0.1", - "from": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" + "from": "pause@0.0.1" } } }, "passport-ldapauth": { "version": "0.6.0", - "from": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", + "from": "passport-ldapauth@^0.6.0", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" }, "ldapauth-fork": { - "version": "2.5.3", - "from": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", - "resolved": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", + "version": "2.5.5", + "from": "ldapauth-fork@~2.5.0", "dependencies": { "bcryptjs": { "version": "2.3.0", - "from": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz" + "from": "bcryptjs@2.3.0" }, "lru-cache": { "version": "3.2.0", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "from": "lru-cache@3.2.0", "dependencies": { "pseudomap": { "version": "1.0.2", - "from": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + "from": "pseudomap@^1.0.1" } } } @@ -2632,20 +2256,17 @@ }, "passport-local": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "from": "passport-local@^1.0.0", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" } } }, "passport-saml": { "version": "0.15.0", - "from": "passport-saml@", - "resolved": "https://registry.npmjs.org/passport-saml/-/passport-saml-0.15.0.tgz", + "from": "passport-saml@^0.15.0", "dependencies": { "passport-strategy": { "version": "1.0.0", @@ -2658,7 +2279,6 @@ "xml2js": { "version": "0.4.17", "from": "xml2js@0.4.x", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", "dependencies": { "sax": { "version": "1.2.1", @@ -2666,13 +2286,12 @@ }, "xmlbuilder": { "version": "4.2.1", - "from": "xmlbuilder@^4.1.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz" + "from": "xmlbuilder@^4.1.0" } } }, "xml-crypto": { - "version": "0.8.4", + "version": "0.8.5", "from": "xml-crypto@0.8.x", "dependencies": { "xmldom": { @@ -2680,13 +2299,13 @@ "from": "xmldom@=0.1.19" }, "xpath.js": { - "version": "1.0.6", + "version": "1.0.7", "from": "xpath.js@>=0.0.3" } } }, "xmldom": { - "version": "0.1.22", + "version": "0.1.27", "from": "xmldom@0.1.x" }, "xmlbuilder": { @@ -2713,166 +2332,39 @@ }, "xpath": { "version": "0.0.5", - "from": "xpath@0.0.5", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.5.tgz" + "from": "xpath@0.0.5" }, "node-forge": { "version": "0.2.24", - "from": "node-forge@0.2.24", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.2.24.tgz" + "from": "node-forge@0.2.24" } } } } }, - "pg": { - "version": "6.0.3", - "from": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "resolved": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "dependencies": { - "buffer-writer": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz" - }, - "packet-reader": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz" - }, - "pg-connection-string": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz" - }, - "pg-pool": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "dependencies": { - "generic-pool": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "pg-types": { - "version": "1.11.0", - "from": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "dependencies": { - "ap": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz" - }, - "postgres-array": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz" - }, - "postgres-bytea": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" - }, - "postgres-date": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz" - }, - "postgres-interval": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "dependencies": { - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - } - } - }, - "pgpass": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "dependencies": { - "split": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "dependencies": { - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - } - } - }, - "semver": { - "version": "4.3.2", - "from": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz" - } - } - }, - "pg-hstore": { - "version": "2.3.2", - "from": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "dependencies": { - "underscore": { - "version": "1.8.3", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" - } - } - }, - "redback": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz" - }, "redis": { "version": "0.10.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz" + "from": "redis@0.10.1" }, "redis-sharelatex": { "version": "0.0.9", - "from": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", + "from": "redis-sharelatex@0.0.9", "dependencies": { "chai": { "version": "1.9.1", - "from": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", - "resolved": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", + "from": "chai@1.9.1", "dependencies": { "assertion-error": { "version": "1.0.0", - "from": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz" + "from": "assertion-error@1.0.0" }, "deep-eql": { "version": "0.1.3", - "from": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "from": "deep-eql@0.1.3", "dependencies": { "type-detect": { "version": "0.1.1", - "from": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" + "from": "type-detect@0.1.1" } } } @@ -2880,195 +2372,167 @@ }, "coffee-script": { "version": "1.8.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", + "from": "coffee-script@1.8.0", "dependencies": { "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" } } }, "grunt-contrib-coffee": { "version": "0.11.1", - "from": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", + "from": "grunt-contrib-coffee@0.11.1", "dependencies": { "coffee-script": { "version": "1.7.1", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", + "from": "coffee-script@~1.7.0", "dependencies": { "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" } } }, "chalk": { "version": "0.5.1", - "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "from": "chalk@~0.5.0", "dependencies": { "ansi-styles": { "version": "1.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" + "from": "ansi-styles@^1.1.0" }, "escape-string-regexp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "from": "escape-string-regexp@^1.0.0" }, "has-ansi": { "version": "0.1.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "from": "has-ansi@^0.1.0", "dependencies": { "ansi-regex": { "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + "from": "ansi-regex@^0.2.1" } } }, "strip-ansi": { "version": "0.3.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "from": "strip-ansi@^0.3.0", "dependencies": { "ansi-regex": { "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + "from": "ansi-regex@^0.2.1" } } }, "supports-color": { "version": "0.2.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" + "from": "supports-color@^0.2.0" } } }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "grunt-mocha-test": { "version": "0.12.0", - "from": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", + "from": "grunt-mocha-test@0.12.0", "dependencies": { "hooker": { "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + "from": "hooker@~0.2.3" }, "fs-extra": { "version": "0.11.1", - "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", + "from": "fs-extra@~0.11.1", "dependencies": { "ncp": { "version": "0.6.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz" + "from": "ncp@^0.6.0" }, "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@^0.5.0", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "jsonfile": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz" + "version": "2.4.0", + "from": "jsonfile@^2.0.0", + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "from": "graceful-fs@^4.1.6" + } + } }, "rimraf": { "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "from": "rimraf@^2.2.8", "dependencies": { "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "version": "7.1.1", + "from": "glob@^7.0.5", "dependencies": { "fs.realpath": { "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "from": "fs.realpath@^1.0.0" }, "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.2", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0" } } } @@ -3080,89 +2544,73 @@ }, "mocha": { "version": "1.21.4", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", + "from": "mocha@1.21.4", "dependencies": { "commander": { "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" + "from": "commander@2.0.0" }, "growl": { "version": "1.8.1", - "from": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" + "from": "growl@1.8.x" }, "jade": { "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "from": "jade@0.26.3", "dependencies": { "commander": { "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" + "from": "commander@0.6.1" }, "mkdirp": { "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + "from": "mkdirp@0.3.0" } } }, "diff": { "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + "from": "diff@1.0.7" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@*", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@0.3.5" }, "glob": { "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "from": "glob@3.2.3", "dependencies": { "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.11", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "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" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "graceful-fs": { "version": "2.0.3", - "from": "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" + "from": "graceful-fs@~2.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } } @@ -3170,69 +2618,57 @@ }, "redis": { "version": "0.12.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz" + "from": "redis@0.12.1" }, "redis-sentinel": { "version": "0.1.1", - "from": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", + "from": "redis-sentinel@0.1.1", "dependencies": { "redis": { "version": "0.11.0", - "from": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz" + "from": "redis@0.11.x" }, "q": { "version": "0.9.2", - "from": "https://registry.npmjs.org/q/-/q-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-0.9.2.tgz" + "from": "q@0.9.2" } } }, "sandboxed-module": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", + "from": "sandboxed-module@1.0.1", "dependencies": { "require-like": { "version": "0.1.2", - "from": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" + "from": "require-like@0.1.2" }, "stack-trace": { "version": "0.0.9", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + "from": "stack-trace@0.0.9" } } }, "sinon": { "version": "1.10.3", - "from": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", + "from": "sinon@1.10.3", "dependencies": { "formatio": { "version": "1.0.2", - "from": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", + "from": "formatio@~1.0", "dependencies": { "samsam": { "version": "1.1.3", - "from": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz" + "from": "samsam@~1.1" } } }, "util": { "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "from": "util@>=0.10.3 <1", "dependencies": { "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "inherits@2.0.1" } } } @@ -3240,215 +2676,141 @@ }, "underscore": { "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + "from": "underscore@1.7.0" } } }, "request": { - "version": "2.74.0", - "from": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", + "version": "2.79.0", + "from": "request@^2.69.0", "dependencies": { "aws-sign2": { "version": "0.6.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" + "from": "aws-sign2@~0.6.0" }, "aws4": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" - }, - "bl": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } + "version": "1.5.0", + "from": "aws4@^1.2.1" }, "caseless": { "version": "0.11.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + "from": "caseless@~0.11.0" }, "combined-stream": { "version": "1.0.5", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "from": "combined-stream@~1.0.5", "dependencies": { "delayed-stream": { "version": "1.0.0", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "from": "delayed-stream@~1.0.0" } } }, "extend": { "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" + "from": "extend@~3.0.0" }, "forever-agent": { "version": "0.6.1", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + "from": "forever-agent@~0.6.1" }, "form-data": { - "version": "1.0.0-rc4", - "from": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "version": "2.1.2", + "from": "form-data@~2.1.1", "dependencies": { - "async": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + "asynckit": { + "version": "0.4.0", + "from": "asynckit@^0.4.0" } } }, "har-validator": { "version": "2.0.6", - "from": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "from": "har-validator@~2.0.6", "dependencies": { "chalk": { "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "from": "chalk@^1.1.1", "dependencies": { "ansi-styles": { "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + "from": "ansi-styles@^2.2.1" }, "escape-string-regexp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "from": "escape-string-regexp@^1.0.2" }, "has-ansi": { "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "from": "has-ansi@^2.0.0", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "strip-ansi": { "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "from": "strip-ansi@^3.0.0", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "supports-color": { "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + "from": "supports-color@^2.0.0" } } }, "commander": { "version": "2.9.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "from": "commander@^2.9.0", "dependencies": { "graceful-readlink": { "version": "1.0.1", - "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + "from": "graceful-readlink@>= 1.0.0" } } }, "is-my-json-valid": { - "version": "2.13.1", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", + "version": "2.15.0", + "from": "is-my-json-valid@^2.12.4", "dependencies": { "generate-function": { "version": "2.0.0", - "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + "from": "generate-function@^2.0.0" }, "generate-object-property": { "version": "1.2.0", - "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "from": "generate-object-property@^1.1.0", "dependencies": { "is-property": { "version": "1.0.2", - "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + "from": "is-property@^1.0.0" } } }, "jsonpointer": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + "version": "4.0.1", + "from": "jsonpointer@^4.0.0" }, "xtend": { "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + "from": "xtend@^4.0.0" } } }, "pinkie-promise": { "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "from": "pinkie-promise@^2.0.0", "dependencies": { "pinkie": { "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + "from": "pinkie@^2.0.0" } } } @@ -3456,107 +2818,91 @@ }, "hawk": { "version": "3.1.3", - "from": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "from": "hawk@~3.1.3", "dependencies": { "hoek": { "version": "2.16.3", - "from": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + "from": "hoek@2.x.x" }, "boom": { "version": "2.10.1", - "from": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + "from": "boom@2.x.x" }, "cryptiles": { "version": "2.0.5", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + "from": "cryptiles@2.x.x" }, "sntp": { "version": "1.0.9", - "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + "from": "sntp@1.x.x" } } }, "http-signature": { "version": "1.1.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "from": "http-signature@~1.1.0", "dependencies": { "assert-plus": { "version": "0.2.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" + "from": "assert-plus@^0.2.0" }, "jsprim": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", + "version": "1.3.1", + "from": "jsprim@^1.2.2", "dependencies": { "extsprintf": { "version": "1.0.2", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + "from": "extsprintf@1.0.2" }, "json-schema": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" + "version": "0.2.3", + "from": "json-schema@0.2.3" }, "verror": { "version": "1.3.6", - "from": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + "from": "verror@1.3.6" } } }, "sshpk": { - "version": "1.9.2", - "from": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", + "version": "1.10.2", + "from": "sshpk@^1.7.0", "dependencies": { "asn1": { "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + "from": "asn1@~0.2.3" }, "assert-plus": { "version": "1.0.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "from": "assert-plus@^1.0.0" }, "dashdash": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" + "version": "1.14.1", + "from": "dashdash@^1.12.0" }, "getpass": { "version": "0.1.6", - "from": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" + "from": "getpass@^0.1.1" }, "jsbn": { "version": "0.1.0", - "from": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" + "from": "jsbn@~0.1.0" }, "tweetnacl": { - "version": "0.13.3", - "from": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" + "version": "0.14.5", + "from": "tweetnacl@~0.14.0" }, "jodid25519": { "version": "1.0.2", - "from": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" + "from": "jodid25519@^1.0.0" }, "ecc-jsbn": { "version": "0.1.1", - "from": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" + "from": "ecc-jsbn@~0.1.1" + }, + "bcrypt-pbkdf": { + "version": "1.0.0", + "from": "bcrypt-pbkdf@^1.0.0" } } } @@ -3564,196 +2910,212 @@ }, "is-typedarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "from": "is-typedarray@~1.0.0" }, "isstream": { "version": "0.1.2", - "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "from": "isstream@~0.1.2" }, "json-stringify-safe": { "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "from": "json-stringify-safe@~5.0.1" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.7", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, "oauth-sign": { "version": "0.8.2", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" + "from": "oauth-sign@~0.8.1" }, "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + "version": "6.3.0", + "from": "qs@~6.3.0" }, "stringstream": { "version": "0.0.5", - "from": "stringstream@~0.0.4", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" + "from": "stringstream@~0.0.4" }, "tough-cookie": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" + "version": "2.3.2", + "from": "tough-cookie@~2.3.0", + "dependencies": { + "punycode": { + "version": "1.4.1", + "from": "punycode@^1.4.1" + } + } }, "tunnel-agent": { "version": "0.4.3", - "from": "tunnel-agent@~0.4.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" + "from": "tunnel-agent@~0.4.1" + }, + "uuid": { + "version": "3.0.1", + "from": "uuid@^3.0.0" } } }, "requests": { "version": "0.1.7", - "from": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", + "from": "requests@^0.1.7", "dependencies": { "axo": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz" + "version": "0.0.2", + "from": "axo@0.0.x" }, "eventemitter3": { "version": "1.1.1", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz" + "from": "eventemitter3@1.1.x" }, "extendible": { "version": "0.1.1", - "from": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz" + "from": "extendible@0.1.x" }, "hang": { "version": "1.0.0", - "from": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz" + "from": "hang@1.0.x" }, "loads": { "version": "0.0.4", - "from": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", + "from": "loads@0.0.x", "dependencies": { "failure": { "version": "1.1.1", - "from": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz" + "from": "failure@1.1.x" }, "one-time": { "version": "0.0.4", - "from": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz" + "from": "one-time@0.0.x" }, "xhr-response": { "version": "1.0.1", - "from": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz" + "from": "xhr-response@1.0.x" }, "xhr-status": { "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz" + "from": "xhr-status@1.0.x" } } }, "xhr-send": { "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz" + "from": "xhr-send@1.0.x" } } }, "rimraf": { "version": "2.2.6", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz" + "from": "rimraf@2.2.6" + }, + "rolling-rate-limiter": { + "version": "0.1.4", + "from": "rolling-rate-limiter@git+https://github.com/ShaneKilkelly/rolling-rate-limiter.git#master", + "resolved": "git+https://github.com/ShaneKilkelly/rolling-rate-limiter.git#8a1a2cd8aaf9cd1a75cc81317b7f261157be2149", + "dependencies": { + "microtime-nodejs": { + "version": "1.0.0", + "from": "microtime-nodejs@~1.0.0" + } + } }, "sanitizer": { "version": "0.1.1", - "from": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz" + "from": "sanitizer@0.1.1" }, "sequelize": { - "version": "3.23.6", - "from": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", + "version": "3.30.0", + "from": "sequelize@^3.2.0", "dependencies": { "bluebird": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" + "version": "3.4.7", + "from": "bluebird@^3.3.4" }, "depd": { "version": "1.1.0", - "from": "depd@~1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@^1.1.0" }, "dottie": { "version": "1.1.1", - "from": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz" + "from": "dottie@^1.0.0" }, "generic-pool": { "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" + "from": "generic-pool@2.4.2" }, "inflection": { "version": "1.10.0", - "from": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz" + "from": "inflection@^1.6.0" }, "lodash": { "version": "4.12.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz" + "from": "lodash@4.12.0" }, "moment": { - "version": "2.14.1", - "from": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz" + "version": "2.17.1", + "from": "moment@^2.13.0" }, "moment-timezone": { - "version": "0.5.5", - "from": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz" + "version": "0.5.11", + "from": "moment-timezone@^0.5.4" }, "node-uuid": { "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" + "from": "node-uuid@~1.4.4" }, "retry-as-promised": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", + "version": "2.2.0", + "from": "retry-as-promised@^2.0.0", "dependencies": { + "cross-env": { + "version": "3.1.4", + "from": "cross-env@^3.1.2", + "dependencies": { + "cross-spawn": { + "version": "3.0.1", + "from": "cross-spawn@^3.0.1", + "dependencies": { + "lru-cache": { + "version": "4.0.2", + "from": "lru-cache@^4.0.1", + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "from": "pseudomap@^1.0.1" + }, + "yallist": { + "version": "2.0.0", + "from": "yallist@^2.0.0" + } + } + }, + "which": { + "version": "1.2.12", + "from": "which@^1.2.9", + "dependencies": { + "isexe": { + "version": "1.1.2", + "from": "isexe@^1.1.1" + } + } + } + } + } + } + }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } } @@ -3761,170 +3123,140 @@ }, "semver": { "version": "5.3.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + "from": "semver@^5.0.1" }, "shimmer": { "version": "1.1.0", - "from": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz" + "from": "shimmer@1.1.0" }, "terraformer-wkt-parser": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", + "version": "1.1.2", + "from": "terraformer-wkt-parser@^1.1.0", "dependencies": { "terraformer": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz" + "version": "1.0.7", + "from": "terraformer@~1.0.5" } } }, "toposort-class": { "version": "1.0.1", - "from": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" + "from": "toposort-class@^1.0.1" }, "validator": { - "version": "5.5.0", - "from": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz", - "resolved": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz" + "version": "5.7.0", + "from": "validator@^5.2.0" }, "wkx": { "version": "0.2.0", - "from": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz" + "from": "wkx@0.2.0" } } }, "settings-sharelatex": { "version": "1.0.0", - "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", + "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#v1.0.0", "resolved": "git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", "dependencies": { "coffee-script": { "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + "from": "coffee-script@1.6.0" } } }, "sixpack-client": { "version": "1.0.0", - "from": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz" + "from": "sixpack-client@^1.0.0" }, "temp": { "version": "0.8.3", - "from": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "from": "temp@^0.8.3", "dependencies": { "os-tmpdir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + "version": "1.0.2", + "from": "os-tmpdir@^1.0.0" } } }, "underscore": { "version": "1.6.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" + "from": "underscore@1.6.0" }, "v8-profiler": { "version": "5.6.5", - "from": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", - "resolved": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", + "from": "v8-profiler@^5.2.3", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.1", + "from": "nan@^2.3.2" }, "node-pre-gyp": { - "version": "0.6.29", - "from": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", + "version": "0.6.32", + "from": "node-pre-gyp@^0.6.5", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "nopt": { "version": "3.0.6", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "from": "nopt@~3.0.6", "dependencies": { "abbrev": { "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + "from": "abbrev@1" } } }, "npmlog": { - "version": "3.1.2", - "from": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", + "version": "4.0.2", + "from": "npmlog@^4.0.1", "dependencies": { "are-we-there-yet": { "version": "1.1.2", - "from": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "from": "are-we-there-yet@~1.1.2", "dependencies": { "delegates": { "version": "1.0.0", - "from": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + "from": "delegates@^1.0.0" }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@^2.0.0 || ^1.1.13", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -3932,65 +3264,47 @@ }, "console-control-strings": { "version": "1.1.0", - "from": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + "from": "console-control-strings@~1.1.0" }, "gauge": { - "version": "2.6.0", - "from": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", + "version": "2.7.2", + "from": "gauge@~2.7.1", "dependencies": { "aproba": { "version": "1.0.4", - "from": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" + "from": "aproba@^1.0.3" }, - "has-color": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" + "supports-color": { + "version": "0.2.0", + "from": "supports-color@^0.2.0" }, "has-unicode": { "version": "2.0.1", - "from": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + "from": "has-unicode@^2.0.0" }, "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" + "version": "4.1.1", + "from": "object-assign@^4.1.0" }, "signal-exit": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" + "version": "3.0.2", + "from": "signal-exit@^3.0.0" }, "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", + "version": "1.0.2", + "from": "string-width@^1.0.1", "dependencies": { "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } + "version": "1.1.0", + "from": "code-point-at@^1.0.0" }, "is-fullwidth-code-point": { "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "from": "is-fullwidth-code-point@^1.0.0", "dependencies": { "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + "version": "1.0.1", + "from": "number-is-nan@^1.0.0" } } } @@ -3998,231 +3312,191 @@ }, "strip-ansi": { "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "from": "strip-ansi@^3.0.1", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "wide-align": { "version": "1.1.0", - "from": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" + "from": "wide-align@^1.1.0" } } }, "set-blocking": { "version": "2.0.0", - "from": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "from": "set-blocking@~2.0.0" } } }, "rc": { "version": "1.1.6", - "from": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "from": "rc@~1.1.6", "dependencies": { "deep-extend": { "version": "0.4.1", - "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" + "from": "deep-extend@~0.4.0" }, "ini": { "version": "1.3.4", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" + "from": "ini@~1.3.0" }, "minimist": { "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + "from": "minimist@^1.2.0" }, "strip-json-comments": { "version": "1.0.4", - "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" + "from": "strip-json-comments@~1.0.4" } } }, "rimraf": { "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "from": "rimraf@~2.5.4", "dependencies": { "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "version": "7.1.1", + "from": "glob@^7.0.5", "dependencies": { "fs.realpath": { "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "from": "fs.realpath@^1.0.0" }, "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.2", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0" } } } } }, "semver": { - "version": "5.2.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz" + "version": "5.3.0", + "from": "semver@~5.3.0" }, "tar": { "version": "2.2.1", - "from": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "from": "tar@~2.2.1", "dependencies": { "block-stream": { "version": "0.0.9", - "from": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" + "from": "block-stream@*" }, "fstream": { "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "from": "fstream@^1.0.2", "dependencies": { "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + "version": "4.1.11", + "from": "graceful-fs@^4.1.2" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } }, "tar-pack": { - "version": "3.1.4", - "from": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", + "version": "3.3.0", + "from": "tar-pack@~3.3.0", "dependencies": { "debug": { "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@~2.2.0", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } }, "fstream": { "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "from": "fstream@~1.0.10", "dependencies": { "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + "version": "4.1.11", + "from": "graceful-fs@^4.1.2" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.0" } } }, "fstream-ignore": { "version": "1.0.5", - "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "from": "fstream-ignore@~1.0.5", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.2", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } @@ -4232,62 +3506,51 @@ }, "once": { "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "from": "once@~1.3.3", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.1.5", + "from": "readable-stream@~2.1.4", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } }, "uid-number": { "version": "0.0.6", - "from": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" + "from": "uid-number@~0.0.6" } } } @@ -4297,13 +3560,11 @@ }, "xml2js": { "version": "0.2.0", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", + "from": "xml2js@0.2.0", "dependencies": { "sax": { "version": "1.2.1", - "from": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" + "from": "sax@>=0.1.1" } } } From a924794a5a599e4a4f9260a64327f8373971d0aa Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 25 Jan 2017 13:51:33 +0000 Subject: [PATCH 35/41] Add expandable text area directive; apply it to review panel text areas. --- .../app/views/project/editor/review-panel.jade | 3 +++ .../coffee/directives/expandableTextArea.coffee | 17 +++++++++++++++++ services/web/public/coffee/ide.coffee | 1 + 3 files changed, 21 insertions(+) create mode 100644 services/web/public/coffee/directives/expandableTextArea.coffee diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index b16230c24c..46aa4b96d1 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -193,6 +193,7 @@ script(type='text/ng-template', id='commentEntryTemplate') ) {{ comment.user.name }}:  | {{ comment.content }} textarea.rp-comment-input( + expandable-text-area ng-if="comment.editing" ng-model="comment.content" ng-keypress="saveEditOnEnter($event, comment);" @@ -219,6 +220,7 @@ script(type='text/ng-template', id='commentEntryTemplate') i.fa.fa-spinner.fa-spin .rp-comment-reply(ng-if="permissions.comment") textarea.rp-comment-input( + expandable-text-area ng-model="entry.replyContent" ng-keypress="handleCommentReplyKeyPress($event);" stop-propagation="click" @@ -309,6 +311,7 @@ script(type='text/ng-template', id='addCommentEntryTemplate') div(ng-if="state.isAdding") .rp-new-comment textarea.rp-comment-input( + expandable-text-area ng-model="state.content" ng-keypress="handleCommentKeyPress($event);" placeholder="Add your comment here" diff --git a/services/web/public/coffee/directives/expandableTextArea.coffee b/services/web/public/coffee/directives/expandableTextArea.coffee new file mode 100644 index 0000000000..8010ae68dc --- /dev/null +++ b/services/web/public/coffee/directives/expandableTextArea.coffee @@ -0,0 +1,17 @@ +define [ + "base" +], (App) -> + App.directive "expandableTextArea", () -> + restrict: "A" + link: (scope, el) -> + resetHeight = () -> + console.log el.val() + el.css("height", "auto") + el.css("height", el.prop("scrollHeight")) + + scope.$watch (() -> el.val()), resetHeight + + resetHeight() + + + \ No newline at end of file diff --git a/services/web/public/coffee/ide.coffee b/services/web/public/coffee/ide.coffee index cf9e8abe66..08531f993a 100644 --- a/services/web/public/coffee/ide.coffee +++ b/services/web/public/coffee/ide.coffee @@ -28,6 +28,7 @@ define [ "directives/onEnter" "directives/stopPropagation" "directives/rightClick" + "directives/expandableTextArea" "services/queued-http" "filters/formatDate" "main/event" From 406181b05dba3f5a140567cc1b067b20c5a3cdf4 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 25 Jan 2017 15:49:38 +0100 Subject: [PATCH 36/41] Remove a console.log --- services/web/public/coffee/directives/expandableTextArea.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/services/web/public/coffee/directives/expandableTextArea.coffee b/services/web/public/coffee/directives/expandableTextArea.coffee index 8010ae68dc..8f646c10a7 100644 --- a/services/web/public/coffee/directives/expandableTextArea.coffee +++ b/services/web/public/coffee/directives/expandableTextArea.coffee @@ -5,7 +5,6 @@ define [ restrict: "A" link: (scope, el) -> resetHeight = () -> - console.log el.val() el.css("height", "auto") el.css("height", el.prop("scrollHeight")) From abb4ef14d866bb091ba312579e11eb7841bd9a2a Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 26 Jan 2017 15:08:30 +0100 Subject: [PATCH 37/41] Streamline the update/rendering process to not do extra work --- .../views/project/editor/review-panel.jade | 1 - .../track-changes/TrackChangesManager.coffee | 55 ++++++++++++------- .../controllers/ReviewPanelController.coffee | 6 +- 3 files changed, 39 insertions(+), 23 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 9b31516b3f..590c1a6776 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -41,7 +41,6 @@ .rp-entry-list-inner .rp-entry-wrapper( ng-repeat="(entry_id, entry) in reviewPanel.entries[editor.open_doc_id]" - ng-if="!(entry.type === 'comment' && reviewPanel.commentThreads[entry.thread_id].resolved === true)" ) div(ng-if="entry.type === 'insert' || entry.type === 'delete'") change-entry( diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index 2d57100cc5..ed15da2958 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -35,8 +35,8 @@ define [ @$scope.$on "comment:remove", (e, comment_id) => @removeCommentId(comment_id) - @$scope.$on "comment:resolve_thread", (e, thread_id) => - @resolveCommentByThreadId(thread_id) + @$scope.$on "comment:resolve_threads", (e, thread_ids) => + @resolveCommentByThreadIds(thread_ids) @$scope.$on "comment:unresolve_thread", (e, thread_id) => @unresolveCommentByThreadId(thread_id) @@ -105,29 +105,45 @@ define [ # ace has updated @rangesTracker.on "insert:added", (change) => sl_console.log "[insert:added]", change - setTimeout () => @_onInsertAdded(change) + setTimeout () => + @_onInsertAdded(change) + @broadcastChange() @rangesTracker.on "insert:removed", (change) => sl_console.log "[insert:removed]", change - setTimeout () => @_onInsertRemoved(change) + setTimeout () => + @_onInsertRemoved(change) + @broadcastChange() @rangesTracker.on "delete:added", (change) => sl_console.log "[delete:added]", change - setTimeout () => @_onDeleteAdded(change) + setTimeout () => + @_onDeleteAdded(change) + @broadcastChange() @rangesTracker.on "delete:removed", (change) => sl_console.log "[delete:removed]", change - setTimeout () => @_onDeleteRemoved(change) + setTimeout () => + @_onDeleteRemoved(change) + @broadcastChange() @rangesTracker.on "changes:moved", (changes) => sl_console.log "[changes:moved]", changes - setTimeout () => @_onChangesMoved(changes) + setTimeout () => + @_onChangesMoved(changes) + @broadcastChange() @rangesTracker.on "comment:added", (comment) => sl_console.log "[comment:added]", comment - setTimeout () => @_onCommentAdded(comment) + setTimeout () => + @_onCommentAdded(comment) + @broadcastChange() @rangesTracker.on "comment:moved", (comment) => sl_console.log "[comment:moved]", comment - setTimeout () => @_onCommentMoved(comment) + setTimeout () => + @_onCommentMoved(comment) + @broadcastChange() @rangesTracker.on "comment:removed", (comment) => sl_console.log "[comment:removed]", comment - setTimeout () => @_onCommentRemoved(comment) + setTimeout () => + @_onCommentRemoved(comment) + @broadcastChange() @rangesTracker.on "clear", () => @clearAnnotations() @@ -150,6 +166,8 @@ define [ for comment in @rangesTracker.comments @_onCommentAdded(comment) + + @broadcastChange() addComment: (offset, content, thread_id) -> op = { c: content, p: offset, t: thread_id } @@ -190,15 +208,20 @@ define [ removeCommentId: (comment_id) -> @rangesTracker.removeCommentId(comment_id) - resolveCommentByThreadId: (thread_id) -> + resolveCommentByThreadIds: (thread_ids) -> + resolve_ids = {} + for id in thread_ids + resolve_ids[id] = true for comment in @rangesTracker?.comments or [] - if comment.op.t == thread_id + if resolve_ids[comment.op.t] @_onCommentRemoved(comment) + @broadcastChange() unresolveCommentByThreadId: (thread_id) -> for comment in @rangesTracker?.comments or [] if comment.op.t == thread_id @_onCommentAdded(comment) + @broadcastChange() checkMapping: () -> # TODO: reintroduce this check @@ -303,7 +326,6 @@ define [ background_marker_id = session.addMarker background_range, "track-changes-marker track-changes-added-marker", "text" callout_marker_id = @_createCalloutMarker(start, "track-changes-added-marker-callout") @changeIdToMarkerIdMap[change.id] = { background_marker_id, callout_marker_id } - @broadcastChange() _onDeleteAdded: (change) -> position = @_shareJsOffsetToAcePosition(change.op.p) @@ -318,7 +340,6 @@ define [ callout_marker_id = @_createCalloutMarker(position, "track-changes-deleted-marker-callout") @changeIdToMarkerIdMap[change.id] = { background_marker_id, callout_marker_id } - @broadcastChange() _onInsertRemoved: (change) -> {background_marker_id, callout_marker_id} = @changeIdToMarkerIdMap[change.id] @@ -326,7 +347,6 @@ define [ session = @editor.getSession() session.removeMarker background_marker_id session.removeMarker callout_marker_id - @broadcastChange() _onDeleteRemoved: (change) -> {background_marker_id, callout_marker_id} = @changeIdToMarkerIdMap[change.id] @@ -334,7 +354,6 @@ define [ session = @editor.getSession() session.removeMarker background_marker_id session.removeMarker callout_marker_id - @broadcastChange() _onCommentAdded: (comment) -> if @rangesTracker.resolvedThreadIds[comment.op.t] @@ -350,7 +369,6 @@ define [ background_marker_id = session.addMarker background_range, "track-changes-marker track-changes-comment-marker", "text" callout_marker_id = @_createCalloutMarker(start, "track-changes-comment-marker-callout") @changeIdToMarkerIdMap[comment.id] = { background_marker_id, callout_marker_id } - @broadcastChange() _onCommentRemoved: (comment) -> if @changeIdToMarkerIdMap[comment.id]? @@ -360,7 +378,6 @@ define [ session = @editor.getSession() session.removeMarker background_marker_id session.removeMarker callout_marker_id - @broadcastChange() _aceRangeToShareJs: (range) -> lines = @editor.getSession().getDocument().getLines 0, range.row @@ -385,14 +402,12 @@ define [ end = start @_updateMarker(change.id, start, end) @editor.renderer.updateBackMarkers() - @broadcastChange() _onCommentMoved: (comment) -> start = @_shareJsOffsetToAcePosition(comment.op.p) end = @_shareJsOffsetToAcePosition(comment.op.p + comment.op.c.length) @_updateMarker(comment.id, start, end) @editor.renderer.updateBackMarkers() - @broadcastChange() _updateMarker: (change_id, start, end) -> return if !@changeIdToMarkerIdMap[change_id]? diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 5dc2cd3715..45b2e7294e 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -222,8 +222,10 @@ define [ delete delete_changes[comment.id] if $scope.reviewPanel.resolvedThreadIds[comment.op.t] new_comment = resolvedComments[comment.id] ?= {} + delete entries[comment.id] else new_comment = entries[comment.id] ?= {} + delete resolvedComments[comment.id] new_entry = { type: "comment" thread_id: comment.op.t @@ -356,7 +358,7 @@ define [ thread.resolved_by_user = formatUser(user) thread.resolved_at = new Date() $scope.reviewPanel.resolvedThreadIds[thread_id] = true - $scope.$broadcast "comment:resolve_thread", thread_id + $scope.$broadcast "comment:resolve_threads", [thread_id] _onCommentReopened = (thread_id) -> thread = getThread(thread_id) @@ -477,9 +479,9 @@ define [ for comment in thread.messages formatComment(comment) if thread.resolved_by_user? - $scope.$broadcast "comment:resolve_thread", thread_id thread.resolved_by_user = formatUser(thread.resolved_by_user) $scope.reviewPanel.resolvedThreadIds[thread_id] = true + $scope.$broadcast "comment:resolve_threads", [thread_id] $scope.reviewPanel.commentThreads = threads $timeout () -> $scope.$broadcast "review-panel:layout" From 76328ff93f2292eb1e59ea7ebe9dc70197cbcfd1 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 26 Jan 2017 15:12:59 +0100 Subject: [PATCH 38/41] Tell other clients when threads are deleted --- .../review-panel/controllers/ReviewPanelController.coffee | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 45b2e7294e..ac687386f8 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -66,6 +66,10 @@ define [ ide.socket.on "reopen-thread", (thread_id) -> _onCommentReopened(thread_id) + ide.socket.on "delete-thread", (thread_id) -> + _onThreadDeleted(thread_id) + $scope.$apply () -> + ide.socket.on "edit-message", (thread_id, message_id, content) -> _onCommentEdited(thread_id, message_id, content) $scope.$apply () -> @@ -372,6 +376,7 @@ define [ _onThreadDeleted = (thread_id) -> delete $scope.reviewPanel.resolvedThreadIds[thread_id] delete $scope.reviewPanel.commentThreads[thread_id] + $scope.$broadcast "comment:remove", thread_id _onCommentEdited = (thread_id, comment_id, content) -> thread = getThread(thread_id) @@ -396,7 +401,6 @@ define [ 'X-CSRF-Token': window.csrfToken } }) - $scope.$broadcast "comment:remove", entry_id event_tracking.sendMB "rp-comment-delete" $scope.saveEdit = (thread_id, comment) -> From 68aab6e05cf196afd49263c07227660565123692 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 26 Jan 2017 16:13:21 +0100 Subject: [PATCH 39/41] Don't use code check on .bib files --- .../web/public/coffee/ide/editor/directives/aceEditor.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 41c70b4dee..248d8bec38 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -279,7 +279,7 @@ define [ session.setUseWrapMode(true) # use syntax validation only when explicitly set - if scope.syntaxValidation? and syntaxValidationEnabled + if scope.syntaxValidation? and syntaxValidationEnabled and !scope.fileName.match(/\.bib$/) session.setOption("useWorker", scope.syntaxValidation); # now attach session to editor From d9b774bb9b02e8c3cd2f08bac8fea6d9c9ca53fe Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 27 Jan 2017 17:12:17 +0100 Subject: [PATCH 40/41] Sycn track changes based on doc state, not editor state --- services/web/public/coffee/ide/editor/Document.coffee | 3 +++ services/web/public/coffee/ide/editor/EditorManager.coffee | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index 9d7eca813a..1de01b5467 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -84,6 +84,9 @@ define [ setTrackingChanges: (track_changes) -> @doc.track_changes = track_changes + getTrackingChanges: () -> + !!@doc.track_changes + setTrackChangesIdSeeds: (id_seeds) -> @doc.track_changes_id_seeds = id_seeds diff --git a/services/web/public/coffee/ide/editor/EditorManager.coffee b/services/web/public/coffee/ide/editor/EditorManager.coffee index 22fcef1a69..9b658ac87b 100644 --- a/services/web/public/coffee/ide/editor/EditorManager.coffee +++ b/services/web/public/coffee/ide/editor/EditorManager.coffee @@ -162,7 +162,7 @@ define [ @_syncTimeout = null want = @$scope.editor.wantTrackChanges - have = @$scope.editor.trackChanges + have = doc.getTrackingChanges() if want == have return From 30618d33db61295a9c0c9f2467a80a25fe74abb7 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 27 Jan 2017 17:13:11 +0100 Subject: [PATCH 41/41] Add in extra check to set ui state --- services/web/public/coffee/ide/editor/EditorManager.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/coffee/ide/editor/EditorManager.coffee b/services/web/public/coffee/ide/editor/EditorManager.coffee index 9b658ac87b..3b6672fae8 100644 --- a/services/web/public/coffee/ide/editor/EditorManager.coffee +++ b/services/web/public/coffee/ide/editor/EditorManager.coffee @@ -164,6 +164,7 @@ define [ want = @$scope.editor.wantTrackChanges have = doc.getTrackingChanges() if want == have + @$scope.editor.trackChanges = want return do tryToggle = () =>