summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/db/index.js7
-rw-r--r--lib/index.js6
-rw-r--r--lib/router.js19
-rw-r--r--lib/search/index.js102
-rw-r--r--package-lock.json2462
-rw-r--r--package.json1
-rw-r--r--public/assets/css/bucky.css7
-rw-r--r--public/assets/js/lib/views/details/index.js2
-rw-r--r--public/assets/js/lib/views/index/hootbox.js14
-rw-r--r--public/assets/js/lib/views/index/threadbox.js1
-rw-r--r--public/assets/js/vendor/view/formview.js47
-rw-r--r--views/partials/hootbox.ejs5
12 files changed, 2637 insertions, 36 deletions
diff --git a/lib/db/index.js b/lib/db/index.js
index 6906b27..f376308 100644
--- a/lib/db/index.js
+++ b/lib/db/index.js
@@ -62,7 +62,7 @@ db.getLastlog = function(limit){
db.getLatestThreads = function () {
return Thread.query(function(qb){
- qb.orderBy("id", "desc").limit(50)
+ qb.orderBy("lastmodified", "desc").limit(50)
}).fetchAll()
}
db.getThreadsForKeyword = function (keyword) {
@@ -74,6 +74,7 @@ db.getThread = function (id) {
return Thread.query("where", "id", "=", id).fetch()
}
db.createThread = function(data){
+ return new db.Thread(data).save()
}
db.updateThread = function(data){
}
@@ -92,6 +93,7 @@ db.getFileSizes = function(ids){
return knex.column('thread').sum('size as size').select().from('files').where('thread', 'in', ids).groupBy('thread')
}
db.createFile = function(data){
+ return new db.File(data).save()
}
db.removeFile = function(id){
}
@@ -119,6 +121,7 @@ db.getCommentCounts = function(ids){
return knex.column('thread').count('* as count').select().from('comments').where('thread', 'in', ids).groupBy('thread')
}
db.createComment = function(data){
+ return new db.Comment(data).save()
}
db.updateComment = function(data){
}
@@ -135,6 +138,7 @@ db.getKeyword = function (keyword) {
return Keyword.query("where", "keyword", "=", keyword).fetch()
}
db.createKeyword = function(data){
+ return new db.Keyword(data).save()
}
db.updateKeyword = function(data){
}
@@ -175,6 +179,7 @@ db.getMessage = function (id){
})
}
db.createMessage = function(data){
+ return new db.Message(data).save()
}
db.updateMessage = function(data){
}
diff --git a/lib/index.js b/lib/index.js
index ad97526..5aef342 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -37,9 +37,9 @@ site.init = function(){
type: 'mongodb',
host: 'localhost',
port: 27017,
- dbName: 'sessionDb',
+ dbName: 'buckySessionDb',
collectionName: 'sessions',
- timeout: 10000
+ timeout: 10000,
}),
resave: true,
saveUninitialized: false,
@@ -50,7 +50,7 @@ site.init = function(){
app.use(passport.initialize())
app.use(passport.session())
- server = http.createServer(app).listen(5000, function () {
+ server = http.createServer(app).listen(process.env.PORT || 5000, function () {
console.log('Bucky listening at http://5.k:%s', server.address().port)
})
diff --git a/lib/router.js b/lib/router.js
index 4451a13..c08037e 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -2,6 +2,7 @@ var auth = require('./auth')
var middleware = require('./middleware')
var fortune = require('./fortune')
var bucky = require('./bucky')
+var db = require('./db')
var util = require('./util')
module.exports = function(app){
@@ -66,6 +67,24 @@ module.exports = function(app){
})
app.post("/api/thread/:id/comment",
middleware.ensureAuthenticated,
+ bucky.ensureThread,
+ function(req, res){
+ if (!req.params.id) return res.sendStatus(500)
+ var comment = {
+ thread: req.params.id,
+ parent_id: req.body.parent_id || -1,
+ username: req.user.get('username'),
+ date: Math.round(+(new Date) / 1000),
+ comment: req.body.comment,
+ hidden: false,
+ }
+ db.createComment(comment).then(function(c){
+ res.json(comment)
+ })
+ })
+ app.post("/api/thread/:id/file",
+ middleware.ensureAuthenticated,
+ bucky.ensureThread,
function(req, res){
// add comments and files
})
diff --git a/lib/search/index.js b/lib/search/index.js
new file mode 100644
index 0000000..8d209e6
--- /dev/null
+++ b/lib/search/index.js
@@ -0,0 +1,102 @@
+var db = require('../db')
+var bdb_lib = require('berkeleydb')
+var bdb = new bdb_lib.Db()
+bdb.open('search.db')
+
+var wordRegexp = new RegExp("(\W+)");
+var wordBoundaryRegexp = new RegExp("\W");
+function parse_terms (s) {
+ return s.toLowerCase().split(wordRegexp).filter((term) => {
+ if (! term.match(wordBoundaryRegexp)) {
+ return true
+ }
+ return false
+ })
+}
+function cmp (a,b){ return (a<b)?a:(a===b)?0:1 }
+
+var STOPWORDS = new Set(
+ "a about above across adj after again against all almost alone along also " +
+ "although always am among an and another any anybody anyone anything anywhere " +
+ "apart are around as aside at away be because been before behind being below " +
+ "besides between beyond both but by can cannot could did do does doing done " +
+ "down downwards during each either else enough etc even ever every everybody " +
+ "everyone except far few for forth from get gets got had hardly has have having " +
+ "her here herself him himself his how however i if in indeed instead into inward " +
+ "is it its itself just kept many maybe might mine more most mostly much must " +
+ "myself near neither next no nobody none nor not nothing nowhere of off often on " +
+ "only onto or other others ought our ours out outside over own p per please plus " +
+ "pp quite rather really said seem self selves several shall she should since so " +
+ "some somebody somewhat still such than that the their theirs them themselves " +
+ "then there therefore these they this thorough thoroughly those through thus to " +
+ "together too toward towards under until up upon v very was well were what " +
+ "whatever when whenever where whether which while who whom whose will with" +
+ "within without would yet young your yourself s".split(" ")
+);
+
+function find_term(term) {
+ bdb.get(term)
+
+}
+
+function search (query, start, limit) {
+ if (!query) return
+ start = start || 0;
+ limit = limit || 10;
+ var scores = {};
+ var terms = parse_terms($query);
+ var i = 0
+ var total
+ var to_display = limit
+ var threads = {}
+ var comment_ids = []
+ 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 || result.thread
+ score.comment = score.comment || result.comment
+ score.file = score.file || result.file
+ score.strength += result.strength
+ score.count += 1
+ })
+ })
+ total = Object.keys(scores).length
+ Object.values(scores).sort((a,b) => {
+ if (b.count !== a.count) {
+ return cmp(b.count, a.count)
+ }
+ return cmp(b.strength * b.count, a.strength * a.count)
+ }).some((match) => {
+ if (i++ < start) return false
+ if (to_display-- === 0) return true
+ results.push(match)
+ thread_ids.push(match.thread)
+ if (match.comment) comment_ids.push(match.comment)
+ if (match.file) file_ids.push(match.file)
+ return false
+ })
+
+ db.storeQuery(query, total)
+
+ my $files = $self->files_by_id($files_to_get);
+ my $comments = $self->comments_by_id($comments_to_get);
+ $self->log_query($query, $total);
+ return {
+ start => $start + $limit,
+ limit => $limit,
+ total => $total,
+ results => $results,
+ threads => $threads,
+ comments => $comments,
+ files => $files,
+ terms => $terms,
+ };
+}
+
+module.exports = { search: search }
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..f0a494e
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,2462 @@
+{
+ "name": "bucky",
+ "version": "3.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "berkeleydb": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/berkeleydb/-/berkeleydb-0.2.1.tgz",
+ "integrity": "sha1-pY5bGTSakJFPqpxKhLOJ4ar7gWs=",
+ "requires": {
+ "bindings": "1.3.0",
+ "nan": "2.8.0"
+ }
+ },
+ "bindings": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
+ "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw=="
+ },
+ "body-parser": {
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz",
+ "integrity": "sha1-wIzzMMM1jhUQFqBXRvE/ApyX+pc=",
+ "requires": {
+ "bytes": "2.1.0",
+ "content-type": "1.0.1",
+ "debug": "2.2.0",
+ "depd": "1.0.1",
+ "http-errors": "1.3.1",
+ "iconv-lite": "0.4.11",
+ "on-finished": "2.3.0",
+ "qs": "4.0.0",
+ "raw-body": "2.1.2",
+ "type-is": "1.6.8"
+ },
+ "dependencies": {
+ "bytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz",
+ "integrity": "sha1-rJPEEOL/ycx89LRks4KJBn9eR7Q="
+ },
+ "content-type": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz",
+ "integrity": "sha1-oZ0iRzJ9wDgFDOYit6FU7FnF5gA="
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "requires": {
+ "ms": "0.7.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg="
+ }
+ }
+ },
+ "depd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz",
+ "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo="
+ },
+ "http-errors": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
+ "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=",
+ "requires": {
+ "inherits": "2.0.1",
+ "statuses": "1.2.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "statuses": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz",
+ "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg="
+ }
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz",
+ "integrity": "sha1-LstC/SlHRJIiCaLnxATayHk9it4="
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ },
+ "dependencies": {
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ }
+ }
+ },
+ "qs": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz",
+ "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc="
+ },
+ "raw-body": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.2.tgz",
+ "integrity": "sha1-Y0gagFujDtfVmtRDOyDrhQ+V6Ic=",
+ "requires": {
+ "bytes": "2.1.0",
+ "iconv-lite": "0.4.11",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ }
+ }
+ },
+ "type-is": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz",
+ "integrity": "sha1-O6yMDIUnVMhVFD4gbUoW6Qi/AxU=",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "2.1.6"
+ },
+ "dependencies": {
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "mime-types": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz",
+ "integrity": "sha1-lJ+HiEEYZN3HCUig8hxD8p0lZnw=",
+ "requires": {
+ "mime-db": "1.18.0"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz",
+ "integrity": "sha1-UxfigiTAivHUhPYJc904a6jzieA="
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "bookshelf": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/bookshelf/-/bookshelf-0.8.2.tgz",
+ "integrity": "sha1-k8e7felW+Yfvjqhm7869i8CDazw=",
+ "requires": {
+ "bluebird": "2.9.34",
+ "chalk": "1.1.1",
+ "create-error": "0.3.1",
+ "inflection": "1.7.1",
+ "inherits": "2.0.1",
+ "lodash": "3.10.1",
+ "semver": "4.3.6"
+ },
+ "dependencies": {
+ "bluebird": {
+ "version": "2.9.34",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz",
+ "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g="
+ },
+ "chalk": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
+ "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=",
+ "requires": {
+ "ansi-styles": "2.1.0",
+ "escape-string-regexp": "1.0.3",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.0",
+ "supports-color": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz",
+ "integrity": "sha1-mQ90cUaSe1Wakyv5KVkWPWDA0OI="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz",
+ "integrity": "sha1-ni2LJbwlVcMzZyN1DgPwmcJzW7U="
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "requires": {
+ "ansi-regex": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
+ "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc="
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz",
+ "integrity": "sha1-dRC2ZVZ8qRTMtdfgcnY6yWi+NyQ=",
+ "requires": {
+ "ansi-regex": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
+ "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc="
+ }
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "create-error": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/create-error/-/create-error-0.3.1.tgz",
+ "integrity": "sha1-aYECRaYp5lRDK/BDdzYAA6U1GiM="
+ },
+ "inflection": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.7.1.tgz",
+ "integrity": "sha1-HPFgzUIJVtZ0/RWvbZQpEnHTi3g="
+ },
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "semver": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto="
+ }
+ }
+ },
+ "cookie-parser": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz",
+ "integrity": "sha1-nXVVcPtdF4kHcSJ6AjFNm+fPg1Y=",
+ "requires": {
+ "cookie": "0.1.3",
+ "cookie-signature": "1.0.6"
+ },
+ "dependencies": {
+ "cookie": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz",
+ "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ }
+ }
+ },
+ "csurf": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz",
+ "integrity": "sha1-I/KhO/HY/OHQyZZYg5RELLqGpWo=",
+ "requires": {
+ "cookie": "0.1.3",
+ "cookie-signature": "1.0.6",
+ "csrf": "3.0.0",
+ "http-errors": "1.3.1"
+ },
+ "dependencies": {
+ "cookie": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz",
+ "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "csrf": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.0.tgz",
+ "integrity": "sha1-Sk0008H4vvnZtMWWon79YNky2Do=",
+ "requires": {
+ "base64-url": "1.2.1",
+ "rndm": "1.1.0",
+ "scmp": "1.0.0",
+ "uid-safe": "2.0.0"
+ },
+ "dependencies": {
+ "base64-url": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz",
+ "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg="
+ },
+ "rndm": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.1.0.tgz",
+ "integrity": "sha1-AdGo8fubRxGBkltie5BJvzMHRXQ="
+ },
+ "scmp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/scmp/-/scmp-1.0.0.tgz",
+ "integrity": "sha1-oLJyw/xykvdxFWRvAGGLAmJRTgQ="
+ },
+ "uid-safe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz",
+ "integrity": "sha1-p/PGymSh9qXQTsDvPkw9U2cxcTc=",
+ "requires": {
+ "base64-url": "1.2.1"
+ }
+ }
+ }
+ },
+ "http-errors": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
+ "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=",
+ "requires": {
+ "inherits": "2.0.1",
+ "statuses": "1.2.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "statuses": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz",
+ "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg="
+ }
+ }
+ }
+ }
+ },
+ "dotenv": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-1.2.0.tgz",
+ "integrity": "sha1-fNc+FuB/BXyAchR6W8OoZ38KtcY="
+ },
+ "ejs": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.3.3.tgz",
+ "integrity": "sha1-prq7Z4FdcZBpSvS6gv4GXlbV8Oc="
+ },
+ "express": {
+ "version": "4.13.3",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz",
+ "integrity": "sha1-3bLx+0UCvzNZjSsDKwN5YMpsgKM=",
+ "requires": {
+ "accepts": "1.2.12",
+ "array-flatten": "1.1.1",
+ "content-disposition": "0.5.0",
+ "content-type": "1.0.1",
+ "cookie": "0.1.3",
+ "cookie-signature": "1.0.6",
+ "debug": "2.2.0",
+ "depd": "1.0.1",
+ "escape-html": "1.0.2",
+ "etag": "1.7.0",
+ "finalhandler": "0.4.0",
+ "fresh": "0.3.0",
+ "merge-descriptors": "1.0.0",
+ "methods": "1.1.1",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.0",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "1.0.8",
+ "qs": "4.0.0",
+ "range-parser": "1.0.2",
+ "send": "0.13.0",
+ "serve-static": "1.10.0",
+ "type-is": "1.6.8",
+ "utils-merge": "1.0.0",
+ "vary": "1.0.1"
+ },
+ "dependencies": {
+ "accepts": {
+ "version": "1.2.12",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz",
+ "integrity": "sha1-fm2ID0c7XEjUbj419x6nw7aFFMM=",
+ "requires": {
+ "mime-types": "2.1.6",
+ "negotiator": "0.5.3"
+ },
+ "dependencies": {
+ "mime-types": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz",
+ "integrity": "sha1-lJ+HiEEYZN3HCUig8hxD8p0lZnw=",
+ "requires": {
+ "mime-db": "1.18.0"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz",
+ "integrity": "sha1-UxfigiTAivHUhPYJc904a6jzieA="
+ }
+ }
+ },
+ "negotiator": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz",
+ "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g="
+ }
+ }
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+ },
+ "content-disposition": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz",
+ "integrity": "sha1-QoT+auBjCHRjnkToCkGMKTQTXp4="
+ },
+ "content-type": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz",
+ "integrity": "sha1-oZ0iRzJ9wDgFDOYit6FU7FnF5gA="
+ },
+ "cookie": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz",
+ "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "requires": {
+ "ms": "0.7.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg="
+ }
+ }
+ },
+ "depd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz",
+ "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo="
+ },
+ "escape-html": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz",
+ "integrity": "sha1-130y+pjjjC9BroXpJ44ODmuhAiw="
+ },
+ "etag": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz",
+ "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg="
+ },
+ "finalhandler": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz",
+ "integrity": "sha1-llpS2ejQXSuFdUhUH7ibU6JJfZs=",
+ "requires": {
+ "debug": "2.2.0",
+ "escape-html": "1.0.2",
+ "on-finished": "2.3.0",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ }
+ }
+ },
+ "fresh": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz",
+ "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8="
+ },
+ "merge-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz",
+ "integrity": "sha1-IWnPdTjhsMyH+4jhUC2EdLv3mGQ="
+ },
+ "methods": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.1.tgz",
+ "integrity": "sha1-F+pjZgZtAMWON1uOx9/QRTyJgio="
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ },
+ "dependencies": {
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ }
+ }
+ },
+ "parseurl": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz",
+ "integrity": "sha1-tYBG20Ij4UWvp2AJ5hush8wigbM="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+ },
+ "proxy-addr": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.8.tgz",
+ "integrity": "sha1-21Tsh4vMEFPVdkZgkhmzcVZ4uv4=",
+ "requires": {
+ "forwarded": "0.1.0",
+ "ipaddr.js": "1.0.1"
+ },
+ "dependencies": {
+ "forwarded": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz",
+ "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M="
+ },
+ "ipaddr.js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.1.tgz",
+ "integrity": "sha1-XziAHcc+BAD8cHY4b27VIV+9j5U="
+ }
+ }
+ },
+ "qs": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz",
+ "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc="
+ },
+ "range-parser": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz",
+ "integrity": "sha1-BqEqQuUTG6jkV82JIESGfyNE5Uk="
+ },
+ "send": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz",
+ "integrity": "sha1-UY+SGusFYK7H3KspkLFM9vPM5d4=",
+ "requires": {
+ "debug": "2.2.0",
+ "depd": "1.0.1",
+ "destroy": "1.0.3",
+ "escape-html": "1.0.2",
+ "etag": "1.7.0",
+ "fresh": "0.3.0",
+ "http-errors": "1.3.1",
+ "mime": "1.3.4",
+ "ms": "0.7.1",
+ "on-finished": "2.3.0",
+ "range-parser": "1.0.2",
+ "statuses": "1.2.1"
+ },
+ "dependencies": {
+ "destroy": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz",
+ "integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk="
+ },
+ "http-errors": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
+ "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=",
+ "requires": {
+ "inherits": "2.0.1",
+ "statuses": "1.2.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ }
+ }
+ },
+ "mime": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
+ "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM="
+ },
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg="
+ },
+ "statuses": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz",
+ "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg="
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz",
+ "integrity": "sha1-vmMvqmhYIOSkPtPfE3kTXMTzcNc=",
+ "requires": {
+ "escape-html": "1.0.2",
+ "parseurl": "1.3.0",
+ "send": "0.13.0"
+ }
+ },
+ "type-is": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz",
+ "integrity": "sha1-O6yMDIUnVMhVFD4gbUoW6Qi/AxU=",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "2.1.6"
+ },
+ "dependencies": {
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "mime-types": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz",
+ "integrity": "sha1-lJ+HiEEYZN3HCUig8hxD8p0lZnw=",
+ "requires": {
+ "mime-db": "1.18.0"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz",
+ "integrity": "sha1-UxfigiTAivHUhPYJc904a6jzieA="
+ }
+ }
+ }
+ }
+ },
+ "utils-merge": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
+ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
+ },
+ "vary": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz",
+ "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA="
+ }
+ }
+ },
+ "express-json": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/express-json/-/express-json-1.0.0.tgz",
+ "integrity": "sha1-n91TI5rQpvPgdvVFhdiiJDB1+zY="
+ },
+ "express-session": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz",
+ "integrity": "sha1-XMmPP1/4Ttg1+Ry/CqvQxxB0AK8=",
+ "requires": {
+ "cookie": "0.1.3",
+ "cookie-signature": "1.0.6",
+ "crc": "3.3.0",
+ "debug": "2.2.0",
+ "depd": "1.0.1",
+ "on-headers": "1.0.0",
+ "parseurl": "1.3.0",
+ "uid-safe": "2.0.0",
+ "utils-merge": "1.0.0"
+ },
+ "dependencies": {
+ "cookie": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz",
+ "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "crc": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz",
+ "integrity": "sha1-+mIuG8OIvyVzCQgta2UgDOZwkLo="
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "requires": {
+ "ms": "0.7.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg="
+ }
+ }
+ },
+ "depd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz",
+ "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo="
+ },
+ "on-headers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz",
+ "integrity": "sha1-LHW12kN1UT0BYcYFLn/L5JU/yl0="
+ },
+ "parseurl": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz",
+ "integrity": "sha1-tYBG20Ij4UWvp2AJ5hush8wigbM="
+ },
+ "uid-safe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz",
+ "integrity": "sha1-p/PGymSh9qXQTsDvPkw9U2cxcTc=",
+ "requires": {
+ "base64-url": "1.2.1"
+ },
+ "dependencies": {
+ "base64-url": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz",
+ "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg="
+ }
+ }
+ },
+ "utils-merge": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
+ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
+ }
+ }
+ },
+ "knex": {
+ "version": "0.8.6",
+ "resolved": "https://registry.npmjs.org/knex/-/knex-0.8.6.tgz",
+ "integrity": "sha1-IPL0ps+Y+nVbXO6aqfq65TGvBWo=",
+ "requires": {
+ "bluebird": "2.9.34",
+ "chalk": "1.1.1",
+ "commander": "2.8.1",
+ "debug": "2.2.0",
+ "inherits": "2.0.1",
+ "interpret": "0.5.2",
+ "liftoff": "2.0.3",
+ "lodash": "3.10.1",
+ "minimist": "1.1.3",
+ "mkdirp": "0.5.1",
+ "pool2": "1.2.0",
+ "readable-stream": "1.1.13",
+ "tildify": "1.0.0",
+ "v8flags": "2.0.10"
+ },
+ "dependencies": {
+ "bluebird": {
+ "version": "2.9.34",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz",
+ "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g="
+ },
+ "chalk": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
+ "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=",
+ "requires": {
+ "ansi-styles": "2.1.0",
+ "escape-string-regexp": "1.0.3",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.0",
+ "supports-color": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz",
+ "integrity": "sha1-mQ90cUaSe1Wakyv5KVkWPWDA0OI="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz",
+ "integrity": "sha1-ni2LJbwlVcMzZyN1DgPwmcJzW7U="
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "requires": {
+ "ansi-regex": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
+ "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc="
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz",
+ "integrity": "sha1-dRC2ZVZ8qRTMtdfgcnY6yWi+NyQ=",
+ "requires": {
+ "ansi-regex": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
+ "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc="
+ }
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "commander": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
+ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
+ "requires": {
+ "graceful-readlink": "1.0.1"
+ },
+ "dependencies": {
+ "graceful-readlink": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
+ }
+ }
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "requires": {
+ "ms": "0.7.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg="
+ }
+ }
+ },
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "interpret": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.5.2.tgz",
+ "integrity": "sha1-N3gzsEteppP/DVMzgOPdoMA4G+A="
+ },
+ "liftoff": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.0.3.tgz",
+ "integrity": "sha1-+6slNipQasKKPbDFXN6VYvvXBFY=",
+ "requires": {
+ "extend": "2.0.1",
+ "findup-sync": "0.2.1",
+ "flagged-respawn": "0.3.1",
+ "minimist": "1.1.3",
+ "resolve": "1.1.6"
+ },
+ "dependencies": {
+ "extend": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-2.0.1.tgz",
+ "integrity": "sha1-HugBBonnOV/5RIJByYZSvHWagmA="
+ },
+ "findup-sync": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.2.1.tgz",
+ "integrity": "sha1-4KkKRQB1xJRm7lE3MgV1FLgeh4w=",
+ "requires": {
+ "glob": "4.3.5"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz",
+ "integrity": "sha1-gPuwjKVA8jiszl0R0em8QedRc9M=",
+ "requires": {
+ "inflight": "1.0.4",
+ "inherits": "2.0.1",
+ "minimatch": "2.0.10",
+ "once": "1.3.2"
+ },
+ "dependencies": {
+ "inflight": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
+ "integrity": "sha1-bLtFIevVHODsCpNr/XZX736bFyo=",
+ "requires": {
+ "once": "1.3.2",
+ "wrappy": "1.0.1"
+ },
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz",
+ "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk="
+ }
+ }
+ },
+ "minimatch": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
+ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
+ "requires": {
+ "brace-expansion": "1.1.0"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz",
+ "integrity": "sha1-ybfQPAPze8cEvhAOUitA249s/Nk=",
+ "requires": {
+ "balanced-match": "0.2.0",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz",
+ "integrity": "sha1-OPZzDAOqttXtu1K9k0iF51bXFnQ="
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ }
+ }
+ }
+ }
+ },
+ "once": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz",
+ "integrity": "sha1-2P7sqTsDnsHc3ud0HJK9rF4oCBs=",
+ "requires": {
+ "wrappy": "1.0.1"
+ },
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz",
+ "integrity": "sha1-HmWWmWXMvC20VIxrhKbyxa7dRzk="
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flagged-respawn": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.1.tgz",
+ "integrity": "sha1-OXcAkl324SRSICpx6J2JVF+7vp0="
+ },
+ "resolve": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz",
+ "integrity": "sha1-00kq0FTKgA9b76YS5hvqwe7Jj48="
+ }
+ }
+ },
+ "minimist": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz",
+ "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag="
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "pool2": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pool2/-/pool2-1.2.0.tgz",
+ "integrity": "sha1-yrd+d9O47JTC2MWbMdFc+5MhNzI=",
+ "requires": {
+ "debug": "2.2.0",
+ "double-ended-queue": "2.1.0-0",
+ "hashmap": "2.0.3",
+ "simple-backoff": "1.0.0"
+ },
+ "dependencies": {
+ "double-ended-queue": {
+ "version": "2.1.0-0",
+ "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
+ "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw="
+ },
+ "hashmap": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hashmap/-/hashmap-2.0.3.tgz",
+ "integrity": "sha1-+IlUXTb+aKtW5MUiNQCd1mEIsVM="
+ },
+ "simple-backoff": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/simple-backoff/-/simple-backoff-1.0.0.tgz",
+ "integrity": "sha1-pPopDsAZacB8oTb+i7+0Dg7zWsI="
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz",
+ "integrity": "sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4=",
+ "requires": {
+ "core-util-is": "1.0.1",
+ "inherits": "2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
+ "integrity": "sha1-awcIWu+aPMrG7lO/nT3wwVIaVTg="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
+ "tildify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.0.0.tgz",
+ "integrity": "sha1-KgIdtej73gqPi03zetqo+x05190=",
+ "requires": {
+ "user-home": "1.1.1"
+ },
+ "dependencies": {
+ "user-home": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
+ "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA="
+ }
+ }
+ },
+ "v8flags": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.10.tgz",
+ "integrity": "sha1-ZKFhN06XSRAJx43vL5ZJAOltnO8=",
+ "requires": {
+ "user-home": "1.1.1"
+ },
+ "dependencies": {
+ "user-home": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
+ "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA="
+ }
+ }
+ }
+ }
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
+ },
+ "mongodb": {
+ "version": "2.0.42",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.42.tgz",
+ "integrity": "sha1-G614E9ByXOLjvVQYDzH67dJNnlM=",
+ "requires": {
+ "es6-promise": "2.1.1",
+ "mongodb-core": "1.2.10",
+ "readable-stream": "1.0.31"
+ },
+ "dependencies": {
+ "es6-promise": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.1.1.tgz",
+ "integrity": "sha1-A+jzxyl5KOVHjWqx0GQyUVB73t0="
+ },
+ "mongodb-core": {
+ "version": "1.2.10",
+ "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.10.tgz",
+ "integrity": "sha1-7OFyAb05WmR/uY9Ivo+64Vvgr9k=",
+ "requires": {
+ "bson": "0.4.11",
+ "kerberos": "0.0.12"
+ },
+ "dependencies": {
+ "bson": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-0.4.11.tgz",
+ "integrity": "sha1-BFJVznmNLUAAH/d14N2Rdu+vJbQ="
+ },
+ "kerberos": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.12.tgz",
+ "integrity": "sha1-fSXMq3SiMlwYaxpWdhBDpHiciXI=",
+ "optional": true,
+ "requires": {
+ "nan": "1.8.4"
+ },
+ "dependencies": {
+ "nan": {
+ "version": "1.8.4",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz",
+ "integrity": "sha1-PHa1OC6rM+RLdY0oE8qdkuk0LzQ=",
+ "optional": true
+ }
+ }
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "1.0.31",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz",
+ "integrity": "sha1-jyUC4LyeOw2huUUgqrtOJgPsr64=",
+ "requires": {
+ "core-util-is": "1.0.1",
+ "inherits": "2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
+ "integrity": "sha1-awcIWu+aPMrG7lO/nT3wwVIaVTg="
+ },
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ }
+ }
+ },
+ "multer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/multer/-/multer-1.0.3.tgz",
+ "integrity": "sha1-cR/vX5Tx8vDL/gAiTFhJic13ZGg=",
+ "requires": {
+ "append-field": "0.1.0",
+ "busboy": "0.2.11",
+ "concat-stream": "1.5.0",
+ "mkdirp": "0.5.1",
+ "object-assign": "3.0.0",
+ "type-is": "1.6.8",
+ "xtend": "4.0.0"
+ },
+ "dependencies": {
+ "append-field": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/append-field/-/append-field-0.1.0.tgz",
+ "integrity": "sha1-bdxY+gg8e8VF08WZWygwzCNm1Eo="
+ },
+ "busboy": {
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.11.tgz",
+ "integrity": "sha1-GRNH/pNeWvumZVAakRwvcj07YfI=",
+ "requires": {
+ "dicer": "0.2.3",
+ "readable-stream": "1.1.13"
+ },
+ "dependencies": {
+ "dicer": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.3.tgz",
+ "integrity": "sha1-8AKBGJpVwjUe+ASQpP6fssWcSTk=",
+ "requires": {
+ "readable-stream": "1.1.13",
+ "streamsearch": "0.1.2"
+ },
+ "dependencies": {
+ "streamsearch": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
+ "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz",
+ "integrity": "sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4=",
+ "requires": {
+ "core-util-is": "1.0.1",
+ "inherits": "2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
+ "integrity": "sha1-awcIWu+aPMrG7lO/nT3wwVIaVTg="
+ },
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ }
+ }
+ },
+ "concat-stream": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz",
+ "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=",
+ "requires": {
+ "inherits": "2.0.1",
+ "readable-stream": "2.0.2",
+ "typedarray": "0.0.6"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "readable-stream": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz",
+ "integrity": "sha1-vsgb6ujPRVFovC5bKzH1vPrtmxs=",
+ "requires": {
+ "core-util-is": "1.0.1",
+ "inherits": "2.0.1",
+ "isarray": "0.0.1",
+ "process-nextick-args": "1.0.2",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.1"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
+ "integrity": "sha1-awcIWu+aPMrG7lO/nT3wwVIaVTg="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "process-nextick-args": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz",
+ "integrity": "sha1-i00/xYZmi9W2Vz5zLt8rccHB2Ko="
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
+ "util-deprecate": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz",
+ "integrity": "sha1-NVaj0TxMaqeYPX4kJUeBlxmbeIE="
+ }
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I="
+ },
+ "type-is": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz",
+ "integrity": "sha1-O6yMDIUnVMhVFD4gbUoW6Qi/AxU=",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "2.1.6"
+ },
+ "dependencies": {
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "mime-types": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz",
+ "integrity": "sha1-lJ+HiEEYZN3HCUig8hxD8p0lZnw=",
+ "requires": {
+ "mime-db": "1.18.0"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz",
+ "integrity": "sha1-UxfigiTAivHUhPYJc904a6jzieA="
+ }
+ }
+ }
+ }
+ },
+ "xtend": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz",
+ "integrity": "sha1-i8Nv+Hrtvnzp6vC8o2sjVKdDhA8="
+ }
+ }
+ },
+ "multiparty": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.1.2.tgz",
+ "integrity": "sha1-VPjslxIFL6Hf2OyXUFbIIw1vI3A=",
+ "requires": {
+ "fd-slicer": "1.0.1"
+ },
+ "dependencies": {
+ "fd-slicer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
+ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "requires": {
+ "pend": "1.2.0"
+ },
+ "dependencies": {
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
+ }
+ }
+ }
+ }
+ },
+ "mysql2": {
+ "version": "0.15.8",
+ "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-0.15.8.tgz",
+ "integrity": "sha1-8WZQtvfFu1aLNFEeIbr+NtWonvE=",
+ "requires": {
+ "bn.js": "2.0.0",
+ "cardinal": "0.4.4",
+ "double-ended-queue": "2.0.0-0",
+ "named-placeholders": "0.1.3",
+ "readable-stream": "1.0.33"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-2.0.0.tgz",
+ "integrity": "sha1-glxBB/f6eJN47hsNhr4FA9esdDs="
+ },
+ "cardinal": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.4.4.tgz",
+ "integrity": "sha1-ylu2iltRG5D+k7ms6km97lwyv+I=",
+ "requires": {
+ "ansicolors": "0.2.1",
+ "redeyed": "0.4.4"
+ },
+ "dependencies": {
+ "ansicolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz",
+ "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8="
+ },
+ "redeyed": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz",
+ "integrity": "sha1-N+mQpvKyGyoRwuakj9QTVpjLqX8=",
+ "requires": {
+ "esprima": "1.0.4"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
+ "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0="
+ }
+ }
+ }
+ }
+ },
+ "double-ended-queue": {
+ "version": "2.0.0-0",
+ "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.0.0-0.tgz",
+ "integrity": "sha1-eEf9ocAPtyIkWv+DZDpIh2cO/Sw="
+ },
+ "named-placeholders": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-0.1.3.tgz",
+ "integrity": "sha1-NTd27iWa0QUifhOFLu9CFaxjHoQ=",
+ "requires": {
+ "lru-cache": "2.5.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz",
+ "integrity": "sha1-2COIrpyWC+y+oMc7uet5tsbOmus="
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "1.0.33",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz",
+ "integrity": "sha1-OjYN1mwbHX/UcFOJhg7aHQ9hEmw=",
+ "requires": {
+ "core-util-is": "1.0.1",
+ "inherits": "2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
+ "integrity": "sha1-awcIWu+aPMrG7lO/nT3wwVIaVTg="
+ },
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ }
+ }
+ },
+ "nan": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz",
+ "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo="
+ },
+ "passport": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/passport/-/passport-0.3.0.tgz",
+ "integrity": "sha1-FMFRsOtnlaqTNSOYJ/VI1flMcEY=",
+ "requires": {
+ "passport-strategy": "1.0.0",
+ "pause": "0.0.1"
+ },
+ "dependencies": {
+ "passport-strategy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
+ "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ="
+ },
+ "pause": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
+ "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
+ }
+ }
+ },
+ "passport-local": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz",
+ "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=",
+ "requires": {
+ "passport-strategy": "1.0.0"
+ },
+ "dependencies": {
+ "passport-strategy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
+ "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ="
+ }
+ }
+ },
+ "sessionstore": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/sessionstore/-/sessionstore-1.2.5.tgz",
+ "integrity": "sha1-mH3ixYSvXKnyQNELqAeJXDVHT7c=",
+ "requires": {
+ "async": "1.4.0",
+ "jsondate": "0.0.1",
+ "lodash": "3.10.0",
+ "parent-require": "1.0.0",
+ "tolerance": "1.0.0"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz",
+ "integrity": "sha1-Nfhvg8WeBCHQmc2akdgnj7V4wA0="
+ },
+ "jsondate": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/jsondate/-/jsondate-0.0.1.tgz",
+ "integrity": "sha1-RXqa4Bgm0Z+vfofJviY9TzqiN/w="
+ },
+ "lodash": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz",
+ "integrity": "sha1-k9UcZygopEFqEq9XIguoqHN+L7s="
+ },
+ "parent-require": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz",
+ "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc="
+ },
+ "tolerance": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/tolerance/-/tolerance-1.0.0.tgz",
+ "integrity": "sha1-mFFo5d0TwJ3tQUrHOGb4R7QI2mw=",
+ "requires": {
+ "retry": "0.7.0"
+ },
+ "dependencies": {
+ "retry": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.7.0.tgz",
+ "integrity": "sha1-3IbuuWCvmstmKJaRi+QlTBrPY3k="
+ }
+ }
+ }
+ }
+ },
+ "skipper": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/skipper/-/skipper-0.5.5.tgz",
+ "integrity": "sha1-ZXTSdd4tdxC8tNq1aRt4CdUQurc=",
+ "requires": {
+ "async": "0.2.10",
+ "colors": "0.6.2",
+ "connect": "2.25.10",
+ "debug": "2.2.0",
+ "dot-access": "0.0.3",
+ "lodash": "2.4.2",
+ "multiparty": "3.2.10",
+ "node-uuid": "1.4.3",
+ "semver": "2.2.1",
+ "skipper-disk": "0.5.4",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
+ },
+ "colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w="
+ },
+ "connect": {
+ "version": "2.25.10",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-2.25.10.tgz",
+ "integrity": "sha1-GDs7VQaax81LWf/dh8xMxff/qKc=",
+ "requires": {
+ "basic-auth-connect": "1.0.0",
+ "body-parser": "1.6.7",
+ "bytes": "1.0.0",
+ "compression": "1.0.11",
+ "connect-timeout": "1.2.2",
+ "cookie": "0.1.2",
+ "cookie-parser": "1.3.2",
+ "cookie-signature": "1.0.4",
+ "csurf": "1.4.1",
+ "debug": "1.0.4",
+ "depd": "0.4.4",
+ "errorhandler": "1.1.1",
+ "express-session": "1.7.6",
+ "finalhandler": "0.1.0",
+ "fresh": "0.2.2",
+ "media-typer": "0.2.0",
+ "method-override": "2.1.3",
+ "morgan": "1.2.3",
+ "multiparty": "3.3.2",
+ "on-headers": "1.0.0",
+ "parseurl": "1.3.0",
+ "pause": "0.0.1",
+ "qs": "2.2.2",
+ "response-time": "2.0.1",
+ "serve-favicon": "2.0.1",
+ "serve-index": "1.1.6",
+ "serve-static": "1.5.4",
+ "type-is": "1.3.2",
+ "vhost": "2.0.0"
+ },
+ "dependencies": {
+ "basic-auth-connect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz",
+ "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI="
+ },
+ "body-parser": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.6.7.tgz",
+ "integrity": "sha1-gjBr7K30RUPoJrOQfq6T8CN8Tlw=",
+ "requires": {
+ "bytes": "1.0.0",
+ "depd": "0.4.4",
+ "iconv-lite": "0.4.4",
+ "media-typer": "0.2.0",
+ "on-finished": "2.1.0",
+ "qs": "2.2.2",
+ "raw-body": "1.3.0",
+ "type-is": "1.3.2"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.4.tgz",
+ "integrity": "sha1-6V8uQdsHNfwhZS94J6XuMuY8g6g="
+ },
+ "on-finished": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz",
+ "integrity": "sha1-DFOfCSkej/rd4MiiWFD7LO3HAi0=",
+ "requires": {
+ "ee-first": "1.0.5"
+ },
+ "dependencies": {
+ "ee-first": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz",
+ "integrity": "sha1-jJshKJjYzZ8alDZlDOe+ICyen/A="
+ }
+ }
+ },
+ "raw-body": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.0.tgz",
+ "integrity": "sha1-l4IwoValVI9C7vFN4i0PT2EAg9E=",
+ "requires": {
+ "bytes": "1.0.0",
+ "iconv-lite": "0.4.4"
+ }
+ }
+ }
+ },
+ "bytes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
+ "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g="
+ },
+ "compression": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.0.11.tgz",
+ "integrity": "sha1-aXAM8e6JY0VDVqwZKm5ekeIyv/s=",
+ "requires": {
+ "accepts": "1.0.7",
+ "bytes": "1.0.0",
+ "compressible": "1.1.1",
+ "debug": "1.0.4",
+ "on-headers": "1.0.0",
+ "vary": "1.0.1"
+ },
+ "dependencies": {
+ "accepts": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz",
+ "integrity": "sha1-W1AftPBwQwmWTM2wSBclQSCNqxo=",
+ "requires": {
+ "mime-types": "1.0.2",
+ "negotiator": "0.4.7"
+ },
+ "dependencies": {
+ "mime-types": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz",
+ "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4="
+ },
+ "negotiator": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz",
+ "integrity": "sha1-pBYPcXfsgGc4Yx0NMFIyXaQqvcg="
+ }
+ }
+ },
+ "compressible": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-1.1.1.tgz",
+ "integrity": "sha1-I7ceqQ6mxqZiiXAakYGCwk0HKe8="
+ },
+ "vary": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz",
+ "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA="
+ }
+ }
+ },
+ "connect-timeout": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.2.2.tgz",
+ "integrity": "sha1-WVNgK7Zqv9X6Ia6RGnIhxeglocA=",
+ "requires": {
+ "debug": "1.0.4",
+ "ms": "0.6.2",
+ "on-headers": "1.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
+ "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw="
+ }
+ }
+ },
+ "cookie": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz",
+ "integrity": "sha1-cv7D0k5Io0Mgc9kMEmQgBQYQBLE="
+ },
+ "cookie-parser": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.2.tgz",
+ "integrity": "sha1-UiEcyCyVXXn/DAiJVEB3JOGc9WI=",
+ "requires": {
+ "cookie": "0.1.2",
+ "cookie-signature": "1.0.4"
+ }
+ },
+ "cookie-signature": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.4.tgz",
+ "integrity": "sha1-Dt0iKG46ERuaKnDbNj6SXoZ/aso="
+ },
+ "csurf": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.4.1.tgz",
+ "integrity": "sha1-DMrwJpkrLSGHcdYXT1xsQCpiif0=",
+ "requires": {
+ "cookie": "0.1.2",
+ "cookie-signature": "1.0.4",
+ "csrf": "2.0.7"
+ },
+ "dependencies": {
+ "csrf": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/csrf/-/csrf-2.0.7.tgz",
+ "integrity": "sha1-0E9S4Paiin4s/h4B3V68JRs9QgE=",
+ "requires": {
+ "base64-url": "1.2.1",
+ "rndm": "1.1.0",
+ "scmp": "1.0.0",
+ "uid-safe": "1.1.0"
+ },
+ "dependencies": {
+ "base64-url": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz",
+ "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg="
+ },
+ "rndm": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.1.0.tgz",
+ "integrity": "sha1-AdGo8fubRxGBkltie5BJvzMHRXQ="
+ },
+ "scmp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/scmp/-/scmp-1.0.0.tgz",
+ "integrity": "sha1-oLJyw/xykvdxFWRvAGGLAmJRTgQ="
+ },
+ "uid-safe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-1.1.0.tgz",
+ "integrity": "sha1-WNbF2r+N+9jVKDSDmAbAP9YUMjI=",
+ "requires": {
+ "base64-url": "1.2.1",
+ "native-or-bluebird": "1.1.2"
+ },
+ "dependencies": {
+ "native-or-bluebird": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.1.2.tgz",
+ "integrity": "sha1-OSHhECMtHreQ89rGG7NwUxx9NW4="
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
+ "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=",
+ "requires": {
+ "ms": "0.6.2"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
+ "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw="
+ }
+ }
+ },
+ "depd": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-0.4.4.tgz",
+ "integrity": "sha1-BwkfrnX5eCjYm0oCotR3jw58BmI="
+ },
+ "errorhandler": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.1.1.tgz",
+ "integrity": "sha1-GN79Q22Mou/gotiGxcTW7m121pE=",
+ "requires": {
+ "accepts": "1.0.7",
+ "escape-html": "1.0.1"
+ },
+ "dependencies": {
+ "accepts": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz",
+ "integrity": "sha1-W1AftPBwQwmWTM2wSBclQSCNqxo=",
+ "requires": {
+ "mime-types": "1.0.2",
+ "negotiator": "0.4.7"
+ },
+ "dependencies": {
+ "mime-types": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz",
+ "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4="
+ },
+ "negotiator": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz",
+ "integrity": "sha1-pBYPcXfsgGc4Yx0NMFIyXaQqvcg="
+ }
+ }
+ },
+ "escape-html": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz",
+ "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A="
+ }
+ }
+ },
+ "express-session": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.7.6.tgz",
+ "integrity": "sha1-4cNpuiF296/beed9ZdzYx8RuSKU=",
+ "requires": {
+ "buffer-crc32": "0.2.3",
+ "cookie": "0.1.2",
+ "cookie-signature": "1.0.4",
+ "debug": "1.0.4",
+ "depd": "0.4.4",
+ "on-headers": "1.0.0",
+ "parseurl": "1.3.0",
+ "uid-safe": "1.0.1",
+ "utils-merge": "1.0.0"
+ },
+ "dependencies": {
+ "buffer-crc32": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.3.tgz",
+ "integrity": "sha1-u1RRnpXRB8vSQA520MqxRnM22SE="
+ },
+ "uid-safe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-1.0.1.tgz",
+ "integrity": "sha1-W9FIRgouhPVPGT/SA1LIw9feasg=",
+ "requires": {
+ "base64-url": "1.2.1",
+ "mz": "1.3.0"
+ },
+ "dependencies": {
+ "base64-url": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz",
+ "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg="
+ },
+ "mz": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-1.3.0.tgz",
+ "integrity": "sha1-BvCT/dmVagbTfhsegTROJ0eMQvA=",
+ "requires": {
+ "native-or-bluebird": "1.2.0",
+ "thenify": "3.1.0",
+ "thenify-all": "1.6.0"
+ },
+ "dependencies": {
+ "native-or-bluebird": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.2.0.tgz",
+ "integrity": "sha1-OcR7/Xgl0fuf+tMiEK4l2q3xAck="
+ },
+ "thenify": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.1.0.tgz",
+ "integrity": "sha1-wny7xit8KH7fGho9XMhCbYrtSfA=",
+ "requires": {
+ "native-or-bluebird": "1.2.0"
+ }
+ },
+ "thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
+ "requires": {
+ "thenify": "3.1.0"
+ }
+ }
+ }
+ }
+ }
+ },
+ "utils-merge": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
+ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
+ }
+ }
+ },
+ "finalhandler": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.1.0.tgz",
+ "integrity": "sha1-2gW7xPX0owyEzh2R88FUAHxOnao=",
+ "requires": {
+ "debug": "1.0.4",
+ "escape-html": "1.0.1"
+ },
+ "dependencies": {
+ "escape-html": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz",
+ "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A="
+ }
+ }
+ },
+ "fresh": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.2.tgz",
+ "integrity": "sha1-lzHc9WeMf660T7kDxPct9VGH+nc="
+ },
+ "media-typer": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.2.0.tgz",
+ "integrity": "sha1-2KBlITrf6qLnYyGitt2jb/YzWYQ="
+ },
+ "method-override": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.1.3.tgz",
+ "integrity": "sha1-UR9BxPsdzNtqsYRNpdxuqBt8ETU=",
+ "requires": {
+ "debug": "1.0.4",
+ "methods": "1.1.0",
+ "parseurl": "1.3.0",
+ "vary": "1.0.1"
+ },
+ "dependencies": {
+ "methods": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.0.tgz",
+ "integrity": "sha1-XcpO4S31L/OwVhRZhqjwHLyGQ28="
+ },
+ "vary": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz",
+ "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA="
+ }
+ }
+ },
+ "morgan": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.2.3.tgz",
+ "integrity": "sha1-Ow8XBN+QJVpUJZGrrNeXiRqMQKE=",
+ "requires": {
+ "basic-auth": "1.0.0",
+ "bytes": "1.0.0",
+ "depd": "0.4.4",
+ "on-finished": "2.1.0"
+ },
+ "dependencies": {
+ "basic-auth": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.0.tgz",
+ "integrity": "sha1-ERstn/jk5tE2uMhOpeCWy4c1Fjc="
+ },
+ "on-finished": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz",
+ "integrity": "sha1-DFOfCSkej/rd4MiiWFD7LO3HAi0=",
+ "requires": {
+ "ee-first": "1.0.5"
+ },
+ "dependencies": {
+ "ee-first": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz",
+ "integrity": "sha1-jJshKJjYzZ8alDZlDOe+ICyen/A="
+ }
+ }
+ }
+ }
+ },
+ "multiparty": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz",
+ "integrity": "sha1-Nd5oBNwZZD5SSfPT473GyM4wHT8=",
+ "requires": {
+ "readable-stream": "1.1.13",
+ "stream-counter": "0.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz",
+ "integrity": "sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4=",
+ "requires": {
+ "core-util-is": "1.0.1",
+ "inherits": "2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
+ "integrity": "sha1-awcIWu+aPMrG7lO/nT3wwVIaVTg="
+ },
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ }
+ }
+ },
+ "stream-counter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz",
+ "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=",
+ "requires": {
+ "readable-stream": "1.1.13"
+ }
+ }
+ }
+ },
+ "on-headers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz",
+ "integrity": "sha1-LHW12kN1UT0BYcYFLn/L5JU/yl0="
+ },
+ "parseurl": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz",
+ "integrity": "sha1-tYBG20Ij4UWvp2AJ5hush8wigbM="
+ },
+ "pause": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
+ "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
+ },
+ "qs": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-2.2.2.tgz",
+ "integrity": "sha1-3+eD8YVLGsKzreknda0D4n4DIYw="
+ },
+ "response-time": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.0.1.tgz",
+ "integrity": "sha1-xtLLrerEyyUbIQFv4YJkDAKv80M=",
+ "requires": {
+ "on-headers": "1.0.0"
+ }
+ },
+ "serve-favicon": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.0.1.tgz",
+ "integrity": "sha1-SCaXXZ8XPKOkFY6WmBYfdd7Hr+w=",
+ "requires": {
+ "fresh": "0.2.2"
+ }
+ },
+ "serve-index": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.1.6.tgz",
+ "integrity": "sha1-t1gxj+eBYoOD9mrIDdRHcS6neB8=",
+ "requires": {
+ "accepts": "1.0.7",
+ "batch": "0.5.1",
+ "parseurl": "1.3.0"
+ },
+ "dependencies": {
+ "accepts": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz",
+ "integrity": "sha1-W1AftPBwQwmWTM2wSBclQSCNqxo=",
+ "requires": {
+ "mime-types": "1.0.2",
+ "negotiator": "0.4.7"
+ },
+ "dependencies": {
+ "mime-types": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz",
+ "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4="
+ },
+ "negotiator": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz",
+ "integrity": "sha1-pBYPcXfsgGc4Yx0NMFIyXaQqvcg="
+ }
+ }
+ },
+ "batch": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.1.tgz",
+ "integrity": "sha1-NqS6tZTAUP17UHvKDbMMLZKvT/I="
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.5.4.tgz",
+ "integrity": "sha1-gZ+zeuRr0C3VILd/z3/Y9REvl4I=",
+ "requires": {
+ "escape-html": "1.0.1",
+ "parseurl": "1.3.0",
+ "send": "0.8.5",
+ "utils-merge": "1.0.0"
+ },
+ "dependencies": {
+ "escape-html": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz",
+ "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A="
+ },
+ "send": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.8.5.tgz",
+ "integrity": "sha1-N/cIIW5vUMF150xp/sU0hOL9gsc=",
+ "requires": {
+ "debug": "1.0.4",
+ "depd": "0.4.4",
+ "destroy": "1.0.3",
+ "escape-html": "1.0.1",
+ "fresh": "0.2.2",
+ "mime": "1.2.11",
+ "ms": "0.6.2",
+ "on-finished": "2.1.0",
+ "range-parser": "1.0.2"
+ },
+ "dependencies": {
+ "destroy": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz",
+ "integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk="
+ },
+ "mime": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
+ "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA="
+ },
+ "ms": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
+ "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw="
+ },
+ "on-finished": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz",
+ "integrity": "sha1-DFOfCSkej/rd4MiiWFD7LO3HAi0=",
+ "requires": {
+ "ee-first": "1.0.5"
+ },
+ "dependencies": {
+ "ee-first": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz",
+ "integrity": "sha1-jJshKJjYzZ8alDZlDOe+ICyen/A="
+ }
+ }
+ },
+ "range-parser": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz",
+ "integrity": "sha1-BqEqQuUTG6jkV82JIESGfyNE5Uk="
+ }
+ }
+ },
+ "utils-merge": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
+ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
+ }
+ }
+ },
+ "type-is": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.3.2.tgz",
+ "integrity": "sha1-TypdxYd1yhYwJQr8cYb4s2MJ0bs=",
+ "requires": {
+ "media-typer": "0.2.0",
+ "mime-types": "1.0.2"
+ },
+ "dependencies": {
+ "mime-types": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz",
+ "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4="
+ }
+ }
+ },
+ "vhost": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vhost/-/vhost-2.0.0.tgz",
+ "integrity": "sha1-HiZ3C9D86GxAlFWR5vKExokXkeI="
+ }
+ }
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "requires": {
+ "ms": "0.7.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg="
+ }
+ }
+ },
+ "dot-access": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/dot-access/-/dot-access-0.0.3.tgz",
+ "integrity": "sha1-Atsha7+VjQ+MUvoGXMfdiLXAajQ="
+ },
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
+ },
+ "multiparty": {
+ "version": "3.2.10",
+ "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.2.10.tgz",
+ "integrity": "sha1-+JghtveRKb8R/5v5NPSRHew9KcM=",
+ "requires": {
+ "readable-stream": "1.1.13",
+ "stream-counter": "0.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz",
+ "integrity": "sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4=",
+ "requires": {
+ "core-util-is": "1.0.1",
+ "inherits": "2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
+ "integrity": "sha1-awcIWu+aPMrG7lO/nT3wwVIaVTg="
+ },
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ }
+ }
+ },
+ "stream-counter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz",
+ "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=",
+ "requires": {
+ "readable-stream": "1.1.13"
+ }
+ }
+ }
+ },
+ "node-uuid": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz",
+ "integrity": "sha1-MZu3pW58tj8AtcDNeFHNS03fHfk="
+ },
+ "semver": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-2.2.1.tgz",
+ "integrity": "sha1-eUEYKz/8xYC/8cF5QqzfeVHA0hM="
+ },
+ "skipper-disk": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/skipper-disk/-/skipper-disk-0.5.4.tgz",
+ "integrity": "sha1-7UGstFNKPxuA602ZZfp2sDGou6c=",
+ "requires": {
+ "debug": "2.2.0",
+ "fs-extra": "0.8.1",
+ "lodash": "2.4.2",
+ "node-uuid": "1.4.3"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.8.1.tgz",
+ "integrity": "sha1-Dld5/7/t9RG8dVWVx/A8BtS0Po0=",
+ "requires": {
+ "jsonfile": "1.1.1",
+ "mkdirp": "0.3.5",
+ "ncp": "0.4.2",
+ "rimraf": "2.2.8"
+ },
+ "dependencies": {
+ "jsonfile": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-1.1.1.tgz",
+ "integrity": "sha1-2k/WrXfxolUgPqY8e8Mtwx72RDM="
+ },
+ "mkdirp": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
+ "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc="
+ },
+ "ncp": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz",
+ "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ="
+ },
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI="
+ }
+ }
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index 98f3f32..3bdbf13 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,7 @@
"author": "",
"license": "LNT",
"dependencies": {
+ "berkeleydb": "^0.2.1",
"body-parser": "^1.13.3",
"bookshelf": "^0.8.2",
"cookie-parser": "^1.3.5",
diff --git a/public/assets/css/bucky.css b/public/assets/css/bucky.css
index 08d25d3..98cc9f8 100644
--- a/public/assets/css/bucky.css
+++ b/public/assets/css/bucky.css
@@ -161,6 +161,9 @@ table, tr {
border-bottom: 1px solid #b3b3b3;
}
+.ledger {
+ width: 100%;
+}
.ledger .row td {
text-align: right;
padding-left: 4px;
@@ -290,10 +293,10 @@ tr:nth-child(even) td.black:hover { background-color: #f8f8f8; color: #000000;
border-bottom: 1px solid #ccc;
border-left: 1px solid #ccc;
border-right: 1px solid #ccc;
- min-width: 400px;
+ min-width: 450px;
}
#comments {
- max-width: 450px;
+ width: 600px;
}
#comments tr {
padding-right: 20px;
diff --git a/public/assets/js/lib/views/details/index.js b/public/assets/js/lib/views/details/index.js
index 6290738..7757bae 100644
--- a/public/assets/js/lib/views/details/index.js
+++ b/public/assets/js/lib/views/details/index.js
@@ -30,7 +30,7 @@ var DetailsView = View.extend({
.replace(/{{ date }}/g, datetime[0])
.replace(/{{ time }}/g, datetime[1])
.replace(/{{ active }}/g, age + " ago")
- .replace(/{{ views }}/g, thread.viewed + " " + courtesy_s(thread.viewed, "view"))
+ .replace(/{{ views }}/g, thread.viewed + " view" + courtesy_s(thread.viewed))
console.log(t)
console.log(data.thread)
// name date time active views
diff --git a/public/assets/js/lib/views/index/hootbox.js b/public/assets/js/lib/views/index/hootbox.js
index 9d1cc3d..f93a689 100644
--- a/public/assets/js/lib/views/index/hootbox.js
+++ b/public/assets/js/lib/views/index/hootbox.js
@@ -5,6 +5,17 @@ var HootBox = FormView.extend({
events: {
},
+ validate: function(){
+ var errors = []
+ var comment = $("[name=comment]").val()
+ if (! comment || ! comment.length) {
+ errors.push("Please enter a comment.")
+ }
+ return errors.length ? errors : null
+ },
+
+ action: "/api/thread/1/comment",
+
initialize: function(){
this.__super__.initialize.call(this)
this.template = this.$(".template").html()
@@ -31,7 +42,8 @@ var HootBox = FormView.extend({
this.$hoots.append($el)
},
- success: function(){
+ success: function(comment){
this.prependComment(comment)
+ this.$("[name=comment]").val("")
}
}) \ No newline at end of file
diff --git a/public/assets/js/lib/views/index/threadbox.js b/public/assets/js/lib/views/index/threadbox.js
index 0c6a4be..8d8cb02 100644
--- a/public/assets/js/lib/views/index/threadbox.js
+++ b/public/assets/js/lib/views/index/threadbox.js
@@ -35,6 +35,7 @@ var ThreadBox = View.extend({
},
parse: function(thread){
+ if (thread.comment_count === undefined) return ""
var views = hush_views(thread.viewed)
var size = hush_size(thread.size)
var comments = hush_null(thread.comment_count, "c")
diff --git a/public/assets/js/vendor/view/formview.js b/public/assets/js/vendor/view/formview.js
index 05b1ecb..384e470 100644
--- a/public/assets/js/vendor/view/formview.js
+++ b/public/assets/js/vendor/view/formview.js
@@ -53,10 +53,10 @@ var FormView = View.extend({
}
});
-// if (! hasCSRF) {
-// fd.append("_csrf", $("[name=_csrf]").attr("value"))
-// }
-//
+ if (! hasCSRF) {
+ fd.append("_csrf", $("[name=_csrf]").attr("value"))
+ }
+
return fd
},
@@ -64,7 +64,7 @@ var FormView = View.extend({
e && e.preventDefault()
this.$errors.hide().css("opacity", 0.0);
-
+
if (this.validate) {
var errors = this.validate()
if (errors && errors.length) {
@@ -90,30 +90,25 @@ var FormView = View.extend({
processData: false,
contentType: false,
success: function(response){
-
- if (response.error) {
- var errors = []
- for (var key in response.error.errors) {
- errors.push(response.error.errors[key].message);
- }
- if (errorCallback) {
- errorCallback(errors)
- }
- else {
- this.showErrors(errors)
- }
- return
+ if (response.error) {
+ var errors = []
+ for (var key in response.error.errors) {
+ errors.push(response.error.errors[key].message);
+ }
+ if (errorCallback) {
+ errorCallback(errors)
}
else {
- if (successCallback) {
- successCallback(response)
- }
- if (this.success) {
- this.success(response)
- }
+ this.showErrors(errors)
}
-
-
+ return
+ }
+ if (successCallback) {
+ successCallback(response)
+ }
+ if (this.success) {
+ this.success(response)
+ }
}.bind(this),
error: function(response){
}.bind(this),
diff --git a/views/partials/hootbox.ejs b/views/partials/hootbox.ejs
index 3856f94..38d1aa0 100644
--- a/views/partials/hootbox.ejs
+++ b/views/partials/hootbox.ejs
@@ -1,7 +1,8 @@
<div class="bluebox" id="hootbox">
- <form>
- <input type="text" name="hoot">
+ <form autocomplete="off">
+ <input type="text" name="comment" autocomplete="off">
<button><%= hoot_text %></button>
+ <div class="errors"></div>
</form>
<table id="hoots">
<script class="template" type="text/html">