summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bucky/app/api.js2
-rw-r--r--bucky/app/bucky.js9
-rw-r--r--bucky/app/site.js17
-rw-r--r--bucky/search/lexicon.js12
-rw-r--r--bucky/search/middleware.js19
-rw-r--r--bucky/search/search.js113
-rw-r--r--bucky/util/auth.js10
-rw-r--r--package-lock.json572
-rw-r--r--package.json23
-rw-r--r--public/assets/css/bucky.css4
-rw-r--r--public/assets/js/lib/views/index/countdown.js48
-rw-r--r--public/assets/js/lib/views/index/index.js1
-rw-r--r--public/favicon.icobin3638 -> 15406 bytes
-rw-r--r--views/pages/details.ejs4
-rw-r--r--views/pages/index.ejs1
-rw-r--r--views/partials/scripts.ejs1
16 files changed, 507 insertions, 329 deletions
diff --git a/bucky/app/api.js b/bucky/app/api.js
index b4231e7..75cdbd7 100644
--- a/bucky/app/api.js
+++ b/bucky/app/api.js
@@ -163,8 +163,8 @@ function route (app){
privacy.checkThreadPrivacy,
multer.array("files"),
bucky.verifyFilesOrComment,
- bucky.createOptionalFiles,
bucky.createOptionalComment,
+ bucky.createOptionalFiles,
bucky.bumpThreadRevisions,
function(req, res){
res.json({
diff --git a/bucky/app/bucky.js b/bucky/app/bucky.js
index 3824c5e..8d9839f 100644
--- a/bucky/app/bucky.js
+++ b/bucky/app/bucky.js
@@ -413,6 +413,7 @@ var bucky = module.exports = {
res.json({ error: "no comment" })
return
}
+ console.log("in create comment")
var data = {
thread: res.thread.get('id'),
parent_id: req.body.parent_id || -1,
@@ -503,9 +504,15 @@ var bucky = module.exports = {
privacy: false,
storage: process.env.S3_BUCKET,
}
+ req.body.comment = url+"\n"+file.originalname
db.createFile(data).then(function(file){
resolve(file)
- }).catch( (err) => reject(err) )
+ }).catch( (err) => reject(err) ).then(
+ function(){
+ console.log("about to call createComment")
+ bucky.createComment(req, res, function(){})
+
+ })
}
})
})
diff --git a/bucky/app/site.js b/bucky/app/site.js
index d38b094..0d35fd6 100644
--- a/bucky/app/site.js
+++ b/bucky/app/site.js
@@ -13,7 +13,10 @@ var favicon = require('serve-favicon')
var passport = require('passport')
var sessionstore = require('sessionstore')
var session = require('express-session')
-var MongoStore = require('connect-mongo')(session);
+var redis = require('redis')
+var RedisStore = require('connect-redis')(session)
+var redisClient = redis.createClient()
+
var upload = require('../util/upload')
var app, server
@@ -45,16 +48,10 @@ site.init = function(){
saveUninitialized: false,
}
if (!process.env.SESSIONS_IN_MEMORY) {
- sessionSettings.store = new MongoStore({
- url: 'mongodb://127.0.0.1:28108/buckySessionDb-'+ process.env.DB_NAME
- // type: 'mongodb',
- // host: 'localhost',
- // port: 27017,
- // dbName: 'buckySessionDb',
- // collectionName: 'sessions',
- // timeout: 10000,
- })
+ sessionSettings.store =
+ new RedisStore({ client: redisClient })
}
+
app.use(session(sessionSettings))
upload.init()
federate.route(app)
diff --git a/bucky/search/lexicon.js b/bucky/search/lexicon.js
index dc1d7ab..ea99535 100644
--- a/bucky/search/lexicon.js
+++ b/bucky/search/lexicon.js
@@ -1,10 +1,8 @@
require('dotenv').load();
var STOPWORDS = require('./stopwords')
-var bdb = require('./bdb')
var db = require('../db')
-
-var search_db = bdb('search')
+var redisClient = require('./redis-client');
var lexicon = {}
var lex_counts = {}
@@ -26,6 +24,7 @@ function build_index(cb) {
return { total, unique }
})
}
+
function parse_threads() {
return db.Thread.where('id', '>', 1).fetchAll().then( (threads) => {
console.log('got threads', threads.length)
@@ -41,8 +40,7 @@ function parse_comments() {
return db.Comment.where('thread', '>', 1).fetchAll().then( (comments) => {
console.log('got comments', comments.length)
comments.forEach( (comment) => {
- total += parse_terms({
- string: comment.get('comment').toString(),
+ total += parse_terms({ string: comment.get('comment').toString(),
thread: comment.get('thread'),
comment: comment.get('id'),
})
@@ -107,7 +105,7 @@ function lexicon_store () {
put_total += 1
// if (put_total > 10) return
// console.log(term)
- search_db.put(term, serialized)
+ redisClient.set(term, serialized)
})
}
function serialize_matches (term) {
@@ -126,4 +124,4 @@ function serialize_matches (term) {
})
if (!serialized_matches.length) return
return serialized_matches.join(',')
-} \ No newline at end of file
+}
diff --git a/bucky/search/middleware.js b/bucky/search/middleware.js
index 0cca05c..58ac4c8 100644
--- a/bucky/search/middleware.js
+++ b/bucky/search/middleware.js
@@ -7,12 +7,19 @@ var lexicon = require('./lexicon')
module.exports = {
search: function (req, res, next) {
- res.search = search.search(req.query.query, req.query.start, req.query.limit)
- if (! res.search) {
- res.sendStatus(400)
- return
- }
- next()
+ search.search(
+ req.query.query,
+ req.query.start,
+ req.query.limit,
+ function(search_results){
+ res.search = search_results
+ if (! res.search) {
+ res.sendStatus(400)
+ return
+ }
+ next()
+ }
+ )
},
getThreads: function (req, res, next){
diff --git a/bucky/search/search.js b/bucky/search/search.js
index 1a56f53..bde1ad9 100644
--- a/bucky/search/search.js
+++ b/bucky/search/search.js
@@ -1,5 +1,8 @@
var db = require('../db')
-var bdb = require('./bdb')('search')
+var eachSeries = require('async/eachSeries');
+var redisClient = require('./redis-client.js')
+const { promisify } = require("util");
+const lookupAsync = promisify(redisClient.get).bind(redisClient);
var STOPWORDS = require('./stopwords')
var wordRegexp = new RegExp("[^a-z0-9]+", 'g');
@@ -8,11 +11,9 @@ function parse_terms (s) {
}
function cmp (a,b){ return (a<b)?-1:(a===b)?0:1 }
-function find_term(term) {
- var res = bdb.get(term).toString()
- // console.log(res)
- if (! res.length) return []
- var matches = res.split(",").map((s) => {
+function split_results(data) {
+ if (! data.length) return []
+ var matches = data.split(",").map((s) => {
if (! s.length) return;
var partz = s.split(" ")
return {
@@ -22,11 +23,11 @@ function find_term(term) {
strength: parseInt(partz[3]) || 1,
}
})
- // console.log(matches)
return matches
}
-function search (query, start, limit) {
+function search (query, start, limit, cb) {
+
if (!query) return
start = parseInt(start) || 0;
limit = parseInt(limit) || 10;
@@ -40,50 +41,62 @@ function search (query, start, limit) {
var file_ids = []
var results = []
- terms.forEach((term) => {
- if (STOPWORDS.has(term)) return;
- var results = find_term(term);
- if (!results) return;
- results.forEach((result) => {
- var score = scores[result.thread] = scores[result.thread] || { count: 0, strength: 0 }
- score.thread = score.thread || parseInt(result.thread)
- score.comment = score.comment || parseInt(result.comment)
- score.file = score.file || parseInt(result.file)
- score.strength += parseFloat(result.strength)
- score.count += 1
- })
- })
- total = Object.keys(scores).length
- Object.values(scores).sort((b,a) => {
- // if (a.count !== b.count) {
- // return cmp(a.count, b.count)
- // }
- return cmp(a.strength, b.strength)
- }).some((match, i) => {
- if (i < start) return false
- if (to_display-- === 0) return true
- results.push(match)
- // console.log(match)
- thread_ids.push(match.thread)
- if (match.comment) comment_ids.push(match.comment)
- if (match.file) file_ids.push(match.file)
- return false
+
+ console.log(terms)
+ eachSeries(
+ terms,
+ function(term, callback){
+ console.log(term);
+ if (STOPWORDS.has(term)) return;
+ console.log("howdy")
+ redisClient.get(term, function(err, results){
+// if (!results) return callback();
+
+ results = split_results(results)
+ results.forEach((result) => {
+ //this is a reference, mutating scores
+ var score = scores[result.thread] = scores[result.thread] || { count: 0, strength: 0 }
+ score.thread = score.thread || parseInt(result.thread)
+ score.comment = score.comment || parseInt(result.comment)
+ score.file = score.file || parseInt(result.file)
+ score.strength += parseFloat(result.strength)
+ score.count += 1
+ })
+ callback()
+ })
+ },
+ function() {
+ total = Object.keys(scores).length
+ Object.values(scores).sort((b,a) => {
+ return cmp(a.strength, b.strength)
+ }).some((match, i) => {
+ if (i < start) return false
+ if (to_display-- === 0) return true
+ results.push(match)
+ // console.log(match)
+ thread_ids.push(match.thread)
+ if (match.comment) comment_ids.push(match.comment)
+ if (match.file) file_ids.push(match.file)
+ return false
+ })
+ //console.log(results)
+ redisClient.quit()
+ cb( {
+ meta: {
+ query: query,
+ terms: terms,
+ start: start,
+ next: start + limit,
+ limit: limit,
+ total: total,
+ },
+ results: results,
+ thread_ids: thread_ids,
+ comment_ids: comment_ids,
+ file_ids: file_ids,
+ });
})
- return {
- meta: {
- query: query,
- terms: terms,
- start: start,
- next: start + limit,
- limit: limit,
- total: total,
- },
- results: results,
- thread_ids: thread_ids,
- comment_ids: comment_ids,
- file_ids: file_ids,
- };
}
module.exports = { search: search }
diff --git a/bucky/util/auth.js b/bucky/util/auth.js
index d457704..709e591 100644
--- a/bucky/util/auth.js
+++ b/bucky/util/auth.js
@@ -24,11 +24,11 @@ var auth = module.exports = {
title: "login"
})
})
- app.get("/signup", function(req, res){
- res.render("pages/signup", {
- title: "signup"
- })
- })
+// app.get("/signup", function(req, res){
+// res.render("pages/signup", {
+// title: "signup"
+// })
+// })
app.get("/logout", auth.logout)
app.put("/api/signup",
diff --git a/package-lock.json b/package-lock.json
index d0bc7b0..839d914 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,12 +10,12 @@
"integrity": "sha512-YXJqp9gdHcZKAmBY/WnwFpPtNQp2huD/ME2YMurH2YHJvxrVzYsmpKw/pb7yINArRpp8E++fwbQd3ajYXGA45Q=="
},
"accepts": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
- "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
"requires": {
- "mime-types": "~2.1.18",
- "negotiator": "0.6.1"
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
}
},
"ansi-styles": {
@@ -77,12 +77,9 @@
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
},
"async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz",
- "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==",
- "requires": {
- "lodash": "^4.17.11"
- }
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
+ "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
},
"atob": {
"version": "2.1.2",
@@ -163,9 +160,12 @@
}
},
"bindings": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
- "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw=="
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "requires": {
+ "file-uri-to-path": "1.0.0"
+ }
},
"bluebird": {
"version": "3.5.3",
@@ -178,55 +178,69 @@
"integrity": "sha1-glxBB/f6eJN47hsNhr4FA9esdDs="
},
"body-parser": {
- "version": "1.18.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
- "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+ "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
"requires": {
- "bytes": "3.0.0",
+ "bytes": "3.1.0",
"content-type": "~1.0.4",
"debug": "2.6.9",
"depd": "~1.1.2",
- "http-errors": "~1.6.3",
- "iconv-lite": "0.4.23",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
"on-finished": "~2.3.0",
- "qs": "6.5.2",
- "raw-body": "2.3.3",
- "type-is": "~1.6.16"
+ "qs": "6.7.0",
+ "raw-body": "2.4.0",
+ "type-is": "~1.6.17"
},
"dependencies": {
+ "bytes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+ },
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
+ "http-errors": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ }
+ },
"iconv-lite": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
- "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
- "mime-db": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
- "mime-types": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
- "requires": {
- "mime-db": "~1.33.0"
- }
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"type-is": {
- "version": "1.6.16",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
- "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"requires": {
"media-typer": "0.3.0",
- "mime-types": "~2.1.18"
+ "mime-types": "~2.1.24"
}
}
}
@@ -433,17 +447,32 @@
}
},
"connect-mongo": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/connect-mongo/-/connect-mongo-2.0.1.tgz",
- "integrity": "sha512-ghBvVq0SA0SkTFsbAB8HdF1+uoHdFJICSlrTklNloMKXuRpX9IuVBnG0DlKnXBZSQI0Joyaq22cazsrV9+5g2A==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/connect-mongo/-/connect-mongo-2.0.3.tgz",
+ "integrity": "sha512-Vs+QZ/6X6gbCrP1Ls7Oh/wlyY6pgpbPSrUKF5yRT+zd+4GZPNbjNquxquZ+Clv2+03HBXE7T4lVM0PUcaBhihg==",
"requires": {
"mongodb": "^2.0.36"
}
},
+ "connect-redis": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-5.0.0.tgz",
+ "integrity": "sha512-R4nTW5uXeG5s6zr/q4abmtcdloglZrL/A3cpa0JU0RLFJU4mTR553HUY8OZ0ngeySkGDclwQ5xmCcjjKkxdOSg=="
+ },
"content-disposition": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
- "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
},
"content-type": {
"version": "1.0.4",
@@ -456,9 +485,9 @@
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
},
"cookie-parser": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz",
- "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=",
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.4.tgz",
+ "integrity": "sha512-lo13tqF3JEtFO7FyA49CqbhaFkskRJ0u/UAiINgrIXeRCY41c88/zxtrECl8AKH3B0hj9q10+h3Kt8I7KlW4tw==",
"requires": {
"cookie": "0.3.1",
"cookie-signature": "1.0.6"
@@ -484,51 +513,63 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
- "crc": {
- "version": "3.4.4",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz",
- "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms="
- },
"create-error": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/create-error/-/create-error-0.3.1.tgz",
"integrity": "sha1-aYECRaYp5lRDK/BDdzYAA6U1GiM="
},
"csrf": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.6.tgz",
- "integrity": "sha1-thEg3c7q/JHnbtUxO7XAsmZ7cQo=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.1.0.tgz",
+ "integrity": "sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==",
"requires": {
"rndm": "1.2.0",
- "tsscmp": "1.0.5",
- "uid-safe": "2.1.4"
+ "tsscmp": "1.0.6",
+ "uid-safe": "2.1.5"
}
},
"csurf": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz",
- "integrity": "sha1-SdLGkl/87Ht95VlZfBU/pTM2QTM=",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.10.0.tgz",
+ "integrity": "sha512-fh725p0R83wA5JukCik5hdEko/LizW/Vl7pkKDa1WJUVCosg141mqaAWCScB+nkEaRMFMGbutHMOr6oBNc/j9A==",
"requires": {
"cookie": "0.3.1",
"cookie-signature": "1.0.6",
- "csrf": "~3.0.3",
- "http-errors": "~1.5.0"
+ "csrf": "3.1.0",
+ "http-errors": "~1.7.2"
},
"dependencies": {
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
"http-errors": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz",
- "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=",
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
"requires": {
- "inherits": "2.0.3",
- "setprototypeof": "1.0.2",
- "statuses": ">= 1.3.1 < 2"
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
}
},
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
"setprototypeof": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz",
- "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
}
}
},
@@ -582,6 +623,11 @@
}
}
},
+ "denque": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz",
+ "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ=="
+ },
"depd": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
@@ -635,9 +681,9 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"ejs": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz",
- "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ=="
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.1.tgz",
+ "integrity": "sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ=="
},
"encodeurl": {
"version": "1.0.2",
@@ -718,59 +764,79 @@
}
},
"express": {
- "version": "4.16.4",
- "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
- "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
+ "version": "4.17.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+ "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
"requires": {
- "accepts": "~1.3.5",
+ "accepts": "~1.3.7",
"array-flatten": "1.1.1",
- "body-parser": "1.18.3",
- "content-disposition": "0.5.2",
+ "body-parser": "1.19.0",
+ "content-disposition": "0.5.3",
"content-type": "~1.0.4",
- "cookie": "0.3.1",
+ "cookie": "0.4.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "~1.1.2",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.1.1",
+ "finalhandler": "~1.1.2",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "~2.3.0",
- "parseurl": "~1.3.2",
+ "parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.4",
- "qs": "6.5.2",
- "range-parser": "~1.2.0",
+ "proxy-addr": "~2.0.5",
+ "qs": "6.7.0",
+ "range-parser": "~1.2.1",
"safe-buffer": "5.1.2",
- "send": "0.16.2",
- "serve-static": "1.13.2",
- "setprototypeof": "1.1.0",
- "statuses": "~1.4.0",
- "type-is": "~1.6.16",
+ "send": "0.17.1",
+ "serve-static": "1.14.1",
+ "setprototypeof": "1.1.1",
+ "statuses": "~1.5.0",
+ "type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"dependencies": {
+ "cookie": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+ "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+ },
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+ },
"type-is": {
- "version": "1.6.16",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
- "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"requires": {
"media-typer": "0.3.0",
- "mime-types": "~2.1.18"
+ "mime-types": "~2.1.24"
}
}
}
@@ -781,28 +847,34 @@
"integrity": "sha1-n91TI5rQpvPgdvVFhdiiJDB1+zY="
},
"express-session": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.15.6.tgz",
- "integrity": "sha512-r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==",
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.16.2.tgz",
+ "integrity": "sha512-oy0sRsdw6n93E9wpCNWKRnSsxYnSDX9Dnr9mhZgqUEEorzcq5nshGYSZ4ZReHFhKQ80WI5iVUUSPW7u3GaKauw==",
"requires": {
"cookie": "0.3.1",
"cookie-signature": "1.0.6",
- "crc": "3.4.4",
"debug": "2.6.9",
- "depd": "~1.1.1",
- "on-headers": "~1.0.1",
- "parseurl": "~1.3.2",
- "uid-safe": "~2.1.5",
- "utils-merge": "1.0.1"
+ "depd": "~2.0.0",
+ "on-headers": "~1.0.2",
+ "parseurl": "~1.3.3",
+ "safe-buffer": "5.1.2",
+ "uid-safe": "~2.1.5"
},
"dependencies": {
- "uid-safe": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
- "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
- "requires": {
- "random-bytes": "~1.0.0"
- }
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
}
}
},
@@ -897,6 +969,11 @@
"pend": "~1.2.0"
}
},
+ "file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
+ },
"fill-range": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -919,17 +996,29 @@
}
},
"finalhandler": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
- "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
"requires": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "~2.3.0",
- "parseurl": "~1.3.2",
- "statuses": "~1.4.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
"unpipe": "~1.0.0"
+ },
+ "dependencies": {
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+ }
}
},
"findup-sync": {
@@ -1156,9 +1245,9 @@
"integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ="
},
"ipaddr.js": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
- "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
+ "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"is-absolute": {
"version": "1.0.0",
@@ -1495,16 +1584,16 @@
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
},
"mime-db": {
- "version": "1.37.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
- "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
+ "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
},
"mime-types": {
- "version": "2.1.21",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
- "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
+ "version": "2.1.24",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
+ "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
"requires": {
- "mime-db": "~1.37.0"
+ "mime-db": "1.40.0"
}
},
"minimatch": {
@@ -1595,9 +1684,9 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"multer": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.1.tgz",
- "integrity": "sha512-zzOLNRxzszwd+61JFuAo0fxdQfvku12aNJgnla0AQ+hHxFmfc/B7jBVuPr5Rmvu46Jze/iJrFpSOsD7afO8SDw==",
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz",
+ "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==",
"requires": {
"append-field": "^1.0.0",
"busboy": "^0.2.11",
@@ -1704,9 +1793,9 @@
}
},
"nan": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
- "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA=="
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
},
"nanomatch": {
"version": "1.2.13",
@@ -1727,9 +1816,9 @@
}
},
"negotiator": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
- "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
"node-fetch": {
"version": "1.7.3",
@@ -1823,9 +1912,9 @@
}
},
"on-headers": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
- "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
},
"once": {
"version": "1.4.0",
@@ -1946,18 +2035,18 @@
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
},
"proxy-addr": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
- "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
+ "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
"requires": {
"forwarded": "~0.1.2",
- "ipaddr.js": "1.8.0"
+ "ipaddr.js": "1.9.0"
}
},
"qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
},
"random-bytes": {
"version": "1.0.0",
@@ -1965,28 +2054,60 @@
"integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
},
"range-parser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
},
"raw-body": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
- "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+ "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
"requires": {
- "bytes": "3.0.0",
- "http-errors": "1.6.3",
- "iconv-lite": "0.4.23",
+ "bytes": "3.1.0",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"dependencies": {
+ "bytes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "http-errors": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ }
+ },
"iconv-lite": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
- "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
+ },
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
}
}
},
@@ -2035,6 +2156,35 @@
"esprima": "~1.0.4"
}
},
+ "redis": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/redis/-/redis-3.0.2.tgz",
+ "integrity": "sha512-PNhLCrjU6vKVuMOyFu7oSP296mwBkcE6lrAjruBYG5LgdSqtRBoVQIylrMyVZD/lkF24RSNNatzvYag6HRBHjQ==",
+ "requires": {
+ "denque": "^1.4.1",
+ "redis-commands": "^1.5.0",
+ "redis-errors": "^1.2.0",
+ "redis-parser": "^3.0.0"
+ }
+ },
+ "redis-commands": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.5.0.tgz",
+ "integrity": "sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg=="
+ },
+ "redis-errors": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
+ "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60="
+ },
+ "redis-parser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
+ "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=",
+ "requires": {
+ "redis-errors": "^1.0.0"
+ }
+ },
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
@@ -2154,9 +2304,9 @@
"integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto="
},
"send": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
- "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
"requires": {
"debug": "2.6.9",
"depd": "~1.1.2",
@@ -2165,18 +2315,55 @@
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
- "http-errors": "~1.6.2",
- "mime": "1.4.1",
- "ms": "2.0.0",
+ "http-errors": "~1.7.2",
+ "mime": "1.6.0",
+ "ms": "2.1.1",
"on-finished": "~2.3.0",
- "range-parser": "~1.2.0",
- "statuses": "~1.4.0"
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
},
"dependencies": {
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "http-errors": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ },
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
}
}
},
@@ -2200,14 +2387,21 @@
}
},
"serve-static": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
- "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
"requires": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
- "parseurl": "~1.3.2",
- "send": "0.16.2"
+ "parseurl": "~1.3.3",
+ "send": "0.17.1"
+ },
+ "dependencies": {
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ }
}
},
"sessionstore": {
@@ -2222,6 +2416,14 @@
"tolerance": "1.0.0"
},
"dependencies": {
+ "async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz",
+ "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==",
+ "requires": {
+ "lodash": "^4.17.11"
+ }
+ },
"lodash": {
"version": "4.17.14",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
@@ -2641,9 +2843,9 @@
}
},
"tsscmp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz",
- "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc="
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
+ "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA=="
},
"type-is": {
"version": "1.6.15",
@@ -2669,9 +2871,9 @@
}
},
"uid-safe": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz",
- "integrity": "sha1-Otbzg2jG1MjHXsF2I/t5qh0HHYE=",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
+ "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
"requires": {
"random-bytes": "~1.0.0"
}
@@ -2764,9 +2966,9 @@
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
},
"uuid": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
- "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
+ "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
},
"v8flags": {
"version": "3.1.1",
@@ -2809,9 +3011,9 @@
"integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8="
},
"xtend": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
}
}
}
diff --git a/package.json b/package.json
index 19eb68a..0ff9faf 100644
--- a/package.json
+++ b/package.json
@@ -17,38 +17,41 @@
"author": "",
"license": "LNT",
"dependencies": {
+ "async": "^3.2.0",
"berkeleydb": "^0.2.1",
- "body-parser": "^1.18.3",
+ "body-parser": "^1.19.0",
"bookshelf": "^0.13.3",
- "connect-mongo": "^2.0.1",
- "cookie-parser": "^1.3.5",
- "csurf": "^1.8.3",
+ "connect-mongo": "^2.0.3",
+ "connect-redis": "^5.0.0",
+ "cookie-parser": "^1.4.4",
+ "csurf": "^1.10.0",
"dotenv": "^1.2.0",
- "ejs": "^2.6.1",
- "express": "^4.16.4",
+ "ejs": "^2.7.1",
+ "express": "^4.17.1",
"express-json": "^1.0.0",
- "express-session": "^1.11.3",
+ "express-session": "^1.16.2",
"fs-readfile-promise": "^3.0.1",
"knex": "^0.15.2",
"knox": "^0.9.2",
"lodash": "^4.17.15",
"mock-express": "^1.3.0",
"mongodb": "^2.2.36",
- "multer": "^1.4.1",
+ "multer": "^1.4.2",
"multiparty": "^4.2.1",
"mysql2": "^0.15.8",
"node-fetch": "^1.7.3",
"node-uuid": "^1.4.8",
"passport": "^0.3.0",
"passport-local": "^1.0.0",
+ "redis": "^3.0.2",
"serve-favicon": "^2.5.0",
"sessionstore": "^1.3.5",
"skipper": "^0.8.7",
"uglify-es": "^3.3.9",
"unix-crypt-td-js": "^1.0.0",
- "uuid": "^3.3.2"
+ "uuid": "^3.3.3"
},
"devDependencies": {
- "mime-types": "^2.1.21"
+ "mime-types": "^2.1.24"
}
}
diff --git a/public/assets/css/bucky.css b/public/assets/css/bucky.css
index 349c35c..9c9aa8a 100644
--- a/public/assets/css/bucky.css
+++ b/public/assets/css/bucky.css
@@ -1135,7 +1135,7 @@ audio {
/* mobile css and errata */
-@media (min-width: 700px) and (max-width: 1000px) {
+@media (min-width: 700px) and (max-width: 1025px) {
#sidebar {
display: none;
}
@@ -1149,7 +1149,7 @@ audio {
display: block;
}
}
-@media (max-width: 700px) {
+@media (max-width: 1025px) {
html {
padding-bottom: 0px;
}
diff --git a/public/assets/js/lib/views/index/countdown.js b/public/assets/js/lib/views/index/countdown.js
deleted file mode 100644
index 4f840eb..0000000
--- a/public/assets/js/lib/views/index/countdown.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var Countdown = View.extend({
-
- el: ".countdown",
- countdownTo: new Date(2019, 9, 5, 0, 0, 0),
-
- events: {
- },
-
- initialize: function(){
- this.__super__.initialize.call(this)
- this.update()
- },
-
- update() {
- var now = (this.countdownTo - new Date()) / 1000
- if (now < 0) {
- if (now > -86400) {
- this.$el.html("<b><i><big>today's the day!</big></i></b>")
- } else {
- this.$el.html("<b><i><big>bucky says congrats!!!!</big></i></b>")
- }
- return
- }
- var seconds = Math.floor(now % 60)
- now /= 60
- var minutes = Math.floor(now % 60)
- now /= 60
- var hours = Math.floor(now % 24)
- now /= 24
- var days = Math.floor(now % 7)
- now /= 7
- var weeks = Math.floor(now)
- var date_string = [
- '<big><b>',
- (weeks ? (
- (weeks && days) ? weeks + ' week' + courtesy_s(weeks) + ',' : weeks + ' week' + courtesy_s(weeks) + ''
- ) : ''
- ),
- (days ? days + ' day' + courtesy_s(days) : ''),
- '</big></b>',
- hours, 'hour' + courtesy_s(hours) + ',',
- minutes, 'minute' + courtesy_s(minutes) + ',',
- seconds, 'second' + courtesy_s(seconds),
- ].join(' ')
- this.$el.html( date_string + "<br><i style='display: block;margin-top: 4px;'>until the big day!</i>")
- setTimeout(this.update.bind(this), 1000)
- },
-}) \ No newline at end of file
diff --git a/public/assets/js/lib/views/index/index.js b/public/assets/js/lib/views/index/index.js
index 08da455..985f990 100644
--- a/public/assets/js/lib/views/index/index.js
+++ b/public/assets/js/lib/views/index/index.js
@@ -11,7 +11,6 @@ var IndexView = View.extend({
this.hootbox = new HootBox ({ parent: this })
this.threadbox = new ThreadBox ({ parent: this })
this.lastlog = new LastLog ({ parent: this })
- this.countdown = new Countdown ({ parent: this })
},
load: function(keyword){
diff --git a/public/favicon.ico b/public/favicon.ico
index ecac2f2..73ed6d0 100644
--- a/public/favicon.ico
+++ b/public/favicon.ico
Binary files differ
diff --git a/views/pages/details.ejs b/views/pages/details.ejs
index fa9bb58..5b0e926 100644
--- a/views/pages/details.ejs
+++ b/views/pages/details.ejs
@@ -14,7 +14,9 @@
</div>
<div class="right">
- <% include ../partials/gallery %>
+ <div id="no_gallery" style="display:none" >
+ <% include ../partials/gallery %>
+ </div>
<div id="audio"></div>
<% include ../partials/files %>
<% include ../partials/threads %>
diff --git a/views/pages/index.ejs b/views/pages/index.ejs
index e484fab..14d7412 100644
--- a/views/pages/index.ejs
+++ b/views/pages/index.ejs
@@ -9,7 +9,6 @@
<div id="sidebar">
<% include ../partials/searchform %>
<div class="bluebox alert"></div>
- <div class="bluebox countdown"></div>
<% include ../partials/lastlog %>
<% include ../partials/hootbox %>
</div>
diff --git a/views/partials/scripts.ejs b/views/partials/scripts.ejs
index 765594b..7a8e8da 100644
--- a/views/partials/scripts.ejs
+++ b/views/partials/scripts.ejs
@@ -25,7 +25,6 @@
<script src="/assets/js/lib/views/index/hootbox.js"></script>
<script src="/assets/js/lib/views/index/threadbox.js"></script>
<script src="/assets/js/lib/views/index/threadform.js"></script>
-<script src="/assets/js/lib/views/index/countdown.js"></script>
<script src="/assets/js/lib/views/admin/adminz.js"></script>
<script src="/assets/js/lib/views/admin/password.js"></script>