diff --git a/.gitignore b/.gitignore index 182ac92..0d1a7d3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ node_modules data custom/*.js public/dist/*.js +public/dist/*.map public/dist/index.html config.js *.sublime-workspace diff --git a/index.js b/index.js index 7890c80..58d43c2 100644 --- a/index.js +++ b/index.js @@ -4,7 +4,6 @@ const config = require('./config'); const Repository = require('./lib/repository'); const NotificationWorker = require('./lib/workers/notification'); -const _ = require('lodash'); const fs = require('fs'); const express = require('express'); const bodyParser = require('body-parser'); @@ -17,7 +16,7 @@ const cookieParser = require('cookie-parser'); const webpack = require('webpack'); const webpackDevMiddleware = require('webpack-dev-middleware'); const webpackHotMiddleware = require('webpack-hot-middleware'); -const webpackConfig = require('./webpack.config.js'); +const webpackConfigFactory = require('./webpack.config.js'); (async () => { @@ -52,6 +51,7 @@ const webpackConfig = require('./webpack.config.js'); // Frontend if (isDevelopment) { + const webpackConfig = webpackConfigFactory(process.env, { mode: 'development' }); const compiler = webpack(webpackConfig); app.use(webpackDevMiddleware(compiler, { diff --git a/lib/repository/code.js b/lib/repository/code.js index 52c8885..d8fc2c5 100644 --- a/lib/repository/code.js +++ b/lib/repository/code.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +const map = require('lodash/map'); const retry = require('async-retry'); const generate = require('nanoid/generate'); const markdown = require('markdown').markdown; @@ -137,7 +137,7 @@ class CodeRepository return; } - resolve(_.map(docs, (doc) => new Code(doc))); + resolve(map(docs, (doc) => new Code(doc))); }); }); } diff --git a/lib/repository/index.js b/lib/repository/index.js index f2cf610..91db035 100644 --- a/lib/repository/index.js +++ b/lib/repository/index.js @@ -1,5 +1,3 @@ -//const debug = require('debug')('recv:users'); -const _ = require('lodash'); const path = require('path'); const mkdirp = require('mkdirp'); const Datastore = require('nedb'); diff --git a/lib/repository/notification.js b/lib/repository/notification.js index 1650aad..7531c97 100644 --- a/lib/repository/notification.js +++ b/lib/repository/notification.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +const map = require('lodash/map'); class Notification @@ -38,7 +38,7 @@ class NotificationRepository return; } - resolve(_.map(docs, (doc) => new Notification(doc))); + resolve(map(docs, (doc) => new Notification(doc))); }); }); } diff --git a/lib/repository/upload.js b/lib/repository/upload.js index 5717fe8..d38897c 100644 --- a/lib/repository/upload.js +++ b/lib/repository/upload.js @@ -1,4 +1,5 @@ -const _ = require('lodash'); +const map = require('lodash/map'); +const filter = require('lodash/filter'); class Upload @@ -61,9 +62,9 @@ class UploadRepository userId: userId, code: code, expiration: expiration, - files: _.map(_.filter(files, - (file) => file.hasOwnProperty('id') && file.hasOwnProperty('name')), - (file) => { return { id: file.id, name: file.name, size: file.size } }) + files: map(filter(files, + (file) => file.hasOwnProperty('id') && file.hasOwnProperty('name')), + (file) => { return { id: file.id, name: file.name, size: file.size } }) }; if (upload.files.length) diff --git a/lib/repository/user.js b/lib/repository/user.js index 8f1ee82..669bec7 100644 --- a/lib/repository/user.js +++ b/lib/repository/user.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +const map = require('lodash/map'); const AuthTokens = require('../authtokens'); const bcrypt = require('bcrypt'); @@ -121,7 +121,7 @@ class UserRepository return; } - resolve(_.map(docs, (doc) => new User(doc))); + resolve(map(docs, (doc) => new User(doc))); }); }); } diff --git a/package-lock.json b/package-lock.json index c813def..d954721 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1520,6 +1520,17 @@ "callsite": "1.0.0" } }, + "bfj-node4": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz", + "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "check-types": "7.3.0", + "tryer": "1.0.0" + } + }, "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", @@ -2138,6 +2149,12 @@ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, + "check-types": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.3.0.tgz", + "integrity": "sha1-Ro9XGkQ1wkJI9f0MsOjYfDw0Hn0=", + "dev": true + }, "cheerio": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", @@ -3245,6 +3262,12 @@ "run-parallel": "1.1.8" } }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -3977,6 +4000,12 @@ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -5486,6 +5515,16 @@ "lodash": "4.17.5" } }, + "gzip-size": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", + "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", + "dev": true, + "requires": { + "duplexer": "0.1.1", + "pify": "3.0.0" + } + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -12631,6 +12670,12 @@ "mimic-fn": "1.2.0" } }, + "opener": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", + "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", + "dev": true + }, "opn": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", @@ -15746,6 +15791,12 @@ } } }, + "tryer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.0.tgz", + "integrity": "sha1-Antp+oIyJeVRys4+8DsR9qs3wdc=", + "dev": true + }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -18615,6 +18666,38 @@ } } }, + "webpack-bundle-analyzer": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.11.1.tgz", + "integrity": "sha512-VKUVkVMc6TWVXmF1OxsBXoiRjYiDRA4XT0KqtbLMDK+891VX7FCuklYwzldND8J2upUcHHnuXYNTP+4mSFi4Kg==", + "dev": true, + "requires": { + "acorn": "5.5.3", + "bfj-node4": "5.3.1", + "chalk": "2.3.2", + "commander": "2.15.1", + "ejs": "2.5.9", + "express": "4.16.3", + "filesize": "3.6.1", + "gzip-size": "4.1.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "opener": "1.4.3", + "ws": "4.1.0" + }, + "dependencies": { + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true, + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1" + } + } + } + }, "webpack-cli": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.0.13.tgz", diff --git a/package.json b/package.json index 7b16860..260e9ee 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "main": "index.js", "scripts": { "dev": "supervisor -w index.js,lib index.js", + "devbuild": "webpack --mode development", "build": "webpack --mode production", "test": "echo \"Error: no test specified\" && exit 1" }, @@ -64,6 +65,7 @@ "vue-style-loader": "^4.1.0", "vue-template-compiler": "^2.5.16", "webpack": "^4.2.0", + "webpack-bundle-analyzer": "^2.11.1", "webpack-cli": "^2.0.13", "webpack-dev-middleware": "^3.0.1", "webpack-hot-middleware": "^2.21.2" diff --git a/public/src/App.vue b/public/src/App.vue index 13a2a92..915b94d 100644 --- a/public/src/App.vue +++ b/public/src/App.vue @@ -13,7 +13,6 @@