diff --git a/gulpfile.js b/gulpfile.js index 255c5c0..e61ed9a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,6 +1,12 @@ var gulp = require('gulp'); var uglify = require('gulp-uglify'); var nodemon = require('gulp-nodemon'); +var browserify = require('browserify'); +var babel = require('babelify'); +var source = require('vinyl-source-stream'); +var buffer = require('vinyl-buffer'); + +// var bundler = gulp.task('watch', function() { gulp.watch('src/js/main.js', ['build']); @@ -9,11 +15,22 @@ gulp.task('watch', function() { gulp.task('build', ['uglify']); gulp.task('uglify', function() { - gulp.src('src/js/main.js') + gulp.src('src/public/main.js') .pipe(uglify()) .pipe(gulp.dest('src/public')); }); +gulp.task('bundle', function() { + return browserify('src/js/main.js', { debug: true }).transform(babel.configure({ + presets: ["es2015"] + })).bundle() + .pipe(source('main.js')) + .pipe(buffer()) + .pipe(uglify()) + .pipe(gulp.dest('src/public')) + +}); + gulp.task('start', function() { nodemon({ script: 'index.js', @@ -22,6 +39,6 @@ gulp.task('start', function() { env: { 'NODE_ENV': 'development' }, - tasks: ['build'] + tasks: ['bundle'] }) -}) +}); diff --git a/package.json b/package.json index 1517b74..fe5f548 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,8 @@ "main": "index.js", "dependencies": { "babel": "^5.8.23", + "babelify": "^7.2.0", + "browserify": "^13.0.0", "compression": "^1.6.0", "connect-redis": "^3.0.1", "express": "^4.13.3", @@ -17,9 +19,13 @@ "shortid": "^2.2.4", "socket.io": "^1.4.0", "underscore": "^1.8.3", - "uuid": "^2.0.1" + "uuid": "^2.0.1", + "vinyl-buffer": "^1.0.0", + "vinyl-source-stream": "^1.1.0" }, "devDependencies": { + "babel-preset-es2015": "^6.3.13", + "compression": "^1.6.0", "gulp-nodemon": "^2.0.6" }, "scripts": { diff --git a/src/js/main.js b/src/js/main.js index 52d6f7e..f8d38e3 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -1,54 +1,54 @@ -var fs = window.RequestFileSystem || window.webkitRequestFileSystem; +let fs = window.RequestFileSystem || window.webkitRequestFileSystem; + +window.favicon = new Favico({ + animation:'pop', + type : 'rectangle' +}); $(function() { - var isActive = false; - var newMessages = 0; - var FADE_TIME = 150; // ms - var TYPING_TIMER_LENGTH = 400; // ms - var COLORS = [ + let beep = new Audio('beep.mp3'); + let isActive = false; + let newMessages = 0; + let FADE_TIME = 150; // ms + let TYPING_TIMER_LENGTH = 400; // ms + let COLORS = [ '#e21400', '#91580f', '#f8a700', '#f78b00', '#58dc00', '#287b00', '#a8f07a', '#4ae8c4', '#3b88eb', '#3824aa', '#a700ff', '#d300e7' ]; - window.favicon = new Favico({ - animation:'pop', - type : 'rectangle' - }); + let $window = $(window); + let $usernameInput = $('.usernameInput'); // Input for username + let $messages = $('.messages'); // Messages area + let $inputMessage = $('.inputMessage'); // Input message input box + let $key = $('.key'); + let $genKey = $('.new_key'); + let $participants = $('#participants'); - // Initialize variables - var $window = $(window); - var $usernameInput = $('.usernameInput'); // Input for username - var $messages = $('.messages'); // Messages area - var $inputMessage = $('.inputMessage'); // Input message input box - var $key = $('.key'); - var $genKey = $('.new_key'); - var $participants = $('#participants'); + let $chatPage = $('.chat.page'); // The chatroom page - var $chatPage = $('.chat.page'); // The chatroom page - - var users = []; + let users = []; // Prompt for setting a username - var username; - var connected = false; - var typing = false; - var lastTypingTime; - var $currentInput = $usernameInput.focus(); - var encryptionKey; + let username; + let connected = false; + let typing = false; + let lastTypingTime; + let $currentInput = $usernameInput.focus(); + let encryptionKey; - var clipboard = new Clipboard('.copyable'); + let clipboard = new Clipboard('.copyable'); - var roomId = window.location.pathname.length ? window.location.pathname : null; + let roomId = window.location.pathname.length ? window.location.pathname : null; if (!roomId) return; - var socket = io(roomId); + let socket = io(roomId); $('#roomIdKey').text(roomId.replace('/', '')); function addParticipantsMessage (data) { - var message = ''; - var headerMsg = ''; + let message = ''; + let headerMsg = ''; $participants.text(data.numUsers); } @@ -81,7 +81,7 @@ $(function() { // Don't allow sending if key is empty if (!encryptionKey.trim().length) return; - var message = $inputMessage.val(); + let message = $inputMessage.val(); // Prevent markup from being injected into the message message = cleanInput(message); // if there is a non-empty message and a socket connection @@ -107,8 +107,8 @@ $(function() { // Log a message function log (message, options) { - var html = options && options.html === true || false; - var $el; + let html = options && options.html === true || false; + let $el; if (html) { $el = $('