diff --git a/.gitignore b/.gitignore index dfb2aa98..675bc78e 100755 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ scripts/ .DS_Store npm-debug.log server/npm-debug.log +server/public/assets/dist/ diff --git a/package-lock.json b/package-lock.json index 52cb933d..59151876 100644 --- a/package-lock.json +++ b/package-lock.json @@ -171,7 +171,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" }, "arr-union": { "version": "3.1.0", @@ -231,7 +231,7 @@ "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" }, "async-limiter": { "version": "1.0.0", @@ -885,7 +885,7 @@ }, "content-type": { "version": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" }, "convert-source-map": { "version": "1.5.1", @@ -894,7 +894,7 @@ }, "cookie": { "version": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==" + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" }, "cookie-parser": { "version": "1.4.3", @@ -919,7 +919,7 @@ }, "cookie-signature": { "version": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "copy-descriptor": { "version": "0.1.1", @@ -929,7 +929,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "cors": { "version": "2.8.4", @@ -1026,7 +1026,7 @@ }, "debug": { "version": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -1108,7 +1108,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "delegates": { "version": "1.0.0", @@ -1117,7 +1117,7 @@ }, "depd": { "version": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha512-Jlk9xvkTDGXwZiIDyoM7+3AsuvJVoyOpRupvEVy9nX3YO3/ieZxhlgh8GpLNZ8AY7HjO6y2YwpMSh1ejhu3uIw==" + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" }, "deprecated": { "version": "0.0.1", @@ -1188,7 +1188,7 @@ }, "ee-first": { "version": "1.1.1", - "resolved": "", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "encodeurl": { @@ -1587,7 +1587,7 @@ "express-session": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.15.6.tgz", - "integrity": "sha512-r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==", + "integrity": "sha1-R7QWDIj0KrcP6KUI4xy/92dXqwo=", "requires": { "cookie": "0.3.1", "cookie-signature": "1.0.6", @@ -1662,7 +1662,7 @@ "lodash": { "version": "4.17.5", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + "integrity": "sha1-maktZcAnLevoyWtgV7yPv6O+1RE=" }, "mime": { "version": "1.2.4", @@ -1703,7 +1703,7 @@ "mongoose": { "version": "4.13.11", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.13.11.tgz", - "integrity": "sha512-OgXmFc3vzXwq4zWp41XfSBDnKZLqnBc4Kh7mwwGjBE5iWH5tfkixaPK0uFtpEuzDzUvAIg33bgniyTsmc00olA==", + "integrity": "sha1-2m7fjjmQVOEoNgFjFpmVGaNY20M=", "requires": { "async": "2.1.4", "bson": "~1.0.4", @@ -1723,7 +1723,7 @@ "mquery": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/mquery/-/mquery-2.3.3.tgz", - "integrity": "sha512-NC8L14kn+qxJbbJ1gbcEMDxF0sC3sv+1cbRReXXwVvowcwY1y9KoVZFq0ebwARibsadu8lx8nWGvm3V0Pf0ZWQ==", + "integrity": "sha1-IhQS5dTnKQylWC3RbqjxkKUGtRg=", "requires": { "bluebird": "3.5.0", "debug": "2.6.9", @@ -1784,7 +1784,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "requires": { "safe-buffer": "~5.1.0" } @@ -2071,7 +2071,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" }, "gauge": { "version": "2.7.4", @@ -2662,7 +2662,7 @@ "hooks-fixed": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-2.0.2.tgz", - "integrity": "sha512-YurCM4gQSetcrhwEtpQHhQ4M7Zo7poNGqY4kQGeBS6eZtOcT3tnNs01ThFa0jYBByAiYt1MjMjP/YApG0EnAvQ==" + "integrity": "sha1-IAdtqgfnfYphBog84/FyLgURQLA=" }, "hpkp": { "version": "2.0.0", @@ -2676,7 +2676,7 @@ }, "http-errors": { "version": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha512-STnYGcKMXL9CGdtpeTFnLmgMSHTTNQJSHxiC4DETHKf934Q160Ht5pljrNeH24S0O9xUN+9vsDJZdZtk5js6Ww==", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", "requires": { "depd": "1.1.1", "inherits": "2.0.3", @@ -2743,7 +2743,7 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" }, "ienoopen": { "version": "1.0.0", @@ -2774,7 +2774,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" }, "ini": { "version": "1.3.5", @@ -2919,7 +2919,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "requires": { "isobject": "^3.0.1" } @@ -3302,7 +3302,7 @@ }, "mime": { "version": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=" }, "mimic-response": { "version": "1.0.0", @@ -3351,14 +3351,14 @@ }, "mkdirp": { "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } @@ -3575,7 +3575,7 @@ "mongoose-legacy-pluralize": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", - "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" + "integrity": "sha1-O6n5H6UHtRhtOZ+0CFS/8Y+1Y+Q=" }, "mpath": { "version": "0.3.0", @@ -3590,7 +3590,7 @@ "mquery": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.0.0.tgz", - "integrity": "sha512-WL1Lk8v4l8VFSSwN3yCzY9TXw+fKVYKn6f+w86TRzOLSE8k1yTgGaLBPUByJQi8VcLbOdnUneFV/y3Kv874pnQ==", + "integrity": "sha1-5fOH26vAubaYWeVQ6BD6q+DOq7A=", "requires": { "bluebird": "3.5.0", "debug": "2.6.9", @@ -3607,7 +3607,7 @@ }, "ms": { "version": "2.0.0", - "resolved": "", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "multipipe": { @@ -3621,7 +3621,7 @@ "muri": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/muri/-/muri-1.3.0.tgz", - "integrity": "sha512-FiaFwKl864onHFFUV/a2szAl7X0fxVlSKNdhTf+BM8i8goEgYut8u5P9MqQqIYwvaMxjzVESsoEm/2kfkFH1rg==" + "integrity": "sha1-rszz22TFaqfFs04A+Vt4eFJ6RyE=" }, "nan": { "version": "2.10.0", @@ -3661,7 +3661,7 @@ }, "negotiator": { "version": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha512-qTxkr1RoLw5Pz+1+PTJ/66hWuyi2LEOeOuIDJDlx6JF8x75bmD5C7qXTg2UlX5W9rLfkqKP+r8q6Vy6NWdWrbw==" + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, "next-tick": { "version": "1.0.0", @@ -3844,7 +3844,7 @@ }, "on-finished": { "version": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "requires": { "ee-first": "1.1.1" } @@ -3964,7 +3964,7 @@ }, "parseurl": { "version": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha512-DjIMrEiCuzD/Xsr69WhcPCTeb6iZP5JgL/DZ3cYz0zMnyiXiscoqC6LLV2dYwQHfy9O+twCDVVPiFWb7xZhaOw==" + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" }, "pascalcase": { "version": "0.1.1", @@ -4101,7 +4101,7 @@ "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", "requires": { "asap": "~2.0.3" } @@ -4141,7 +4141,7 @@ }, "qs": { "version": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" }, "random-bytes": { "version": "1.0.0", @@ -4259,7 +4259,7 @@ "redis": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", - "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", + "integrity": "sha1-ICKI4/WMSfYHnZevehDhMDrhSwI=", "requires": { "double-ended-queue": "^2.1.0-0", "redis-commands": "^1.2.0", @@ -4423,7 +4423,7 @@ "require_optional": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", - "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "integrity": "sha1-TPNaQkf2TKPfjC7yCMxJSxyo/C4=", "requires": { "resolve-from": "^2.0.0", "semver": "^5.1.0" @@ -4455,7 +4455,7 @@ }, "resolve-from": { "version": "2.0.0", - "resolved": "", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" }, "resolve-url": { @@ -4478,7 +4478,7 @@ }, "safe-buffer": { "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" }, "safe-regex": { "version": "1.1.0", @@ -4579,7 +4579,7 @@ }, "setprototypeof": { "version": "1.0.3", - "resolved": "", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" }, "sigmund": { @@ -4797,7 +4797,7 @@ }, "socket.io-adapter": { "version": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha512-a8zS9B5yaggPHh4odsSZJmMmHsVi4eOym5zIjTALl6GQCkOCghorCGQjBCke3WKbY14lgHh7L1E7ZBZy8/sYrQ==" + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" }, "socket.io-client": { "version": "2.1.0", @@ -5357,7 +5357,7 @@ "uid-safe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "integrity": "sha1-Kz1cckDo/C5Y+Komnl7knAhXvTo=", "requires": { "random-bytes": "~1.0.0" } @@ -5424,7 +5424,7 @@ }, "unpipe": { "version": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "unset-value": { "version": "1.0.0", @@ -5503,11 +5503,11 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "utils-merge": { "version": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "v8flags": { "version": "2.1.1", @@ -5519,7 +5519,7 @@ }, "vary": { "version": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, "verror": { "version": "1.10.0", @@ -5658,7 +5658,7 @@ "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", "requires": { "isexe": "^2.0.0" } @@ -5743,7 +5743,7 @@ }, "xtend": { "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha512-iTwvhNBRetXWe81+VcIw5YeadVSWyze7uA7nVnpP13ulrpnJ3UfQm5ApGnrkmxDJFdrblRdZs0EvaTCIfei5oQ==" + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "yargs": { "version": "3.10.0", diff --git a/server/app.js b/server/app.js index 77f5ffb0..43745506 100644 --- a/server/app.js +++ b/server/app.js @@ -5,6 +5,7 @@ path = require('path'), http = require('http'), port = 8080, //farmhash = require('farmhash'), +uniqid = require('uniqid'), num_processes = require('os').cpus().length; publicPath = path.join(__dirname, 'public'); @@ -49,7 +50,8 @@ function startClustered(redis_enabled) { var worker_index = function(ip, len) { //console.log(ip); var s = ''; - for (var i = 0, _len = ip.length; i < _len; i++) { + if(ip == undefined) ip = uniqid.time(); + for (var i = 0, _len = ip.length; i < _len; i++) { if(!isNaN(ip[i])) { s += ip[i]; } diff --git a/server/public/assets/css/style.css b/server/public/assets/css/style.css index 3848d538..5a672624 100755 --- a/server/public/assets/css/style.css +++ b/server/public/assets/css/style.css @@ -191,7 +191,8 @@ margin: auto; } #channel-share-modal { - background: transparent !important; +overflow:hidden; +background: transparent !important; text-align: center !important; margin: auto; flex-direction: column; diff --git a/server/public/assets/js/channel.js b/server/public/assets/js/channel.js index ab916d8b..af66a74e 100644 --- a/server/public/assets/js/channel.js +++ b/server/public/assets/js/channel.js @@ -23,7 +23,10 @@ var Channel = { if(cast_ready_connect || chromecastAvailable || chromecastReady) { Helper.addClass(".volume-container", "volume-container-cast"); } - + if(!embed) { + document.querySelector("#main-container").insertAdjacentHTML("beforeend", "keyboard_arrow_right"); + document.querySelector("#hide-playlist").style.left = (document.querySelector("#video-container").offsetWidth - document.querySelector("#hide-playlist").offsetWidth) + "px"; + } //Player.soundcloud_player = document.querySelector("#soundcloud_player"); } Admin.logged_in = false; @@ -279,8 +282,9 @@ var Channel = { } - if(!Helper.msieversion() && !Helper.mobilecheck() && !client) Notification.requestPermission(); - + try { + if(!Helper.msieversion() && !Helper.mobilecheck() && !client && Notification != undefined) Notification.requestPermission(); + }catch(e){} document.getElementsByClassName("search_input")[0].focus(); Helper.sample(); @@ -626,9 +630,12 @@ var Channel = { url: "/", method: "GET", success: function(e){ - + if(!client) { - document.getElementById("volume-button").removeEventListener("click", Playercontrols.mute_video); + document.querySelector("#hide-playlist").remove(); + if(hiddenPlaylist) document.querySelector("main").style.maxWidth = ""; + hiddenPlaylist = false; + document.getElementById("volume-button").removeEventListener("click", Playercontrols.mute_video); document.getElementById("playpause").removeEventListener("click", Playercontrols.play_pause); document.getElementById("fullscreen").removeEventListener("click", Playercontrols.fullscreen); } diff --git a/server/public/assets/js/functions.js b/server/public/assets/js/functions.js index ca172c71..87d06800 100644 --- a/server/public/assets/js/functions.js +++ b/server/public/assets/js/functions.js @@ -21,6 +21,81 @@ function removeAllListeners() { socket.removeEventListener(id); } +function resizeFunction() { + if(chan && !Helper.mobilecheck()){ + if(!client && !embed) document.querySelector("#hide-playlist").style.left = (document.querySelector("#video-container").offsetWidth - document.querySelector("#hide-playlist").offsetWidth) + "px"; + if(document.querySelector("#wrapper") == null) return; + if(window.innerWidth > 600 && document.querySelector("#wrapper").style.height != "") { + document.querySelector("#wrapper").style.height = ""; + document.querySelector("#chat-bar").style.height = ""; + document.querySelector("#channelchat").style.height = ""; + document.querySelector("#all_chat").style.height = ""; + document.querySelector("#chat-container").style.height = ""; + } else if(window.innerWidth < 601) { + if(!client && !embed) { + var scPlaying = false; + var ytPlaying = false; + try { + ytPlaying = Player.player.getPlayerState() == YT.PlayerState.PLAYING || Player.player.getPlayerState() == YT.PlayerState.BUFFERING; + } catch(e) {} + try { + scPlaying = Player.soundcloud_player.isPlaying(); + } catch(e){} + resizePlaylistPlaying(ytPlaying || scPlaying); + return; + } + } + var temp_fit = Math.round(Helper.computedStyle("#wrapper", "height") / 71)+1; + if(temp_fit > List.can_fit || temp_fit < List.can_fit){ + List.dynamicContentPage(-10); + } + if(List.can_fit < temp_fit){ + for(var i = 0; i < List.page + temp_fit; i++) { + Helper.css(document.querySelector("#wrapper").children[i], "display", "inline-flex"); + } + } else if(List.can_fit > temp_fit){ + Helper.css(document.querySelector("#wrapper").children[List.page + temp_fit], "display", "none"); + var elements = document.querySelector("#wrapper").children; + for(var i = List.page + temp_fit; i < elements.length; i++) { + Helper.css(document.querySelector("#wrapper").children[i], "display", "none"); + } + } + List.can_fit = temp_fit; + List.element_height = (Helper.computedStyle("#wrapper", "height") / List.can_fit)-5.3; + + Helper.css(".list-song", "height", List.element_height + "px"); + Channel.set_title_width(); + if(!client) { + var controlsPosition = document.querySelector("#controls").offsetHeight - Helper.computedStyle("#controls", "height"); + if(document.querySelectorAll("#controls").length > 0 && !Helper.mobilecheck()) { + Helper.css(document.querySelector("#seekToDuration"), "top", controlsPosition - 55); + } else if(document.querySelectorAll("#controls").length > 0) { + Helper.css(document.querySelector("#seekToDuration"), "top", controlsPosition - 20); + } + Channel.window_width_volume_slider(); + } + } +} + +function fullVideo(hide) { + if(hide) { + document.querySelector("#playlist").className += " show-only-mobile"; + document.querySelector("#video-container").classList.remove("m9"); + document.querySelector("#video-container").className += " m12"; + document.querySelector("main").style.maxWidth = "100%"; + document.querySelector("#hide-playlist").style.left = (document.querySelector("#video-container").offsetWidth - document.querySelector("#hide-playlist").offsetWidth) + "px"; + document.querySelector("#hide-playlist .material-icons").innerText = "keyboard_arrow_left"; + } else { + document.querySelector("#playlist").classList.remove("show-only-mobile"); + document.querySelector("#video-container").classList.remove("m12"); + document.querySelector("#video-container").className += " m9"; + document.querySelector("main").style.maxWidth = "99%"; + document.querySelector("#hide-playlist").style.left = (document.querySelector("#video-container").offsetWidth - document.querySelector("#hide-playlist").offsetWidth) + "px"; + document.querySelector("#hide-playlist .material-icons").innerText = "keyboard_arrow_right"; + } + hiddenPlaylist = hide; +} + function getColor(id) { Helper.ajax({ method: "POST", @@ -556,8 +631,9 @@ function enable_host_mode(enabled) { document.removeEventListener('mozfullscreenchange', exitHandler, false); document.removeEventListener('fullscreenchange', exitHandler, false); document.removeEventListener('MSFullscreenChange', exitHandler, false); + resizeFunction(); } - List.dynamicContentPageJumpTo(-10); + List.dynamicContentPage(-10); } function get_list_listener(){ @@ -847,6 +923,16 @@ function pagination_results(e) { function handleEvent(e, target, tried, type) { var path = e.path || (e.composedPath && e.composedPath()); + if(!path) { + var path = [target]; + var parent = target.parentElement; + while(parent != null) { + path.push(parent); + try { + parent = parent.parentElement; + } catch(e){break;} + } + } if(path) { for(var y = 0; y < path.length; y++) { var target = path[y]; diff --git a/server/public/assets/js/listeners.js b/server/public/assets/js/listeners.js index 0a1dff98..d529a658 100755 --- a/server/public/assets/js/listeners.js +++ b/server/public/assets/js/listeners.js @@ -6,6 +6,7 @@ if(domain.length > 0 && domain[0] == "client") { client = true; } var local_new_channel = false; +var hiddenPlaylist = false; var videoSource; var dynamicListeners = {}; var socket_connected = false; @@ -393,6 +394,10 @@ addListener("click", "#player_overlay", function(event) { } }); +addListener("click", "#hide-playlist", function(event) { + this.preventDefault(); + fullVideo(!hiddenPlaylist); +}); addListener("click", "#bitcoin-address", function(event) { @@ -920,11 +925,11 @@ addListener("click", ".donate-button", function(event) { M.Modal.getInstance(document.getElementById("donate")).open(); }); -/* + addListener("click", '#toast-container', function(){ before_toast(); }); -*/ + addListener("click", "#aprilfools", function(){ Helper.css(".mega", "-webkit-transform", "rotate(0deg)"); @@ -1298,57 +1303,7 @@ window.addEventListener("focus", function(event) { }); window.addEventListener("resize", function(){ - if(chan && !Helper.mobilecheck()){ - if(document.querySelector("#wrapper") == null) return; - if(window.innerWidth > 600 && document.querySelector("#wrapper").style.height != "") { - document.querySelector("#wrapper").style.height = ""; - document.querySelector("#chat-bar").style.height = ""; - document.querySelector("#channelchat").style.height = ""; - document.querySelector("#all_chat").style.height = ""; - document.querySelector("#chat-container").style.height = ""; - } else if(window.innerWidth < 601) { - if(!client && !embed) { - var scPlaying = false; - var ytPlaying = false; - try { - ytPlaying = Player.player.getPlayerState() == YT.PlayerState.PLAYING || Player.player.getPlayerState() == YT.PlayerState.BUFFERING; - } catch(e) {} - try { - scPlaying = Player.soundcloud_player.isPlaying(); - } catch(e){} - resizePlaylistPlaying(ytPlaying || scPlaying); - return; - } - } - var temp_fit = Math.round(Helper.computedStyle("#wrapper", "height") / 71)+1; - if(temp_fit > List.can_fit || temp_fit < List.can_fit){ - List.dynamicContentPage(-10); - } - if(List.can_fit < temp_fit){ - for(var i = 0; i < List.page + temp_fit; i++) { - Helper.css(document.querySelector("#wrapper").children[i], "display", "inline-flex"); - } - } else if(List.can_fit > temp_fit){ - Helper.css(document.querySelector("#wrapper").children[List.page + temp_fit], "display", "none"); - var elements = document.querySelector("#wrapper").children; - for(var i = List.page + temp_fit; i < elements.length; i++) { - Helper.css(document.querySelector("#wrapper").children[i], "display", "none"); - } - } - List.can_fit = temp_fit; - List.element_height = (Helper.computedStyle("#wrapper", "height") / List.can_fit)-5.3; - Helper.css(".list-song", "height", List.element_height + "px"); - Channel.set_title_width(); - if(!client) { - var controlsPosition = document.querySelector("#controls").offsetHeight - Helper.computedStyle("#controls", "height"); - if(document.querySelectorAll("#controls").length > 0 && !Helper.mobilecheck()) { - Helper.css(document.querySelector("#seekToDuration"), "top", controlsPosition - 55); - } else if(document.querySelectorAll("#controls").length > 0) { - Helper.css(document.querySelector("#seekToDuration"), "top", controlsPosition - 20); - } - Channel.window_width_volume_slider(); - } - } + resizeFunction(); }); addListener("click", ".result-object", function(e){ diff --git a/server/public/assets/js/player.js b/server/public/assets/js/player.js index 48e45e96..15829d3d 100755 --- a/server/public/assets/js/player.js +++ b/server/public/assets/js/player.js @@ -822,7 +822,8 @@ var Player = { notifyUser: function(id, title) { title = title.replace(/\\\'/g, "'").replace(/"/g,"'").replace(/&/g,"&"); - if (Notification.permission === "granted" && document.hidden && !embed) { + try{ + if (Notification != undefined && Notification.permission === "granted" && document.hidden && !embed) { var icon = "https://img.youtube.com/vi/"+id+"/mqdefault.jpg"; if(videoSource) icon = full_playlist[full_playlist.length - 1].thumbnail; var notification = new Notification("Now Playing", {body: title, icon: icon, iconUrl: icon}); @@ -831,6 +832,7 @@ var Player = { notification.close(); },5000); } + }catch(e){} }, setup_all_listeners: function() { diff --git a/server/public/assets/js/search.js b/server/public/assets/js/search.js index 4db33d72..d6df5de4 100755 --- a/server/public/assets/js/search.js +++ b/server/public/assets/js/search.js @@ -155,8 +155,8 @@ var Search = { Helper.addClass(".prev-results-button", "disabled"); } - document.querySelector(".pagination-results a").setAttribute("data-original-search", search_input); - + document.querySelectorAll(".pagination-results a")[0].setAttribute("data-original-search", search_input); + document.querySelectorAll(".pagination-results a")[1].setAttribute("data-original-search", search_input); //setTimeout(function(){$(".thumb").lazyload({container: $("#results")});}, 250); Helper.removeClass(".search_loader_spinner", "active");