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()