diff --git a/.electrify/.gitignore b/.electrify/.gitignore
deleted file mode 100644
index 838993efbaea1ed2e34f1bd52fe2bacef22597d5..0000000000000000000000000000000000000000
--- a/.electrify/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-.DS_Store
-.dist
-app
-bin
-db
-node_modules
\ No newline at end of file
diff --git a/.electrify/command b/.electrify/command
deleted file mode 100644
index 00b71e4010459fb5316d3aeed650af8e024c06c5..0000000000000000000000000000000000000000
--- a/.electrify/command
+++ /dev/null
@@ -1,3 +0,0 @@
-electrify package -- --icon=public/logo/head.ico
-#mac
-electrify package -- --icon=public/logo/head.icns
diff --git a/.electrify/electrify.json b/.electrify/electrify.json
deleted file mode 100644
index 783792ba554a4ccb4ea1e5e757f09fc15116151f..0000000000000000000000000000000000000000
--- a/.electrify/electrify.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "plugins": []
-}
\ No newline at end of file
diff --git a/.electrify/index.js b/.electrify/index.js
deleted file mode 100644
index fb4b2ce7e09e4a7ba44ab802552c09b614ea3724..0000000000000000000000000000000000000000
--- a/.electrify/index.js
+++ /dev/null
@@ -1,100 +0,0 @@
-const {app, BrowserWindow} = require('electron');
-const electrify = require('electrify')(__dirname);
-// UNCOMMENT FOR MAC PACKAGE
-//var Menu = require("menu");
-
-var window = null;
-
-app.on('ready', function () {
-
- // electrify start
- electrify.start(function (meteor_root_url) {
-
- // creates a new electron window
- window = new BrowserWindow({
- width: 1200, height: 900,
- 'node-integration': false // node integration must to be off
- });
-
- // open up meteor root url
- window.loadURL(meteor_root_url);
-
- /* UNCOMMENT FOR MAC PACKAGE
- var template = [{
- label: "Application",
- submenu: [
- {
- label: "Quit", accelerator: "Command+Q", click: function () {
- app.quit();
- }
- }
- ]
- }, {
- label: "Edit",
- submenu: [
- {label: "Undo", accelerator: "CmdOrCtrl+Z", selector: "undo:"},
- {label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:"},
- {type: "separator"},
- {label: "Cut", accelerator: "CmdOrCtrl+X", selector: "cut:"},
- {label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:"},
- {label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:"},
- {label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:"}
- ]
- }
- ];
-
- Menu.setApplicationMenu(Menu.buildFromTemplate(template));*/
- });
-});
-
-
-app.on('window-all-closed', function () {
- app.quit();
-});
-
-
-app.on('will-quit', function terminate_and_quit(event) {
-
- // if electrify is up, cancel exiting with `preventDefault`,
- // so we can terminate electrify gracefully without leaving child
- // processes hanging in background
- if (electrify.isup() && event) {
-
- // holds electron termination
- event.preventDefault();
-
- // gracefully stops electrify
- electrify.stop(function () {
-
- // and then finally quit app
- app.quit();
- });
- }
-});
-
-//
-// =============================================================================
-//
-// the methods bellow can be called seamlessly from your Meteor's
-// client and server code, using:
-//
-// Electrify.call('methodname', [..args..], callback);
-//
-// ATENTION:
-// From meteor, you can only call these methods after electrify is fully
-// started, use the Electrify.startup() convenience method for this
-//
-//
-// Electrify.startup(function(){
-// Electrify.call(...);
-// });
-//
-// =============================================================================
-//
-// electrify.methods({
-// 'method.name': function(name, done) {
-// // do things... and call done(err, arg1, ..., argN)
-// done(null);
-// }
-// });
-//
diff --git a/.electron/index.js b/.electron/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..d18ede50268becc1d804a8b481079e104cd87e84
--- /dev/null
+++ b/.electron/index.js
@@ -0,0 +1,158 @@
+const {app, BrowserWindow, Menu} = require('electron');
+const path = require('path');
+const net = require('net');
+const join = path.join;
+const spawn = require('child_process').spawn;
+const shell = require('shelljs');
+
+const logTag = '[MONGOCLIENT]';
+let window = null;
+
+const createWindow = function () {
+ console.log(logTag, 'trying to start Mongoclient electron application');
+ const appRoot = path.resolve(__dirname);
+
+ // show loading
+ const win = new BrowserWindow({
+ width: 1200,
+ height: 900,
+ frame: false
+ });
+ win.loadURL(join(appRoot, 'loading.html'));
+
+ //fix tunnel-ssh
+ shell.cp('-R', join(appRoot, 'app', '/programs/server/npm/node_modules/tunnel-ssh'), join(appRoot, 'app', 'programs/server/npm/node_modules/meteor/modules-runtime/node_modules/'));
+
+ beginStartingMongo(appRoot, win);
+};
+
+const beginStartingMongo = function (appRoot, loadingWin) {
+ console.log(logTag, 'trying to start mongod process');
+ let path = join(appRoot, 'bin', 'mongod');
+ if (process.platform === 'win32') {
+ path += '.exe';
+ }
+ console.log(logTag, 'detected mongod executable path: ' + path);
+
+ let dataDir;
+ let lockfile;
+
+ if (process.platform === 'win32') {
+ dataDir = process.env.APPDATA;
+ }
+ else if (process.platform === 'darwin') {
+ dataDir = join(process.env.HOME, 'Library', 'Preferences');
+ }
+ else if (process.platform === 'linux') {
+ dataDir = join(process.env.HOME, 'var', 'local');
+ }
+ dataDir = join(dataDir, 'Mongoclient', 'db');
+ lockfile = join(dataDir, 'mongod.lock');
+ console.log(logTag, 'detected mongod data directory: ' + dataDir);
+
+ console.log(logTag, 'trying to create data dir and removing mongod.lock just in case');
+ shell.mkdir('-p', dataDir);
+ shell.rm('-f', lockfile);
+
+ freeport(null, function (port) {
+ console.log(logTag, 'trying to spawn mongod process with port: ' + port);
+ let mongoProcess = spawn(path, [
+ '--dbpath', dataDir,
+ '--port', port,
+ '--bind_ip', '127.0.0.1',
+ '--smallfiles'
+ ]);
+
+ mongoProcess.stdout.on('data', function (data) {
+ console.log(logTag, '[MONGOD-STDOUT]', data.toString());
+ });
+
+ mongoProcess.stderr.on('data', function (data) {
+ console.error(logTag, '[MONGOD-STDERR]', data.toString());
+ });
+
+ mongoProcess.on('exit', function (code) {
+ console.log(logTag, '[MONGOD-EXIT]', code.toString());
+ });
+
+ startNode(appRoot, port, loadingWin);
+ });
+};
+
+const startNode = function (appRoot, mongoPort, loadingWin) {
+ console.log(logTag, 'trying to start node process');
+ let path = join(appRoot, 'bin', 'node');
+ if (process.platform === 'win32') {
+ path += '.exe';
+ }
+ console.log(logTag, 'detected node executable path: ' + path);
+
+ const mainPath = join(appRoot, 'app', 'main.js');
+ console.log(logTag, 'detected main app root: ' + mainPath);
+
+ freeport(null, function (port) {
+ process.env.PORT = port;
+ process.env.ROOT_URL = 'http://localhost:' + port;
+ process.env.MONGO_URL = 'mongodb://localhost:' + mongoPort + '/mongoclient';
+
+ console.log(logTag, 'detected environment variables: ' + JSON.stringify(process.env));
+
+ console.log(logTag, 'trying to spawn node process with port: ' + port);
+ let nodeProcess = spawn(path, [mainPath]);
+ nodeProcess.stdout.on('data', function (data) {
+ console.log(logTag, '[NODE-STDOUT]', data.toString());
+ });
+
+ nodeProcess.stderr.on('data', function (data) {
+ console.error(logTag, '[NODE-STDERR]', data.toString());
+ });
+
+ nodeProcess.on('exit', function (code) {
+ console.log(logTag, '[NODE-EXIT]', code.toString());
+ });
+
+ loadWindow(port, loadingWin);
+ });
+};
+
+const freeport = function (start, done) {
+ console.log(logTag, 'trying to find free port for spawn');
+ start = start || 11235;
+ const socket = new net.Socket()
+ .once('connect', function () {
+ socket.destroy();
+ freeport(++start, done);
+ })
+ .once('error', function (/* err */) {
+ socket.destroy();
+ done(start);
+ })
+ .connect(start, '127.0.0.1');
+};
+
+const loadWindow = function (appPort, loadingWin) {
+ window = new BrowserWindow({
+ devTools: true,
+ webPreferences: {
+ nodeIntegration: false
+ },
+ width: 1200,
+ height: 900
+ });
+
+ window.loadURL("http://localhost:" + appPort);
+ loadingWin.close();
+};
+
+app.on('ready', createWindow);
+app.on('activate', () => {
+ if (window === null) {
+ createWindow();
+ }
+});
+
+app.on('window-all-closed', function () {
+ if (process.platform !== 'darwin') {
+ app.quit()
+ }
+});
\ No newline at end of file
diff --git a/.electron/loading.html b/.electron/loading.html
new file mode 100644
index 0000000000000000000000000000000000000000..9b6529611f8feff874b8533ecd727d86423279fc
--- /dev/null
+++ b/.electron/loading.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.electron/loading/please-wait.css b/.electron/loading/please-wait.css
new file mode 100644
index 0000000000000000000000000000000000000000..4399a2a044e5c68a35b7a45a1d7775af049c2298
--- /dev/null
+++ b/.electron/loading/please-wait.css
@@ -0,0 +1,161 @@
+/* line 17, ../src/please-wait.scss */
+body.pg-loading {
+ overflow: hidden;
+}
+
+/* line 21, ../src/please-wait.scss */
+.pg-loading-screen {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ top: 0;
+ z-index: 1000000;
+ opacity: 1;
+ background-color: #FFF;
+ -webkit-transition: background-color 0.4s ease-in-out 0s;
+ -moz-transition: background-color 0.4s ease-in-out 0s;
+ -ms-transition: background-color 0.4s ease-in-out 0s;
+ -o-transition: background-color 0.4s ease-in-out 0s;
+ transition: background-color 0.4s ease-in-out 0s;
+}
+/* line 32, ../src/please-wait.scss */
+.pg-loading-screen.pg-loaded {
+ opacity: 0;
+ -webkit-animation: pgAnimLoaded 0.5s cubic-bezier(0.7, 0, 0.3, 1) both;
+ -moz-animation: pgAnimLoaded 0.5s cubic-bezier(0.7, 0, 0.3, 1) both;
+ -ms-animation: pgAnimLoaded 0.5s cubic-bezier(0.7, 0, 0.3, 1) both;
+ -o-animation: pgAnimLoaded 0.5s cubic-bezier(0.7, 0, 0.3, 1) both;
+ animation: pgAnimLoaded 0.5s cubic-bezier(0.7, 0, 0.3, 1) both;
+}
+/* line 38, ../src/please-wait.scss */
+.pg-loading-screen.pg-loading .pg-loading-logo-header, .pg-loading-screen.pg-loading .pg-loading-html {
+ opacity: 1;
+}
+/* line 42, ../src/please-wait.scss */
+.pg-loading-screen.pg-loading .pg-loading-logo-header, .pg-loading-screen.pg-loading .pg-loading-html:not(.pg-loaded) {
+ -webkit-animation: pgAnimLoading 1s cubic-bezier(0.7, 0, 0.3, 1) both;
+ -moz-animation: pgAnimLoading 1s cubic-bezier(0.7, 0, 0.3, 1) both;
+ -ms-animation: pgAnimLoading 1s cubic-bezier(0.7, 0, 0.3, 1) both;
+ -o-animation: pgAnimLoading 1s cubic-bezier(0.7, 0, 0.3, 1) both;
+ animation: pgAnimLoading 1s cubic-bezier(0.7, 0, 0.3, 1) both;
+}
+/* line 46, ../src/please-wait.scss */
+.pg-loading-screen.pg-loading .pg-loading-html:not(.pg-loaded) {
+ -webkit-animation-delay: 0.3s;
+ -moz-animation-delay: 0.3s;
+ -ms-animation-delay: 0.3s;
+ -o-animation-delay: 0.3s;
+ animation-delay: 0.3s;
+}
+/* line 51, ../src/please-wait.scss */
+.pg-loading-screen .pg-loading-inner {
+ height: 100%;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ position: static;
+}
+/* line 59, ../src/please-wait.scss */
+.pg-loading-screen .pg-loading-center-outer {
+ width: 100%;
+ padding: 0;
+ display: table !important;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ margin: 0;
+}
+/* line 70, ../src/please-wait.scss */
+.pg-loading-screen .pg-loading-center-middle {
+ padding: 0;
+ vertical-align: middle;
+ display: table-cell !important;
+ margin: 0;
+ text-align: center;
+}
+/* line 78, ../src/please-wait.scss */
+.pg-loading-screen .pg-loading-logo-header, .pg-loading-screen .pg-loading-html {
+ width: 100%;
+ opacity: 0;
+}
+/* line 83, ../src/please-wait.scss */
+.pg-loading-screen .pg-loading-logo-header {
+ text-align: center;
+}
+/* line 86, ../src/please-wait.scss */
+.pg-loading-screen .pg-loading-logo-header img {
+ display: inline-block !important;
+}
+/* line 91, ../src/please-wait.scss */
+.pg-loading-screen .pg-loading-html {
+ margin-top: 90px;
+}
+/* line 94, ../src/please-wait.scss */
+.pg-loading-screen .pg-loading-html.pg-loaded {
+ -webkit-transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1);
+ -moz-transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1);
+ -ms-transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1);
+ -o-transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1);
+ transition: opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1);
+}
+/* line 97, ../src/please-wait.scss */
+.pg-loading-screen .pg-loading-html.pg-loaded.pg-removing {
+ opacity: 0;
+}
+/* line 101, ../src/please-wait.scss */
+.pg-loading-screen .pg-loading-html.pg-loaded.pg-loading {
+ opacity: 1;
+}
+
+@-webkit-keyframes pgAnimLoading {
+ from {
+ opacity: 0;
+ }
+}
+@-moz-keyframes pgAnimLoading {
+ from {
+ opacity: 0;
+ }
+}
+@-o-keyframes pgAnimLoading {
+ from {
+ opacity: 0;
+ }
+}
+@-ms-keyframes pgAnimLoading {
+ from {
+ opacity: 0;
+ }
+}
+@keyframes pgAnimLoading {
+ from {
+ opacity: 0;
+ }
+}
+@-webkit-keyframes pgAnimLoaded {
+ from {
+ opacity: 1;
+ }
+}
+@-moz-keyframes pgAnimLoaded {
+ from {
+ opacity: 1;
+ }
+}
+@-o-keyframes pgAnimLoaded {
+ from {
+ opacity: 1;
+ }
+}
+@-ms-keyframes pgAnimLoaded {
+ from {
+ opacity: 1;
+ }
+}
+@keyframes pgAnimLoaded {
+ from {
+ opacity: 1;
+ }
+}
diff --git a/.electron/loading/please-wait.min.js b/.electron/loading/please-wait.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..01066b37bbe1142a0803b0dcaa306c9cfd03dfe7
--- /dev/null
+++ b/.electron/loading/please-wait.min.js
@@ -0,0 +1,12 @@
+/**
+* please-wait
+* Display a nice loading screen while your app loads
+
+* @author Pathgather
+* @copyright Pathgather 2015
+* @license MIT
+* @link https://github.com/Pathgather/please-wait
+* @module please-wait
+* @version 0.0.5
+*/
+!function(a,b){"object"==typeof exports?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):b(a)}(this,function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;g=document.createElement("fakeelement"),e=!1,n=!1,d="animationend",m=null,f="Webkit Moz O ms".split(" "),l={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd",transition:"transitionend"};for(h in l)if(o=l[h],null!=g.style[h]){m=o,n=!0;break}if(null!=g.style.animationName&&(e=!0),!e)for(p=0,q=f.length;q>p;p++)if(i=f[p],null!=g.style[""+i+"AnimationName"]){switch(i){case"Webkit":d="webkitAnimationEnd";break;case"Moz":d="animationend";break;case"O":d="oanimationend";break;case"ms":d="MSAnimationEnd"}e=!0;break}return c=function(a,b){return b.classList?b.classList.add(a):b.className+=" "+a},k=function(a,b){return b.classList?b.classList.remove(a):b.className=b.className.replace(a,"").trim()},b=function(){function a(a){var b,f,g,h;b=this.constructor._defaultOptions,this.options={},this.loaded=!1,this.finishing=!1;for(f in b)h=b[f],this.options[f]=null!=a[f]?a[f]:h;this._loadingElem=document.createElement("div"),this._loadingHtmlToDisplay=[],this._loadingElem.className="pg-loading-screen",null!=this.options.backgroundColor&&(this._loadingElem.style.backgroundColor=this.options.backgroundColor),this._loadingElem.innerHTML=this.options.template,this._loadingHtmlElem=this._loadingElem.getElementsByClassName("pg-loading-html")[0],null!=this._loadingHtmlElem&&(this._loadingHtmlElem.innerHTML=this.options.loadingHtml),this._readyToShowLoadingHtml=!1,this._logoElem=this._loadingElem.getElementsByClassName("pg-loading-logo")[0],null!=this._logoElem&&(this._logoElem.src=this.options.logo),k("pg-loaded",document.body),c("pg-loading",document.body),document.body.appendChild(this._loadingElem),c("pg-loading",this._loadingElem),this._onLoadedCallback=this.options.onLoadedCallback,g=function(a){return function(b){return a.loaded=!0,a._readyToShowLoadingHtml=!0,c("pg-loaded",a._loadingHtmlElem),e&&a._loadingHtmlElem.removeEventListener(d,g),a._loadingHtmlToDisplay.length>0&&a._changeLoadingHtml(),a.finishing?(null!=b&&b.stopPropagation(),a._finish()):void 0}}(this),null!=this._loadingHtmlElem&&(e?this._loadingHtmlElem.addEventListener(d,g):g(),this._loadingHtmlListener=function(a){return function(){return a._readyToShowLoadingHtml=!0,k("pg-loading",a._loadingHtmlElem),n&&a._loadingHtmlElem.removeEventListener(m,a._loadingHtmlListener),a._loadingHtmlToDisplay.length>0?a._changeLoadingHtml():void 0}}(this),this._removingHtmlListener=function(a){return function(){return a._loadingHtmlElem.innerHTML=a._loadingHtmlToDisplay.shift(),k("pg-removing",a._loadingHtmlElem),c("pg-loading",a._loadingHtmlElem),n?(a._loadingHtmlElem.removeEventListener(m,a._removingHtmlListener),a._loadingHtmlElem.addEventListener(m,a._loadingHtmlListener)):a._loadingHtmlListener()}}(this))}return a._defaultOptions={backgroundColor:null,logo:null,loadingHtml:null,template:"",onLoadedCallback:null},a.prototype.finish=function(a,b){return null==a&&(a=!1),window.document.hidden&&(a=!0),this.finishing=!0,null!=b&&this.updateOption("onLoadedCallback",b),this.loaded||a?this._finish(a):void 0},a.prototype.updateOption=function(a,b){switch(a){case"backgroundColor":return this._loadingElem.style.backgroundColor=b;case"logo":return this._logoElem.src=b;case"loadingHtml":return this.updateLoadingHtml(b);case"onLoadedCallback":return this._onLoadedCallback=b;default:throw new Error("Unknown option '"+a+"'")}},a.prototype.updateOptions=function(a){var b,c,d;null==a&&(a={}),d=[];for(b in a)c=a[b],d.push(this.updateOption(b,c));return d},a.prototype.updateLoadingHtml=function(a,b){if(null==b&&(b=!1),null==this._loadingHtmlElem)throw new Error("The loading template does not have an element of class 'pg-loading-html'");return b?(this._loadingHtmlToDisplay=[a],this._readyToShowLoadingHtml=!0):this._loadingHtmlToDisplay.push(a),this._readyToShowLoadingHtml?this._changeLoadingHtml():void 0},a.prototype._changeLoadingHtml=function(){return this._readyToShowLoadingHtml=!1,this._loadingHtmlElem.removeEventListener(m,this._loadingHtmlListener),this._loadingHtmlElem.removeEventListener(m,this._removingHtmlListener),k("pg-loading",this._loadingHtmlElem),k("pg-removing",this._loadingHtmlElem),n?(c("pg-removing",this._loadingHtmlElem),this._loadingHtmlElem.addEventListener(m,this._removingHtmlListener)):this._removingHtmlListener()},a.prototype._finish=function(a){var b;return null==a&&(a=!1),null!=this._loadingElem?(c("pg-loaded",document.body),"function"==typeof this._onLoadedCallback&&this._onLoadedCallback.apply(this),b=function(a){return function(){return document.body.removeChild(a._loadingElem),k("pg-loading",document.body),e&&a._loadingElem.removeEventListener(d,b),a._loadingElem=null}}(this),!a&&e?(c("pg-loaded",this._loadingElem),this._loadingElem.addEventListener(d,b)):b()):void 0},a}(),j=function(a){return null==a&&(a={}),new b(a)},a.pleaseWait=j,j});
\ No newline at end of file
diff --git a/.electron/loading/spinkit.css b/.electron/loading/spinkit.css
new file mode 100644
index 0000000000000000000000000000000000000000..0b79b8685fd719bf452cc59a1c88f27fef302ba0
--- /dev/null
+++ b/.electron/loading/spinkit.css
@@ -0,0 +1,770 @@
+/*
+ * Usage:
+ *
+
+ *
+ */
+.sk-rotating-plane {
+ width: 40px;
+ height: 40px;
+ background-color: #333;
+ margin: 40px auto;
+ -webkit-animation: sk-rotatePlane 1.2s infinite ease-in-out;
+ animation: sk-rotatePlane 1.2s infinite ease-in-out; }
+
+@-webkit-keyframes sk-rotatePlane {
+ 0% {
+ -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(0deg) rotateY(0deg); }
+ 50% {
+ -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); }
+ 100% {
+ -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
+ transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); } }
+
+@keyframes sk-rotatePlane {
+ 0% {
+ -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(0deg) rotateY(0deg); }
+ 50% {
+ -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); }
+ 100% {
+ -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
+ transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); } }
+
+/*
+ * Usage:
+ *
+
+ *
+ */
+.sk-double-bounce {
+ width: 40px;
+ height: 40px;
+ position: relative;
+ margin: 40px auto; }
+ .sk-double-bounce .sk-child {
+ width: 100%;
+ height: 100%;
+ border-radius: 50%;
+ background-color: #333;
+ opacity: 0.6;
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-animation: sk-doubleBounce 2s infinite ease-in-out;
+ animation: sk-doubleBounce 2s infinite ease-in-out; }
+ .sk-double-bounce .sk-double-bounce2 {
+ -webkit-animation-delay: -1.0s;
+ animation-delay: -1.0s; }
+
+@-webkit-keyframes sk-doubleBounce {
+ 0%, 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1); } }
+
+@keyframes sk-doubleBounce {
+ 0%, 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1); } }
+
+/*
+ * Usage:
+ *
+
+ *
+ */
+.sk-wave {
+ margin: 40px auto;
+ width: 50px;
+ height: 40px;
+ text-align: center;
+ font-size: 10px; }
+ .sk-wave .sk-rect {
+ background-color: #333;
+ height: 100%;
+ width: 6px;
+ display: inline-block;
+ -webkit-animation: sk-waveStretchDelay 1.2s infinite ease-in-out;
+ animation: sk-waveStretchDelay 1.2s infinite ease-in-out; }
+ .sk-wave .sk-rect1 {
+ -webkit-animation-delay: -1.2s;
+ animation-delay: -1.2s; }
+ .sk-wave .sk-rect2 {
+ -webkit-animation-delay: -1.1s;
+ animation-delay: -1.1s; }
+ .sk-wave .sk-rect3 {
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s; }
+ .sk-wave .sk-rect4 {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s; }
+ .sk-wave .sk-rect5 {
+ -webkit-animation-delay: -0.8s;
+ animation-delay: -0.8s; }
+
+@-webkit-keyframes sk-waveStretchDelay {
+ 0%, 40%, 100% {
+ -webkit-transform: scaleY(0.4);
+ transform: scaleY(0.4); }
+ 20% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1); } }
+
+@keyframes sk-waveStretchDelay {
+ 0%, 40%, 100% {
+ -webkit-transform: scaleY(0.4);
+ transform: scaleY(0.4); }
+ 20% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1); } }
+
+/*
+ * Usage:
+ *
+
+ *
+ */
+.sk-wandering-cubes {
+ margin: 40px auto;
+ width: 40px;
+ height: 40px;
+ position: relative; }
+ .sk-wandering-cubes .sk-cube {
+ background-color: #333;
+ width: 10px;
+ height: 10px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-animation: sk-wanderingCube 1.8s ease-in-out -1.8s infinite both;
+ animation: sk-wanderingCube 1.8s ease-in-out -1.8s infinite both; }
+ .sk-wandering-cubes .sk-cube2 {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s; }
+
+@-webkit-keyframes sk-wanderingCube {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg); }
+ 25% {
+ -webkit-transform: translateX(30px) rotate(-90deg) scale(0.5);
+ transform: translateX(30px) rotate(-90deg) scale(0.5); }
+ 50% {
+ /* Hack to make FF rotate in the right direction */
+ -webkit-transform: translateX(30px) translateY(30px) rotate(-179deg);
+ transform: translateX(30px) translateY(30px) rotate(-179deg); }
+ 50.1% {
+ -webkit-transform: translateX(30px) translateY(30px) rotate(-180deg);
+ transform: translateX(30px) translateY(30px) rotate(-180deg); }
+ 75% {
+ -webkit-transform: translateX(0) translateY(30px) rotate(-270deg) scale(0.5);
+ transform: translateX(0) translateY(30px) rotate(-270deg) scale(0.5); }
+ 100% {
+ -webkit-transform: rotate(-360deg);
+ transform: rotate(-360deg); } }
+
+@keyframes sk-wanderingCube {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg); }
+ 25% {
+ -webkit-transform: translateX(30px) rotate(-90deg) scale(0.5);
+ transform: translateX(30px) rotate(-90deg) scale(0.5); }
+ 50% {
+ /* Hack to make FF rotate in the right direction */
+ -webkit-transform: translateX(30px) translateY(30px) rotate(-179deg);
+ transform: translateX(30px) translateY(30px) rotate(-179deg); }
+ 50.1% {
+ -webkit-transform: translateX(30px) translateY(30px) rotate(-180deg);
+ transform: translateX(30px) translateY(30px) rotate(-180deg); }
+ 75% {
+ -webkit-transform: translateX(0) translateY(30px) rotate(-270deg) scale(0.5);
+ transform: translateX(0) translateY(30px) rotate(-270deg) scale(0.5); }
+ 100% {
+ -webkit-transform: rotate(-360deg);
+ transform: rotate(-360deg); } }
+
+/*
+ * Usage:
+ *
+
+ *
+ */
+.sk-spinner-pulse {
+ width: 40px;
+ height: 40px;
+ margin: 40px auto;
+ background-color: #333;
+ border-radius: 100%;
+ -webkit-animation: sk-pulseScaleOut 1s infinite ease-in-out;
+ animation: sk-pulseScaleOut 1s infinite ease-in-out; }
+
+@-webkit-keyframes sk-pulseScaleOut {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 0; } }
+
+@keyframes sk-pulseScaleOut {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 0; } }
+
+/*
+ * Usage:
+ *
+
+ *
+ */
+.sk-chasing-dots {
+ margin: 40px auto;
+ width: 40px;
+ height: 40px;
+ position: relative;
+ text-align: center;
+ -webkit-animation: sk-chasingDotsRotate 2s infinite linear;
+ animation: sk-chasingDotsRotate 2s infinite linear; }
+ .sk-chasing-dots .sk-child {
+ width: 60%;
+ height: 60%;
+ display: inline-block;
+ position: absolute;
+ top: 0;
+ background-color: #333;
+ border-radius: 100%;
+ -webkit-animation: sk-chasingDotsBounce 2s infinite ease-in-out;
+ animation: sk-chasingDotsBounce 2s infinite ease-in-out; }
+ .sk-chasing-dots .sk-dot2 {
+ top: auto;
+ bottom: 0;
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s; }
+
+@-webkit-keyframes sk-chasingDotsRotate {
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg); } }
+
+@keyframes sk-chasingDotsRotate {
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg); } }
+
+@-webkit-keyframes sk-chasingDotsBounce {
+ 0%, 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1); } }
+
+@keyframes sk-chasingDotsBounce {
+ 0%, 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1); } }
+
+/*
+ * Usage:
+ *
+
+ *
+ */
+.sk-three-bounce {
+ margin: 40px auto;
+ width: 80px;
+ text-align: center; }
+ .sk-three-bounce .sk-child {
+ width: 20px;
+ height: 20px;
+ background-color: #333;
+ border-radius: 100%;
+ display: inline-block;
+ -webkit-animation: sk-three-bounce 1.4s ease-in-out 0s infinite both;
+ animation: sk-three-bounce 1.4s ease-in-out 0s infinite both; }
+ .sk-three-bounce .sk-bounce1 {
+ -webkit-animation-delay: -0.32s;
+ animation-delay: -0.32s; }
+ .sk-three-bounce .sk-bounce2 {
+ -webkit-animation-delay: -0.16s;
+ animation-delay: -0.16s; }
+
+@-webkit-keyframes sk-three-bounce {
+ 0%, 80%, 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ 40% {
+ -webkit-transform: scale(1);
+ transform: scale(1); } }
+
+@keyframes sk-three-bounce {
+ 0%, 80%, 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ 40% {
+ -webkit-transform: scale(1);
+ transform: scale(1); } }
+
+/*
+ * Usage:
+ *
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ *
+ */
+.sk-circle {
+ margin: 40px auto;
+ width: 40px;
+ height: 40px;
+ position: relative; }
+ .sk-circle .sk-child {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0; }
+ .sk-circle .sk-child:before {
+ content: '';
+ display: block;
+ margin: 0 auto;
+ width: 15%;
+ height: 15%;
+ background-color: #333;
+ border-radius: 100%;
+ -webkit-animation: sk-circleBounceDelay 1.2s infinite ease-in-out both;
+ animation: sk-circleBounceDelay 1.2s infinite ease-in-out both; }
+ .sk-circle .sk-circle2 {
+ -webkit-transform: rotate(30deg);
+ -ms-transform: rotate(30deg);
+ transform: rotate(30deg); }
+ .sk-circle .sk-circle3 {
+ -webkit-transform: rotate(60deg);
+ -ms-transform: rotate(60deg);
+ transform: rotate(60deg); }
+ .sk-circle .sk-circle4 {
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg); }
+ .sk-circle .sk-circle5 {
+ -webkit-transform: rotate(120deg);
+ -ms-transform: rotate(120deg);
+ transform: rotate(120deg); }
+ .sk-circle .sk-circle6 {
+ -webkit-transform: rotate(150deg);
+ -ms-transform: rotate(150deg);
+ transform: rotate(150deg); }
+ .sk-circle .sk-circle7 {
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg); }
+ .sk-circle .sk-circle8 {
+ -webkit-transform: rotate(210deg);
+ -ms-transform: rotate(210deg);
+ transform: rotate(210deg); }
+ .sk-circle .sk-circle9 {
+ -webkit-transform: rotate(240deg);
+ -ms-transform: rotate(240deg);
+ transform: rotate(240deg); }
+ .sk-circle .sk-circle10 {
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg); }
+ .sk-circle .sk-circle11 {
+ -webkit-transform: rotate(300deg);
+ -ms-transform: rotate(300deg);
+ transform: rotate(300deg); }
+ .sk-circle .sk-circle12 {
+ -webkit-transform: rotate(330deg);
+ -ms-transform: rotate(330deg);
+ transform: rotate(330deg); }
+ .sk-circle .sk-circle2:before {
+ -webkit-animation-delay: -1.1s;
+ animation-delay: -1.1s; }
+ .sk-circle .sk-circle3:before {
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s; }
+ .sk-circle .sk-circle4:before {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s; }
+ .sk-circle .sk-circle5:before {
+ -webkit-animation-delay: -0.8s;
+ animation-delay: -0.8s; }
+ .sk-circle .sk-circle6:before {
+ -webkit-animation-delay: -0.7s;
+ animation-delay: -0.7s; }
+ .sk-circle .sk-circle7:before {
+ -webkit-animation-delay: -0.6s;
+ animation-delay: -0.6s; }
+ .sk-circle .sk-circle8:before {
+ -webkit-animation-delay: -0.5s;
+ animation-delay: -0.5s; }
+ .sk-circle .sk-circle9:before {
+ -webkit-animation-delay: -0.4s;
+ animation-delay: -0.4s; }
+ .sk-circle .sk-circle10:before {
+ -webkit-animation-delay: -0.3s;
+ animation-delay: -0.3s; }
+ .sk-circle .sk-circle11:before {
+ -webkit-animation-delay: -0.2s;
+ animation-delay: -0.2s; }
+ .sk-circle .sk-circle12:before {
+ -webkit-animation-delay: -0.1s;
+ animation-delay: -0.1s; }
+
+@-webkit-keyframes sk-circleBounceDelay {
+ 0%, 80%, 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ 40% {
+ -webkit-transform: scale(1);
+ transform: scale(1); } }
+
+@keyframes sk-circleBounceDelay {
+ 0%, 80%, 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0); }
+ 40% {
+ -webkit-transform: scale(1);
+ transform: scale(1); } }
+
+/*
+ * Usage:
+ *
+
+ *
+ */
+.sk-cube-grid {
+ width: 40px;
+ height: 40px;
+ margin: 40px auto;
+ /*
+ * Spinner positions
+ * 1 2 3
+ * 4 5 6
+ * 7 8 9
+ */ }
+ .sk-cube-grid .sk-cube {
+ width: 33.33%;
+ height: 33.33%;
+ background-color: #333;
+ float: left;
+ -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;
+ animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; }
+ .sk-cube-grid .sk-cube1 {
+ -webkit-animation-delay: 0.2s;
+ animation-delay: 0.2s; }
+ .sk-cube-grid .sk-cube2 {
+ -webkit-animation-delay: 0.3s;
+ animation-delay: 0.3s; }
+ .sk-cube-grid .sk-cube3 {
+ -webkit-animation-delay: 0.4s;
+ animation-delay: 0.4s; }
+ .sk-cube-grid .sk-cube4 {
+ -webkit-animation-delay: 0.1s;
+ animation-delay: 0.1s; }
+ .sk-cube-grid .sk-cube5 {
+ -webkit-animation-delay: 0.2s;
+ animation-delay: 0.2s; }
+ .sk-cube-grid .sk-cube6 {
+ -webkit-animation-delay: 0.3s;
+ animation-delay: 0.3s; }
+ .sk-cube-grid .sk-cube7 {
+ -webkit-animation-delay: 0.0s;
+ animation-delay: 0.0s; }
+ .sk-cube-grid .sk-cube8 {
+ -webkit-animation-delay: 0.1s;
+ animation-delay: 0.1s; }
+ .sk-cube-grid .sk-cube9 {
+ -webkit-animation-delay: 0.2s;
+ animation-delay: 0.2s; }
+
+@-webkit-keyframes sk-cubeGridScaleDelay {
+ 0%, 70%, 100% {
+ -webkit-transform: scale3D(1, 1, 1);
+ transform: scale3D(1, 1, 1); }
+ 35% {
+ -webkit-transform: scale3D(0, 0, 1);
+ transform: scale3D(0, 0, 1); } }
+
+@keyframes sk-cubeGridScaleDelay {
+ 0%, 70%, 100% {
+ -webkit-transform: scale3D(1, 1, 1);
+ transform: scale3D(1, 1, 1); }
+ 35% {
+ -webkit-transform: scale3D(0, 0, 1);
+ transform: scale3D(0, 0, 1); } }
+
+/*
+ * Usage:
+ *
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ *
+ */
+.sk-fading-circle {
+ margin: 40px auto;
+ width: 40px;
+ height: 40px;
+ position: relative; }
+ .sk-fading-circle .sk-circle {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0; }
+ .sk-fading-circle .sk-circle:before {
+ content: '';
+ display: block;
+ margin: 0 auto;
+ width: 15%;
+ height: 15%;
+ background-color: #333;
+ border-radius: 100%;
+ -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
+ animation: sk-circleFadeDelay 1.2s infinite ease-in-out both; }
+ .sk-fading-circle .sk-circle2 {
+ -webkit-transform: rotate(30deg);
+ -ms-transform: rotate(30deg);
+ transform: rotate(30deg); }
+ .sk-fading-circle .sk-circle3 {
+ -webkit-transform: rotate(60deg);
+ -ms-transform: rotate(60deg);
+ transform: rotate(60deg); }
+ .sk-fading-circle .sk-circle4 {
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg); }
+ .sk-fading-circle .sk-circle5 {
+ -webkit-transform: rotate(120deg);
+ -ms-transform: rotate(120deg);
+ transform: rotate(120deg); }
+ .sk-fading-circle .sk-circle6 {
+ -webkit-transform: rotate(150deg);
+ -ms-transform: rotate(150deg);
+ transform: rotate(150deg); }
+ .sk-fading-circle .sk-circle7 {
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg); }
+ .sk-fading-circle .sk-circle8 {
+ -webkit-transform: rotate(210deg);
+ -ms-transform: rotate(210deg);
+ transform: rotate(210deg); }
+ .sk-fading-circle .sk-circle9 {
+ -webkit-transform: rotate(240deg);
+ -ms-transform: rotate(240deg);
+ transform: rotate(240deg); }
+ .sk-fading-circle .sk-circle10 {
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg); }
+ .sk-fading-circle .sk-circle11 {
+ -webkit-transform: rotate(300deg);
+ -ms-transform: rotate(300deg);
+ transform: rotate(300deg); }
+ .sk-fading-circle .sk-circle12 {
+ -webkit-transform: rotate(330deg);
+ -ms-transform: rotate(330deg);
+ transform: rotate(330deg); }
+ .sk-fading-circle .sk-circle2:before {
+ -webkit-animation-delay: -1.1s;
+ animation-delay: -1.1s; }
+ .sk-fading-circle .sk-circle3:before {
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s; }
+ .sk-fading-circle .sk-circle4:before {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s; }
+ .sk-fading-circle .sk-circle5:before {
+ -webkit-animation-delay: -0.8s;
+ animation-delay: -0.8s; }
+ .sk-fading-circle .sk-circle6:before {
+ -webkit-animation-delay: -0.7s;
+ animation-delay: -0.7s; }
+ .sk-fading-circle .sk-circle7:before {
+ -webkit-animation-delay: -0.6s;
+ animation-delay: -0.6s; }
+ .sk-fading-circle .sk-circle8:before {
+ -webkit-animation-delay: -0.5s;
+ animation-delay: -0.5s; }
+ .sk-fading-circle .sk-circle9:before {
+ -webkit-animation-delay: -0.4s;
+ animation-delay: -0.4s; }
+ .sk-fading-circle .sk-circle10:before {
+ -webkit-animation-delay: -0.3s;
+ animation-delay: -0.3s; }
+ .sk-fading-circle .sk-circle11:before {
+ -webkit-animation-delay: -0.2s;
+ animation-delay: -0.2s; }
+ .sk-fading-circle .sk-circle12:before {
+ -webkit-animation-delay: -0.1s;
+ animation-delay: -0.1s; }
+
+@-webkit-keyframes sk-circleFadeDelay {
+ 0%, 39%, 100% {
+ opacity: 0; }
+ 40% {
+ opacity: 1; } }
+
+@keyframes sk-circleFadeDelay {
+ 0%, 39%, 100% {
+ opacity: 0; }
+ 40% {
+ opacity: 1; } }
+
+/*
+ * Usage:
+ *
+
+ *
+ */
+.sk-folding-cube {
+ margin: 40px auto;
+ width: 40px;
+ height: 40px;
+ position: relative;
+ -webkit-transform: rotateZ(45deg);
+ transform: rotateZ(45deg); }
+ .sk-folding-cube .sk-cube {
+ float: left;
+ width: 50%;
+ height: 50%;
+ position: relative;
+ -webkit-transform: scale(1.1);
+ -ms-transform: scale(1.1);
+ transform: scale(1.1); }
+ .sk-folding-cube .sk-cube:before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: #333;
+ -webkit-animation: sk-foldCubeAngle 2.4s infinite linear both;
+ animation: sk-foldCubeAngle 2.4s infinite linear both;
+ -webkit-transform-origin: 100% 100%;
+ -ms-transform-origin: 100% 100%;
+ transform-origin: 100% 100%; }
+ .sk-folding-cube .sk-cube2 {
+ -webkit-transform: scale(1.1) rotateZ(90deg);
+ transform: scale(1.1) rotateZ(90deg); }
+ .sk-folding-cube .sk-cube3 {
+ -webkit-transform: scale(1.1) rotateZ(180deg);
+ transform: scale(1.1) rotateZ(180deg); }
+ .sk-folding-cube .sk-cube4 {
+ -webkit-transform: scale(1.1) rotateZ(270deg);
+ transform: scale(1.1) rotateZ(270deg); }
+ .sk-folding-cube .sk-cube2:before {
+ -webkit-animation-delay: 0.3s;
+ animation-delay: 0.3s; }
+ .sk-folding-cube .sk-cube3:before {
+ -webkit-animation-delay: 0.6s;
+ animation-delay: 0.6s; }
+ .sk-folding-cube .sk-cube4:before {
+ -webkit-animation-delay: 0.9s;
+ animation-delay: 0.9s; }
+
+@-webkit-keyframes sk-foldCubeAngle {
+ 0%, 10% {
+ -webkit-transform: perspective(140px) rotateX(-180deg);
+ transform: perspective(140px) rotateX(-180deg);
+ opacity: 0; }
+ 25%, 75% {
+ -webkit-transform: perspective(140px) rotateX(0deg);
+ transform: perspective(140px) rotateX(0deg);
+ opacity: 1; }
+ 90%, 100% {
+ -webkit-transform: perspective(140px) rotateY(180deg);
+ transform: perspective(140px) rotateY(180deg);
+ opacity: 0; } }
+
+@keyframes sk-foldCubeAngle {
+ 0%, 10% {
+ -webkit-transform: perspective(140px) rotateX(-180deg);
+ transform: perspective(140px) rotateX(-180deg);
+ opacity: 0; }
+ 25%, 75% {
+ -webkit-transform: perspective(140px) rotateX(0deg);
+ transform: perspective(140px) rotateX(0deg);
+ opacity: 1; }
+ 90%, 100% {
+ -webkit-transform: perspective(140px) rotateY(180deg);
+ transform: perspective(140px) rotateY(180deg);
+ opacity: 0; } }
diff --git a/.electrify/package.json b/.electron/package.json
similarity index 56%
rename from .electrify/package.json
rename to .electron/package.json
index 5941c18c523ad77e108608bfa260d7fc850b9f59..d6dabca1aa4f34a7110615a7f2b1e978de5a97af 100644
--- a/.electrify/package.json
+++ b/.electron/package.json
@@ -1,8 +1,8 @@
{
"name": "Mongoclient",
"main": "index.js",
- "electronVersion": "1.6.0",
+ "version": "2.0.0",
"dependencies": {
- "electrify": "2.1.4"
+ "shelljs": "^0.7.7"
}
}
\ No newline at end of file
diff --git a/.electron/readme b/.electron/readme
new file mode 100644
index 0000000000000000000000000000000000000000..4af7fdf1ac8d988cd36a8f5ed6e253d3d149b3b5
--- /dev/null
+++ b/.electron/readme
@@ -0,0 +1,9 @@
+- Bundle mongoclient with command: meteor build --server --directory