diff --git a/package-lock.json b/package-lock.json index bd86794..2d4e446 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1898 +1,8 @@ { "name": "juxt-web", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "version": "1.0.0", - "dependencies": { - "body-parser": "^1.19.0", - "colors": "^1.4.0", - "cookie-parser": "^1.4.5", - "express": "^4.17.1", - "fs-extra": "^9.0.1", - "hashmap": "^2.4.0", - "memory-cache": "^0.2.0", - "moment": "^2.29.1", - "mongoose": "^5.10.14", - "morgan": "^1.10.0", - "node-rsa": "^1.1.1", - "node-snowflake": "0.0.1", - "pako": "^2.0.2", - "pngjs": "^6.0.0", - "tga": "^1.0.4", - "xmlbuilder": "^15.1.1", - "xmlbuilder2": "^2.4.0" - }, - "devDependencies": { - "ejs": "^3.1.5", - "express-subdomain": "^1.0.5", - "multer": "^1.4.2", - "object-to-xml": "^2.0.0", - "request": "^2.88.2", - "xml2json": "^0.12.0" - } - }, - "node_modules/@oozcitak/dom": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.8.tgz", - "integrity": "sha512-MoOnLBNsF+ok0HjpAvxYxR4piUhRDCEWK0ot3upwOOHYudJd30j6M+LNcE8RKpwfnclAX9T66nXXzkytd29XSw==", - "dependencies": { - "@oozcitak/infra": "1.0.8", - "@oozcitak/url": "1.0.4", - "@oozcitak/util": "8.3.8" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@oozcitak/infra": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", - "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", - "dependencies": { - "@oozcitak/util": "8.3.8" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@oozcitak/url": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", - "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", - "dependencies": { - "@oozcitak/infra": "1.0.8", - "@oozcitak/util": "8.3.8" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@oozcitak/util": { - "version": "8.3.8", - "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", - "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@types/node": { - "version": "14.6.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.2.tgz", - "integrity": "sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A==" - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", - "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/bson": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.5.tgz", - "integrity": "sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg==", - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/busboy": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", - "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", - "dev": true, - "dependencies": { - "dicer": "0.2.5", - "readable-stream": "1.1.x" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/busboy/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/busboy/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/busboy/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-parser": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz", - "integrity": "sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==", - "dependencies": { - "cookie": "0.4.0", - "cookie-signature": "1.0.6" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/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=" - }, - "node_modules/dank-each": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dank-each/-/dank-each-1.0.0.tgz", - "integrity": "sha1-qGE0Okso02IgPUBcd4ZNyaZANzA=", - "dev": true - }, - "node_modules/dank-map": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dank-map/-/dank-map-0.1.0.tgz", - "integrity": "sha1-6Z5384LGjy5asrPzqCuAMZV1Kag=", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/denque": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", - "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/dicer": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", - "dev": true, - "dependencies": { - "readable-stream": "1.1.x", - "streamsearch": "0.1.2" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/dicer/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/dicer/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/dicer/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/ejs": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", - "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==", - "dev": true, - "dependencies": { - "jake": "^10.6.1" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-subdomain": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/express-subdomain/-/express-subdomain-1.0.5.tgz", - "integrity": "sha1-mQ75eUC39MKCPZWTZIt5voWKY4s=", - "dev": true - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, - "node_modules/filelist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz", - "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/hashmap": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/hashmap/-/hashmap-2.4.0.tgz", - "integrity": "sha512-Ngj48lhnxJdnBAEVbubKBJuN1elfVLZJs94ZixRi98X3GCU4v6pgj9qRkHt6H8WaVJ69Wv0r1GhtS7hvF9zCgg==", - "engines": { - "node": "*" - } - }, - "node_modules/hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isemail": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", - "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", - "dev": true, - "dependencies": { - "punycode": "2.x.x" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "node_modules/jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", - "dev": true, - "dependencies": { - "async": "0.9.x", - "chalk": "^2.4.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/joi": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz", - "integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==", - "dev": true, - "dependencies": { - "hoek": "5.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/joi/node_modules/hoek": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz", - "integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==", - "dev": true, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/kareem": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", - "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-cache": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", - "integrity": "sha1-eJCwHVLADI68nVM+H46xfjA0hxo=" - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dependencies": { - "mime-db": "1.44.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", - "engines": { - "node": "*" - } - }, - "node_modules/mongodb": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.3.tgz", - "integrity": "sha512-rOZuR0QkodZiM+UbQE5kDsJykBqWi0CL4Ec2i1nrGrUI3KO11r6Fbxskqmq3JK2NH7aW4dcccBuUujAP0ERl5w==", - "dependencies": { - "bl": "^2.2.1", - "bson": "^1.1.4", - "denque": "^1.4.1", - "require_optional": "^1.0.1", - "safe-buffer": "^5.1.2", - "saslprep": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "optionalDependencies": { - "saslprep": "^1.0.0" - } - }, - "node_modules/mongoose": { - "version": "5.10.14", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.10.14.tgz", - "integrity": "sha512-lG7TCyjGjVPM4R1HWCyWZbdK7hC4MdWRG7P95hDENXSvaLkGLiP7WZbGT83KzLY8+400x1p6C53UALD3MqpsCA==", - "dependencies": { - "bson": "^1.1.4", - "kareem": "2.3.1", - "mongodb": "3.6.3", - "mongoose-legacy-pluralize": "1.0.2", - "mpath": "0.7.0", - "mquery": "3.2.2", - "ms": "2.1.2", - "regexp-clone": "1.0.0", - "safe-buffer": "5.2.1", - "sift": "7.0.1", - "sliced": "1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/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==" - }, - "node_modules/mongoose/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mongoose/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "node_modules/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/mpath": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz", - "integrity": "sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz", - "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==", - "dependencies": { - "bluebird": "3.5.1", - "debug": "3.1.0", - "regexp-clone": "^1.0.0", - "safe-buffer": "5.1.2", - "sliced": "1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/multer": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", - "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", - "dev": true, - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^0.2.11", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.1", - "object-assign": "^4.1.1", - "on-finished": "^2.3.0", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-expat": { - "version": "2.3.18", - "resolved": "https://registry.npmjs.org/node-expat/-/node-expat-2.3.18.tgz", - "integrity": "sha512-9dIrDxXePa9HSn+hhlAg1wXkvqOjxefEbMclGxk2cEnq/Y3U7Qo5HNNqeo3fQ4bVmLhcdt3YN1TZy7WMZy4MHw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.13.2" - } - }, - "node_modules/node-rsa": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-1.1.1.tgz", - "integrity": "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", - "dependencies": { - "asn1": "^0.2.4" - } - }, - "node_modules/node-snowflake": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/node-snowflake/-/node-snowflake-0.0.1.tgz", - "integrity": "sha1-C+XqvVsRMfY55j6JxfgtqoFLOrk=" - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-to-xml": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object-to-xml/-/object-to-xml-2.0.0.tgz", - "integrity": "sha512-bArXy7WCF1V9R88/zF9adSZSeFQnFmmKhMqNuNLAxqrbkvzcWP8HgnaRCcVJsfvIgvpdHiYd0qzJi7LM7QFfcQ==", - "dev": true, - "dependencies": { - "dank-each": "^1.0.0", - "dank-map": "~0.1.0", - "sanitizer": "0.1.3" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pako": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.2.tgz", - "integrity": "sha512-9e8DRI3+dRLomCmMBAH30B2ejh+blwXr7VmMEx/pVFZlSDA7oyI8uKMhKXr8IrZpoxBF2YlxUvhqRXzTT1i0NA==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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=" - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dependencies": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/regexp-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", - "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/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==", - "dependencies": { - "resolve-from": "^2.0.0", - "semver": "^5.1.0" - } - }, - "node_modules/resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sanitizer": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.3.tgz", - "integrity": "sha1-1PCvdHXZp7ryqeWmEXGLqheKOeE=", - "dev": true - }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/sift": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", - "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" - }, - "node_modules/sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tga": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tga/-/tga-1.0.4.tgz", - "integrity": "sha512-UdYjLm6XDhH0czfel87opaoynxIWI6AXMLkaUvZyl8AzJnAvOH1bHmHjdcolTzi4RjbBU8rgd7ys7sHxFAY1WA==", - "dependencies": { - "debug": "^2.6.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/topo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", - "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", - "dev": true, - "dependencies": { - "hoek": "6.x.x" - } - }, - "node_modules/topo/node_modules/hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", - "dev": true - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/xml2json": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/xml2json/-/xml2json-0.12.0.tgz", - "integrity": "sha512-EPJHRWJnJUYbJlzR4pBhZODwWdi2IaYGtDdteJi0JpZ4OD31IplWALuit8r73dJuM4iHZdDVKY1tLqY2UICejg==", - "dev": true, - "dependencies": { - "hoek": "^4.2.1", - "joi": "^13.1.2", - "node-expat": "^2.3.18" - }, - "bin": { - "xml2json": "bin/xml2json" - } - }, - "node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/xmlbuilder2": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-2.4.0.tgz", - "integrity": "sha512-KrOVUGD65xTQ7ZA+GMQGdBSpe1Ufu5ylCQSYVk6QostySDkxPmAQ0WWIu7dR3JjLfVbF22RFQX7KyrZ6VTLcQg==", - "dependencies": { - "@oozcitak/dom": "1.15.8", - "@oozcitak/infra": "1.0.8", - "@oozcitak/util": "8.3.8", - "@types/node": "14.6.2", - "js-yaml": "3.14.0" - }, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - } - }, "dependencies": { "@oozcitak/dom": { "version": "1.15.8", @@ -1952,6 +62,11 @@ "uri-js": "^4.2.2" } }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1967,6 +82,20 @@ "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=", "dev": true }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2029,6 +158,11 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "basic-auth": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", @@ -2101,6 +235,15 @@ "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.5.tgz", "integrity": "sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg==" }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -2165,11 +308,29 @@ "supports-color": "^5.3.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -2177,8 +338,16 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "colors": { "version": "1.4.0", @@ -2212,6 +381,11 @@ "typedarray": "^0.0.6" } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -2278,12 +452,30 @@ "ms": "2.0.0" } }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "requires": { + "mimic-response": "^2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "denque": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", @@ -2299,6 +491,11 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, "dicer": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", @@ -2364,6 +561,14 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2385,6 +590,11 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -2508,6 +718,11 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs-extra": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", @@ -2519,6 +734,21 @@ "universalify": "^1.0.0" } }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -2528,6 +758,11 @@ "assert-plus": "^1.0.0" } }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -2555,6 +790,11 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "hashmap": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/hashmap/-/hashmap-2.4.0.tgz", @@ -2597,16 +837,39 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -2730,6 +993,14 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -2774,6 +1045,11 @@ "mime-db": "1.44.0" } }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2786,8 +1062,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mkdirp": { "version": "0.5.5", @@ -2798,6 +1073,11 @@ "minimist": "^1.2.5" } }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -2924,11 +1204,29 @@ "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", "dev": true }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, + "node-abi": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.26.0.tgz", + "integrity": "sha512-ag/Vos/mXXpWLLAYWsAoQdgS+gW7IwvgMLOgqopm/DbzAjazLltzgzpVMsFlgmo9TzG5hGXeaBZx2AI731RIsQ==", + "requires": { + "semver": "^5.4.1" + } + }, + "node-addon-api": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", + "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" + }, "node-expat": { "version": "2.3.18", "resolved": "https://registry.npmjs.org/node-expat/-/node-expat-2.3.18.tgz", @@ -2952,6 +1250,27 @@ "resolved": "https://registry.npmjs.org/node-snowflake/-/node-snowflake-0.0.1.tgz", "integrity": "sha1-C+XqvVsRMfY55j6JxfgtqoFLOrk=" }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -2961,8 +1280,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-to-xml": { "version": "2.0.0", @@ -2988,6 +1306,14 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, "pako": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.2.tgz", @@ -3014,6 +1340,27 @@ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" }, + "prebuild-install": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.2.tgz", + "integrity": "sha512-PzYWIKZeP+967WuKYXlTOhYBgGOvTRSfaKI89XnfJ0ansRAH7hDU45X+K+FZeI1Wb/7p/NnuctPH3g0IqKUuSQ==", + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.21.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -3034,6 +1381,15 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -3061,6 +1417,17 @@ "unpipe": "1.0.0" } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -3198,16 +1565,74 @@ "send": "0.17.1" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, + "sharp": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.28.1.tgz", + "integrity": "sha512-4mCGMEN4ntaVuFGwHx7FvkJQkIgbI+S+F9a3bI7ugdvKjPr4sF7/ibvlRKhJyzhoQi+ODM+XYY1de8xs7MHbfA==", + "requires": { + "color": "^3.1.3", + "detect-libc": "^1.0.3", + "node-addon-api": "^3.1.0", + "prebuild-install": "^6.1.1", + "semver": "^7.3.5", + "simple-get": "^3.1.0", + "tar-fs": "^2.1.1", + "tunnel-agent": "^0.6.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "sift": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + } + }, "sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", @@ -3255,6 +1680,16 @@ "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", "dev": true }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -3263,6 +1698,19 @@ "safe-buffer": "~5.1.0" } }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -3272,6 +1720,58 @@ "has-flag": "^3.0.0" } }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "tga": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tga/-/tga-1.0.4.tgz", @@ -3316,7 +1816,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -3393,6 +1892,19 @@ "extsprintf": "^1.2.0" } }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, "xml2json": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/xml2json/-/xml2json-0.12.0.tgz", @@ -3426,6 +1938,11 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/package.json b/package.json index 592cab8..3de2e85 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "node-snowflake": "0.0.1", "pako": "^2.0.2", "pngjs": "^6.0.0", + "sharp": "^0.28.1", "tga": "^1.0.4", "xmlbuilder": "^15.1.1", "xmlbuilder2": "^2.4.0" diff --git a/src/authentication.js b/src/authentication.js index a201ec6..3df711f 100644 --- a/src/authentication.js +++ b/src/authentication.js @@ -232,6 +232,14 @@ let methods = { }, getCommunityHash: function() { return communityMap; + }, + resizeImage: function (file, width, height) { + sharp(file) + .resize({ height: height, width: width }) + .toBuffer() + .then(data => { + return data; + }); } }; exports.data = methods; \ No newline at end of file diff --git a/src/database.js b/src/database.js index d57cb5a..e182638 100644 --- a/src/database.js +++ b/src/database.js @@ -183,7 +183,7 @@ async function getPostsByCommunityKey(community, numberOfPosts, search_key) { async function getNewPostsByCommunity(community, numberOfPosts) { verifyConnected(); return POST.find({ - title_id: community.title_id + community_id: community.community_id }).sort({ created_at: -1 }).limit(numberOfPosts); } diff --git a/src/models/communities.js b/src/models/communities.js index f530c95..86951cb 100644 --- a/src/models/communities.js +++ b/src/models/communities.js @@ -1,6 +1,30 @@ const { Schema, model } = require('mongoose'); const CommunitySchema = new Schema({ + platform_id: Number, + name: String, + description: String, + open: { + type: Boolean, + default: true + }, + /** + * 0: Main Community + * 1: Sub-Community + * 2: Announcement Community + */ + type: { + type: Number, + default: 0 + }, + parent: { + type: Number, + default: null + }, + admins: { + type: [String], + default: undefined + }, created_at: { type: Date, default: new Date(), @@ -35,17 +59,10 @@ const CommunitySchema = new Schema({ type: Number, default: 0 }, - platform_id: Number, - name: String, browser_icon: String, browser_thumbnail: String, CTR_browser_header: String, - WiiU_browser_header: String, - description: String, - parent: { - type: Number, - default: null - } + WiiU_browser_header: String }); CommunitySchema.methods.upEmpathy = async function() { diff --git a/src/services/juxt-web/index.js b/src/services/juxt-web/index.js index 08579df..ae91ba8 100644 --- a/src/services/juxt-web/index.js +++ b/src/services/juxt-web/index.js @@ -36,6 +36,7 @@ portal.use('/', routes.PORTAL_WEB); ctr.use('/titles/show', routes.CTR_SHOW); ctr.use('/communities', routes.CTR_COMMUNITIES); ctr.use('/users', routes.CTR_USER); +ctr.use('/posts', routes.CTR_POST); ctr.use('/', routes.CTR_WEB); admin.use('/', routes.WEB_ADMIN); diff --git a/src/services/juxt-web/routes/admin/api.js b/src/services/juxt-web/routes/admin/api.js index f1dfa35..1599a18 100644 --- a/src/services/juxt-web/routes/admin/api.js +++ b/src/services/juxt-web/routes/admin/api.js @@ -7,6 +7,7 @@ const { COMMUNITY } = require('../../../../models/communities'); var router = express.Router(); const moment = require('moment'); var multer = require('multer'); +const sharp = require("sharp"); const snowflake = require('node-snowflake').Snowflake; var storage = multer.memoryStorage(); var upload = multer({ storage: storage }); @@ -156,14 +157,15 @@ router.post('/communities/:communityID/update', upload.fields([{name: 'browserIc if(req.body.icon && community.icon !== req.body.icon) community.icon = req.body.icon; - if(req.files.browserIcon) - community.browser_icon = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`; - + if(req.files.browserIcon) { + community.browser_icon = `data:image/png;base64,${await sharp(req.files.browserIcon[0].buffer).resize({ height: 128, width: 128 }).toBuffer().toString('base64')}`; + community.browser_thumbnail = `data:image/png;base64,${await sharp(req.files.browserIcon[0].buffer).resize({ height: 128, width: 128 }).toBuffer().toString('base64')}`; + } if(req.files.CTRbrowserHeader) - community.CTR_browser_header = `data:image/png;base64,${req.files.CTRbrowserHeader[0].buffer.toString('base64')}`; + community.CTR_browser_header = `data:image/png;base64,${await sharp(req.files.CTRbrowserHeader[0].buffer).resize({ height: 220, width: 400 }).toBuffer().toString('base64')}`; if(req.files.WiiUbrowserHeader) - community.WiiU_browser_header = `data:image/png;base64,${req.files.WiiUbrowserHeader[0].buffer.toString('base64')}`; + community.WiiU_browser_header = `data:image/png;base64,${await sharp(req.files.WiiUbrowserHeader[0].buffer).resize({ height: 328, width: 1498 }).toBuffer().toString('base64')}`; if(req.body.is_recommended) community.is_recommended = req.body.is_recommended; @@ -210,8 +212,16 @@ router.post('/communities/new', upload.fields([{name: 'browserIcon', maxCount: 1 logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to create a community and is not authorized'); throw new Error('Invalid credentials supplied'); } - JSON.parse(JSON.stringify(req.files)); + let browserIcon, CTRHeader, WiiUHeader, thumb; + if(req.files.browserIcon) { + browserIcon = await sharp(req.files.browserIcon[0].buffer).resize({ height: 128, width: 128 }).toBuffer(); + thumb = await sharp(req.files.browserIcon[0].buffer).resize({ height: 75, width: 75 }).toBuffer(); + } + if(req.files.CTRbrowserHeader) + CTRHeader = await sharp(req.files.CTRbrowserHeader[0].buffer).resize({ height: 220, width: 400 }).toBuffer(); + if(req.files.WiiUbrowserHeader) + WiiUHeader = await sharp(req.files.WiiUbrowserHeader[0].buffer).resize({ height: 328, width: 1498 }).toBuffer(); const document = { empathy_count: 0, id: snowflake.nextId(), @@ -224,9 +234,10 @@ router.post('/communities/new', upload.fields([{name: 'browserIcon', maxCount: 1 community_id: snowflake.nextId(), is_recommended: req.body.is_recommended, name: req.body.name, - browser_icon: `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`, - CTR_browser_header: `data:image/png;base64,${req.files.CTRbrowserHeader[0].buffer.toString('base64')}`, - WiiU_browser_header: `data:image/png;base64,${req.files.WiiUbrowserHeader[0].buffer.toString('base64')}`, + browser_icon: `data:image/png;base64,${browserIcon.toString('base64')}`, + CTR_browser_header: `data:image/png;base64,${CTRHeader.toString('base64')}`, + WiiU_browser_header: `data:image/png;base64,${WiiUHeader.toString('base64')}`, + browser_thumbnail: `data:image/png;base64,${thumb.toString('base64')}`, description: req.body.description, }; const newCommunity = new COMMUNITY(document); @@ -248,6 +259,84 @@ router.post('/communities/new', upload.fields([{name: 'browserIcon', maxCount: 1 }); }); +router.post('/communities/:communityID/sub/new', upload.fields([{name: 'browserIcon', maxCount: 1}, { name: 'CTRbrowserHeader', maxCount: 1}, { name: 'WiiUbrowserHeader', maxCount: 1}]), function (req, res) { + database.connect().then(async e => { + if(req.cookies.token === null) + throw new Error('No service token supplied'); + + let pid = util.data.processServiceToken(req.cookies.token); + + if(pid === null) + throw new Error('Invalid credentials supplied'); + + let user = await database.getUserByPID(pid); + + if(user !== null) + { + if(config.authorized_PNIDs.indexOf(user.pid) === -1) { + logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to create a community and is not authorized'); + throw new Error('Invalid credentials supplied'); + } + const community = await database.getCommunityByID(req.params.communityID); + let browserIcon, CTRHeader, WiiUHeader, thumb; + if(req.files.browserIcon) { + browserIcon = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`; + thumb = await sharp(req.files.browserIcon[0].buffer) + .resize({ height: 75, width: 75 }) + .toBuffer(); + } + else { + browserIcon = community.browser_icon; + thumb = community.browser_thumbnail; + } + if(req.files.CTRbrowserHeader) + CTRHeader = `data:image/png;base64,${req.files.CTRbrowserHeader[0].buffer.toString('base64')}`; + else + CTRHeader = community.CTR_browser_header; + if(req.files.WiiUbrowserHeader) + WiiUHeader = `data:image/png;base64,${req.files.WiiUbrowserHeader[0].buffer.toString('base64')}`; + else + WiiUHeader = community.WiiU_browser_header; + JSON.parse(JSON.stringify(req.files)); + const document = { + name: req.body.name, + description: req.body.description, + parent: req.body.parent, + type: req.body.type, + empathy_count: 0, + id: snowflake.nextId(), + has_shop_page: req.body.has_shop_page, + platform_id: req.body.platform_ID, + icon: req.body.icon, + created_at: moment(new Date()), + title_ids: req.body.title_ids, + title_id: req.body.title_ids, + community_id: snowflake.nextId(), + is_recommended: req.body.is_recommended, + browser_icon: browserIcon, + browser_thumbnail: `data:image/png;base64,${thumb.toString('base64')}`, + CTR_browser_header: CTRHeader, + WiiU_browser_header: WiiUHeader, + }; + const newCommunity = new COMMUNITY(document); + newCommunity.save(); + res.sendStatus(200); + logger.audit('[' + user.user_id + ' - ' + user.pid + '] created community ' + newCommunity.name); + } + else + throw new Error('Invalid account ID or password'); + + }).catch(error => + { + res.statusCode = 400; + let response = { + error_code: 400, + message: error.message + }; + res.send(response); + }); +}); + router.post('/discovery/update', upload.none(), function (req, res) { database.connect().then(async e => { if(req.cookies.token === null) diff --git a/src/services/juxt-web/routes/admin/home.js b/src/services/juxt-web/routes/admin/home.js index 5d31c6a..d4fe94a 100644 --- a/src/services/juxt-web/routes/admin/home.js +++ b/src/services/juxt-web/routes/admin/home.js @@ -217,7 +217,7 @@ router.get('/audit', upload.none(), function (req, res) { }); router.get('/communities/new', upload.none(), function (req, res) { - + var communityID = req.query.CID; database.connect().then(async e => { if(req.cookies.token === null) { @@ -233,6 +233,7 @@ router.get('/communities/new', upload.none(), function (req, res) { let user = await database.getUserByPID(pid); res.render('admin/admin_new_community.ejs', { user: user, + communityID: communityID }); }).catch(error => { @@ -250,7 +251,6 @@ router.get('/communities/new', upload.none(), function (req, res) { }; res.send("\n" + xml(response)); }); - }); router.get('/communities/:communityID', upload.none(), function (req, res) { @@ -298,7 +298,6 @@ router.get('/communities/:communityID', upload.none(), function (req, res) { }); router.get('/communities/:communityID/edit', upload.none(), function (req, res) { - database.connect().then(async e => { if(req.cookies.token === null) { @@ -333,7 +332,85 @@ router.get('/communities/:communityID/edit', upload.none(), function (req, res) }; res.send("\n" + xml(response)); }); +}); +router.get('/communities/:communityID/sub', upload.none(), function (req, res) { + + database.connect().then(async e => { + if(req.cookies.token === null) + { + res.redirect('/login'); + return; + } + let pid = util.data.processServiceToken(req.cookies.token); + if(pid === null) + { + res.redirect('/login'); + return; + } + let user = await database.getUserByPID(pid); + let communities = await database.getSubCommunities(req.params.communityID.toString()); + + res.render('admin/admin_sub_communities.ejs', { + user: user, + communities: communities, + moment: moment, + communityID: req.params.communityID.toString() + }); + + }).catch(error => { + console.log(error); + res.set("Content-Type", "application/xml"); + res.statusCode = 400; + response = { + result: { + has_error: 1, + version: 1, + code: 400, + error_code: 15, + message: "SERVER_ERROR" + } + }; + res.send("\n" + xml(response)); + }); + +}); + +router.get('/communities/:communityID/sub/new', upload.none(), function (req, res) { + database.connect().then(async e => { + if(req.cookies.token === null) + { + res.redirect('/login'); + return; + } + let pid = util.data.processServiceToken(req.cookies.token); + if(pid === null) + { + res.redirect('/login'); + return; + } + let user = await database.getUserByPID(pid); + let community = await database.getCommunityByID(req.params.communityID.toString()); + res.render('admin/admin_edit_sub_community.ejs', { + user: user, + community: community, + }); + + }).catch(error => { + console.log(error); + res.set("Content-Type", "application/xml"); + res.statusCode = 400; + response = { + result: { + has_error: 1, + version: 1, + code: 400, + error_code: 15, + message: "SERVER_ERROR" + } + }; + res.send("\n" + xml(response)); + }); }); router.get('/users', upload.none(), function (req, res) { diff --git a/src/services/juxt-web/routes/ctr/communities.js b/src/services/juxt-web/routes/ctr/communities.js index 834e3d1..8df52ad 100644 --- a/src/services/juxt-web/routes/ctr/communities.js +++ b/src/services/juxt-web/routes/ctr/communities.js @@ -1,32 +1,22 @@ var express = require('express'); var xml = require('object-to-xml'); const database = require('../../../../database'); -//const util = require('../../../../util/authentication'); -const ejs = require('ejs'); +const util = require('../../../../authentication'); +var multer = require('multer'); +var moment = require('moment'); +var upload = multer({ dest: 'uploads/' }); var router = express.Router(); -/* GET discovery server. */ router.get('/', function (req, res) { - res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2'); - var isAJAX = ((req.query.ajax+'').toLowerCase() === 'true') + res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); database.connect().then(async e => { - let popularCommunities = await database.getMostPopularCommunities(6); - let newCommunities = await database.getNewCommunities(3); - if(isAJAX) { - res.render('ctr/ctr_communities_ajax.ejs', { - // EJS variable and server-side variable - popularCommunities: popularCommunities, - newCommunities: newCommunities - }); - } - else { - res.render('ctr/ctr_communities.ejs', { - // EJS variable and server-side variable - popularCommunities: popularCommunities, - newCommunities: newCommunities - }); - } - + let popularCommunities = await database.getMostPopularCommunities(9); + let newCommunities = await database.getNewCommunities(6); + res.render('ctr/communities.ejs', { + // EJS variable and server-side variable + popularCommunities: popularCommunities, + newCommunities: newCommunities + }); }).catch(error => { res.set("Content-Type", "application/xml"); res.statusCode = 400; @@ -43,32 +33,46 @@ router.get('/', function (req, res) { }); }); -router.get('/*/new', function (req, res) { - res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2'); - let community_id = req.originalUrl.replace('/communities/', '').replace('/new','').trim(); - var isAJAX = ((req.query.ajax+'').toLowerCase() === 'true') - if(isAJAX) - community_id = community_id.substring(0, community_id.indexOf('?')); +router.get('/all', function (req, res) { + res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); database.connect().then(async e => { - let community = await database.getCommunityByID(community_id.substring(0, community_id)); - let newPosts = await database.getNewPostsByCommunity(community, 100); - let totalNumPosts = await database.getNumberPostsByCommunity(community); - if(isAJAX) { - res.render('ctr/ctr_community_ajax.ejs', { - // EJS variable and server-side variable - community: community, - newPosts: newPosts, - totalNumPosts: totalNumPosts - }); - } - else { - res.render('ctr/ctr_community.ejs', { - // EJS variable and server-side variable - community: community, - newPosts: newPosts, - totalNumPosts: totalNumPosts - }); - } + let communities = await database.getCommunities(90); + res.render('ctr/all_communities.ejs', { + communities: communities, + }); + }).catch(error => { + res.set("Content-Type", "application/xml"); + res.statusCode = 400; + response = { + result: { + has_error: 1, + version: 1, + code: 400, + error_code: 15, + message: "SERVER_ERROR" + } + }; + res.send("\n" + xml(response)); + }); +}); + +router.get('/announcements', function (req, res) { + res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); + database.connect().then(async e => { + let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); + if(pid === null) + pid = 1000000000; + let user = await database.getUserByPID(pid); + let community = await database.getCommunityByID('announcements'); + let newPosts = await database.getNumberNewCommunityPostsByID(community, 25); + let totalNumPosts = await database.getTotalPostsByCommunity(community); + res.render('ctr/announcements.ejs', { + moment: moment, + community: community, + newPosts: newPosts, + user: user, + totalNumPosts: totalNumPosts + }); }).catch(error => { console.error(error); res.set("Content-Type", "application/xml"); @@ -86,4 +90,137 @@ router.get('/*/new', function (req, res) { }); }); +router.get('/:communityID/:type', function (req, res) { + res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); + database.connect().then(async e => { + let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); + if(pid === null) + pid = 1000000000; + let user = await database.getUserByPID(pid); + let community = await database.getCommunityByID(req.params.communityID.toString()); + let newPosts = await database.getNumberNewCommunityPostsByID(community, 1); + let totalNumPosts = await database.getTotalPostsByCommunity(community) + res.render('ctr/community.ejs', { + moment: moment, + community: community, + newPosts: newPosts, + totalNumPosts: totalNumPosts, + user: user + }); + }).catch(error => { + console.error(error); + res.set("Content-Type", "application/xml"); + res.statusCode = 400; + response = { + result: { + has_error: 1, + version: 1, + code: 400, + error_code: 15, + message: "SERVER_ERROR" + } + }; + res.send("\n" + xml(response)); + }); +}); + +router.get('/:communityID/:type/loadPosts', function (req, res) { + res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); + database.connect().then(async e => { + let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); + let post = await database.getPostByID(req.query.postID); + if(pid === null) + pid = 1000000000; + let user = await database.getUserByPID(pid); + let communityMap = await util.data.getCommunityHash(); + let posts; + if(post !== null) + posts = await database.getCommunityPostsAfterTimestamp(post, 1); + else { + let community = await database.getCommunityByID(req.params.communityID) + switch (req.params.type) { + case 'popular': + posts = await database.getNumberPopularCommunityPostsByID(community, 10); + break; + case 'verified': + posts = await database.getNumberVerifiedCommunityPostsByID(community, 10); + break; + default: + posts = await database.getNewPostsByCommunity(community, 10); + break; + } + } + + if(posts.length > 0) + { + res.render('ctr/more_posts.ejs', { + communityMap: communityMap, + moment: moment, + database: database, + user: user, + newPosts: posts, + }); + } + else + { + res.sendStatus(204); + } + }).catch(error => { + console.log(error); + res.set("Content-Type", "application/xml"); + res.statusCode = 400; + response = { + result: { + has_error: 1, + version: 1, + code: 400, + error_code: 15, + message: "SERVER_ERROR" + } + }; + res.send("\n" + xml(response)); + }); +}); + +router.post('/follow', upload.none(), function (req, res) { + database.connect().then(async e => { + let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); + let community = await database.getCommunityByID(req.body.communityID); + if(pid === null) + pid = 1000000000; + let user = await database.getUserByPID(pid); + if(req.body.type === 'true' && user !== null && user.followed_communities.indexOf(community.id) === -1) + { + console.log('following!') + community.upFollower(); + user.addToCommunities(community.id); + res.sendStatus(200); + } + else if(req.body.type === 'false' && user !== null && user.followed_communities.indexOf(community.id) !== -1) + { + console.log('unfollowing!') + community.downFollower(); + user.removeFromCommunities(community.id); + res.sendStatus(200); + } + else + res.sendStatus(423); + + }).catch(error => { + console.log(error); + res.set("Content-Type", "application/xml"); + res.statusCode = 423; + response = { + result: { + has_error: 1, + version: 1, + code: 400, + error_code: 15, + message: "SERVER_ERROR" + } + }; + res.send("\n" + xml(response)); + }); +}); + module.exports = router; diff --git a/src/services/juxt-web/routes/ctr/posts.js b/src/services/juxt-web/routes/ctr/posts.js new file mode 100644 index 0000000..ecf7bc3 --- /dev/null +++ b/src/services/juxt-web/routes/ctr/posts.js @@ -0,0 +1,129 @@ +var express = require('express'); +var xml = require('object-to-xml'); +const database = require('../../../../database'); +const util = require('../../../../authentication'); +const { POST } = require('../../../../models/post'); +var multer = require('multer'); +var upload = multer({ dest: 'uploads/' }); +const snowflake = require('node-snowflake').Snowflake; +var router = express.Router(); + +router.post('/empathy', function (req, res) { + database.connect().then(async e => { + let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); + let post = await database.getPostByID(req.body.postID); + if(pid === null) + pid = 1000000000; + let user = await database.getUserByPID(pid); + if(req.body.type === 'up' && user !== null && user.likes.indexOf(post.id) === -1 && user.id !== post.pid) + { + post.upEmpathy(); + user.addToLikes(post.id) + res.sendStatus(200); + } + else if(req.body.type === 'down' && user !== null && user.likes.indexOf(post.id) !== -1 && user.id !== post.pid) + { + post.downEmpathy(); + user.removeFromLike(post.id); + res.sendStatus(200); + } + else + res.sendStatus(423); + + }).catch(error => { + console.log(error); + res.set("Content-Type", "application/xml"); + res.statusCode = 423; + response = { + result: { + has_error: 1, + version: 1, + code: 400, + error_code: 15, + message: "SERVER_ERROR" + } + }; + res.send("\n" + xml(response)); + }); +}); + +router.post('/new', upload.none(), async function (req, res, next) { + try + { + let paramPackData = util.data.decodeParamPack(req.headers["x-nintendo-parampack"]); + let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); + if(pid === null) + { + throw new Error('The User token was not valid'); + } + else + { + let usrObj = await database.getUserByPID(pid); + if(usrObj.account_status !== 0) { + throw new Error('User not allowed to post') + } + let community = await database.getCommunityByID(req.body.olive_community_id); + let appData = ""; + if (req.body.app_data) { + appData = req.body.app_data.replace(/\0/g, "").trim(); + } + let painting = ""; + if (req.body.painting) { + painting = req.body.painting.replace(/\0/g, "").trim(); + } + let paintingURI = ""; + if (req.body.painting) { + paintingURI = await util.data.processPainting(painting); + } + let screenshot = ""; + if (req.body.screenshot) { + screenshot = req.body.screenshot.replace(/\0/g, "").trim(); + } + const document = { + title_id: community.title_id[0], + community_id: community.community_id, + screen_name: usrObj.user_id, + body: req.body.body, + app_data: appData, + painting: painting, + painting_uri: paintingURI, + screenshot: screenshot, + country_id: paramPackData.country_id, + created_at: new Date(), + feeling_id: req.body.feeling_id, + id: snowflake.nextId(), + is_autopost: req.body.is_autopost, + is_spoiler: req.body.is_spoiler, + is_app_jumpable: req.body.is_app_jumpable, + language_id: req.body.language_id, + mii: usrObj.mii, + mii_face_url: usrObj.pfp_uri, + pid: pid, + platform_id: paramPackData.platform_id, + region_id: paramPackData.region_id, + }; + const newPost = new POST(document); + newPost.save(); + res.redirect('/communities/' + community.community_id); + } + } + catch (e) + { + console.error(e); + res.set("Content-Type", "application/xml"); + res.statusCode = 400; + response = { + result: { + has_error: 1, + version: 1, + code: 400, + error_code: 7, + message: "POSTING_FROM_NNID" + } + }; + res.send("\n" + xml(response)); + } + +}); + +module.exports = router; diff --git a/src/services/juxt-web/routes/ctr/show.js b/src/services/juxt-web/routes/ctr/show.js index b720233..de77728 100644 --- a/src/services/juxt-web/routes/ctr/show.js +++ b/src/services/juxt-web/routes/ctr/show.js @@ -2,36 +2,48 @@ var express = require('express'); var xml = require('object-to-xml'); const database = require('../../../../database'); const util = require('../../../../authentication'); -const ejs = require('ejs'); +var moment = require('moment'); var router = express.Router(); -/* GET discovery server. */ router.get('/', function (req, res) { - res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2'); + res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); database.connect().then(async e => { let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); let user = null; if(pid === null) { - pid = 1000000000; - user = await database.getUserByPID(pid); - let popularCommunities = await database.getMostPopularCommunities(9); - let newCommunities = await database.getNewCommunities(6); - res.render('ctr/ctr_guest_notice.ejs', {}); + res.render('ctr/guest_notice.ejs', {}); } else { user = await database.getUserByPID(pid); if(user === null) { - res.render('ctr/ctr_first_run.ejs', {}); + res.render('ctr/first_run.ejs', {}); + } + if(moment(user.ban_lift_date).format('YYYY-MM-DD') <= moment().format('YYYY-MM-DD') && user.account_status !== 3) { + user.account_status = 0; + user.save() + } + /** + * Account Status + * 0 - Fine + * 1 - Limited from Posting + * 2 - Temporary Ban + * 3 - Forever Ban + */ + if(user.account_status !== 0) + { + res.render('ctr/ban_notification.ejs', { + user: user, + moment: moment + }); } else { let popularCommunities = await database.getMostPopularCommunities(9); let newCommunities = await database.getNewCommunities(6); - res.render('ctr/ctr_show.ejs', { - // EJS variable and server-side variable + res.render('ctr/communities.ejs', { popularCommunities: popularCommunities, newCommunities: newCommunities }); @@ -55,25 +67,24 @@ router.get('/', function (req, res) { }); router.get('/first', function (req, res) { - res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2'); - res.render('ctr/ctr_first_run.ejs', {}); + res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); + res.render('ctr/first_run.ejs', {}); }); router.post('/newUser', function (req, res) { - res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2'); database.connect().then(async e => { let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); let user = null; if(pid === null) { - res.sendStatus(501); + res.sendStatus(401); } else { user = await database.getUserByPID(pid); if(user === null) { - await util.data.create_user(pid, req.body.experience, req.body.notifications); + await util.data.create_user(pid, req.body.experience, req.body.notifications, req.body.region); if(await database.getUserByPID(pid) !== null) res.sendStatus(200); else diff --git a/src/services/juxt-web/routes/ctr/userpage.js b/src/services/juxt-web/routes/ctr/userpage.js index 39ae275..6254325 100644 --- a/src/services/juxt-web/routes/ctr/userpage.js +++ b/src/services/juxt-web/routes/ctr/userpage.js @@ -6,6 +6,35 @@ const ejs = require('ejs'); var router = express.Router(); /* GET discovery server. */ + +router.get('/menu', function (req, res) { + res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2'); + database.connect().then(async e => { + let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); + if(pid === null) + pid = 1000000000; + let user = await database.getUserByPID(pid); + res.render('ctr/user_menu.ejs', { + user: user, + }); + + }).catch(error => { + console.log(error); + res.set("Content-Type", "application/xml"); + res.statusCode = 400; + response = { + result: { + has_error: 1, + version: 1, + code: 400, + error_code: 15, + message: "SERVER_ERROR" + } + }; + res.send("\n" + xml(response)); + }); +}); + router.get('/me', function (req, res) { res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2'); var isAJAX = ((req.query.ajax+'').toLowerCase() === 'true') @@ -20,7 +49,7 @@ router.get('/me', function (req, res) { let newPosts = await database.getPostsByUserID(pid); let numPosts = await database.getNumberUserPostsByID(pid); if(isAJAX) { - res.render('ctr/ctr_user_page_ajax.ejs', { + res.render('ctr/user_page.ejs', { // EJS variable and server-side variable user: user, newPosts: newPosts, diff --git a/src/services/juxt-web/routes/ctr/web.js b/src/services/juxt-web/routes/ctr/web.js index 88dac48..d7e1288 100644 --- a/src/services/juxt-web/routes/ctr/web.js +++ b/src/services/juxt-web/routes/ctr/web.js @@ -1,26 +1,137 @@ var express = require('express'); var router = express.Router(); +const database = require('../../../../database'); +const util = require('../../../../authentication'); var path = require('path'); -/* GET discovery server. */ router.get('/css/juxt.css', function (req, res) { + res.set("Content-Type", "text/css"); res.sendFile('css/juxt.css', {root: path.join(__dirname, '../../../../webfiles/ctr/')}); }); router.get('/js/juxt.js', function (req, res) { + res.set("Content-Type", "application/javascript; charset=utf-8"); res.sendFile('js/juxt.js', {root: path.join(__dirname, '../../../../webfiles/ctr/')}); }); -router.get('/icons/Icon-feather-search.svg', function (req, res) { - res.sendFile('icons/Icon-feather-search.svg', {root: path.join(__dirname, '../../../../webfiles/ctr/')}) +router.get('/js/pjax.js', function (req, res) { + res.set("Content-Type", "application/javascript; charset=utf-8"); + res.sendFile('js/pjax.js', {root: path.join(__dirname, '../../../../webfiles/ctr/')}); }); -router.get('/icons/mario-kart.jpg', function (req, res) { - res.sendFile('icons/mario-kart.jpg', {root: path.join(__dirname, '../../../../webfiles/ctr/')}); +router.get('/fonts/Poppins-Light.woff', function (req, res) { + res.set("Content-Type", "font/woff"); + res.sendFile('fonts/Poppins-Light.woff', {root: path.join(__dirname, '../../../../webfiles/ctr/')}); +}); + +router.get('/fonts/Poppins-Light.ttf', function (req, res) { + res.set("Content-Type", "font/ttf"); + res.sendFile('fonts/Poppins-Light.ttf', {root: path.join(__dirname, '../../../../webfiles/ctr/')}); }); router.get('/favicon.ico', function (req, res) { + res.set("Content-Type", "image/x-icon"); res.sendFile('css/favicon.ico', {root: path.join(__dirname, '../../../../webfiles/portal/')}); }); +router.get('/icons/:image_id.png', function (req, res) { + res.set("Content-Type", "image/png"); + database.connect().then(async e => { + let community = await database.getCommunityByID(req.params.image_id.toString()); + if(community !== null) { + if(community.browser_icon.indexOf('data:image/png;base64,') !== -1) + res.send(Buffer.from(community.browser_icon.replace('data:image/png;base64,',''), 'base64')); + else + res.send(Buffer.from(community.browser_icon, 'base64')); + } + else { + let user = await database.getUserByPID(req.params.image_id.toString()); + if(user !== null) + if(user.pfp_uri.indexOf('data:image/png;base64,') !== -1) + res.send(Buffer.from(user.pfp_uri.replace('data:image/png;base64,',''), 'base64')); + else + res.send(Buffer.from(user.pfp_uri, 'base64')); + else + res.sendStatus(404); + } + }).catch(error => { + console.error(error); + res.sendStatus(404) + }); +}); + +router.get('/tip/:image_id.png', function (req, res) { + res.set("Content-Type", "image/png"); + database.connect().then(async e => { + let community = await database.getCommunityByID(req.params.image_id.toString()); + if(community !== null) { + if(community.browser_thumbnail.indexOf('data:image/png;base64,') !== -1) + res.send(Buffer.from(community.browser_thumbnail.replace('data:image/png;base64,',''), 'base64')); + else + res.send(Buffer.from(community.browser_thumbnail, 'base64')); + } + else { + let user = await database.getUserByPID(req.params.image_id.toString()); + if(user !== null) + if(user.pfp_uri.indexOf('data:image/png;base64,') !== -1) + res.send(Buffer.from(user.pfp_uri.replace('data:image/png;base64,',''), 'base64')); + else + res.send(Buffer.from(user.pfp_uri, 'base64')); + else + res.sendStatus(404); + } + }).catch(error => { + console.error(error); + res.sendStatus(404) + }); +}); + +router.get('/banner/:image_id.png', function (req, res) { + res.set("Content-Type", "image/png"); + database.connect().then(async e => { + let community = await database.getCommunityByID(req.params.image_id.toString()); + if(community !== null) + if(community.WiiU_browser_header.indexOf('data:image/png;base64,') !== -1) + res.send(Buffer.from(community.WiiU_browser_header.replace('data:image/png;base64,',''), 'base64')); + else + res.send(Buffer.from(community.WiiU_browser_header, 'base64')); + else + res.sendStatus(404); + }).catch(error => { + console.error(error); + res.sendStatus(404) + }); +}); + +router.get('/notifications.json', function (req, res) { + res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2'); + database.connect().then(async e => { + let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); + if(pid === null) + pid = 1000000000; + let user = await database.getUserByPID(pid); + res.send( + { + messages: 0, + news: user.notification_list.filter(notification => notification.read === false).length, + } + ) + + }).catch(error => { + console.log(error); + res.set("Content-Type", "application/xml"); + res.statusCode = 400; + response = { + result: { + has_error: 1, + version: 1, + code: 400, + error_code: 15, + message: "SERVER_ERROR" + } + }; + res.send("\n" + xml(response)); + }); +}); + module.exports = router; diff --git a/src/services/juxt-web/routes/index.js b/src/services/juxt-web/routes/index.js index 682b075..8206197 100644 --- a/src/services/juxt-web/routes/index.js +++ b/src/services/juxt-web/routes/index.js @@ -11,6 +11,7 @@ module.exports = { CTR_WEB: require('./ctr/web'), CTR_COMMUNITIES: require('./ctr/communities'), CTR_USER: require('./ctr/userpage'), + CTR_POST: require('./ctr/posts'), WEB_ADMIN: require('./admin/home'), WEB_API: require('./admin/api'), }; \ No newline at end of file diff --git a/src/services/juxt-web/routes/portal/posts.js b/src/services/juxt-web/routes/portal/posts.js index b4c6ca9..ecf7bc3 100644 --- a/src/services/juxt-web/routes/portal/posts.js +++ b/src/services/juxt-web/routes/portal/posts.js @@ -81,13 +81,13 @@ router.post('/new', upload.none(), async function (req, res, next) { } const document = { title_id: community.title_id[0], + community_id: community.community_id, screen_name: usrObj.user_id, body: req.body.body, app_data: appData, painting: painting, painting_uri: paintingURI, screenshot: screenshot, - community_id: req.body.community_id, country_id: paramPackData.country_id, created_at: new Date(), feeling_id: req.body.feeling_id, diff --git a/src/services/juxt-web/routes/portal/userpage.js b/src/services/juxt-web/routes/portal/userpage.js index a272b21..57c661f 100644 --- a/src/services/juxt-web/routes/portal/userpage.js +++ b/src/services/juxt-web/routes/portal/userpage.js @@ -96,7 +96,6 @@ router.post('/me', upload.none(), function (req, res) { router.get('/show', function (req, res) { res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); - var isAJAX = ((req.query.ajax+'').toLowerCase() === 'true') var userID = req.query.pid; if(userID === 'me') { res.sendStatus(504); diff --git a/src/webfiles/admin/admin_communities.ejs b/src/webfiles/admin/admin_communities.ejs index 8b1643c..1a2f030 100644 --- a/src/webfiles/admin/admin_communities.ejs +++ b/src/webfiles/admin/admin_communities.ejs @@ -55,7 +55,7 @@ <% for(var i = 0; i < communities.length; i++) { %> - + <%= communities[i].name %> <%= moment(communities[i].created_at).fromNow() %> <%= communities[i].title_ids %> diff --git a/src/webfiles/admin/admin_community.ejs b/src/webfiles/admin/admin_community.ejs index 165cb02..f097756 100644 --- a/src/webfiles/admin/admin_community.ejs +++ b/src/webfiles/admin/admin_community.ejs @@ -35,6 +35,7 @@ +
diff --git a/src/webfiles/admin/admin_edit_community.ejs b/src/webfiles/admin/admin_edit_community.ejs index 541ee49..d750df9 100644 --- a/src/webfiles/admin/admin_edit_community.ejs +++ b/src/webfiles/admin/admin_edit_community.ejs @@ -71,11 +71,11 @@
- Browser Icon (512px x 512px) + Browser Icon (128px x 128px)
- +
@@ -126,6 +126,21 @@ checked <%}%>>
+ +
+ Type + checked <%}%>> + + checked <%}%>> + + checked <%}%>> + +
+ +
+ + +
diff --git a/src/webfiles/admin/admin_edit_sub_community.ejs b/src/webfiles/admin/admin_edit_sub_community.ejs new file mode 100644 index 0000000..22b1ced --- /dev/null +++ b/src/webfiles/admin/admin_edit_sub_community.ejs @@ -0,0 +1,184 @@ + + + + + Edit - <%= community.name %> + + + + +

Juxt Admin Panel - <%= user.user_id %>

+ +
+
+ +
+ +
+

New <%=community.name%> Sub-Community

+
+
+ +
+
+ + +
+ +
+ + +
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
+ +
+ +
+
+
+ Browser Icon (128px x 128px) + +
+
+ +
+
+ +
+ +
+
+ 3DS Browser Banner (400px x 220px) + +
+
+ +
+
+ +
+ +
+ Wii U Browser Banner (1498px x 328px) + + +
+ +
+ +
+ Is Recommended? + checked <%}%>> + + checked <%}%>> + +
+ +
+ Has Shop Page? + checked <%}%>> + + checked <%}%>> + +
+ +
+ Platform + checked <%}%>> + + checked <%}%>> + + checked <%}%>> + +
+ +
+ Type + + + + + + +
+ +
+ + +
+
+
+ +
+ +
+
+ + +
+ +
+
+ +
+
+ + + + diff --git a/src/webfiles/admin/admin_new_community.ejs b/src/webfiles/admin/admin_new_community.ejs index 14a85ee..473b5d2 100644 --- a/src/webfiles/admin/admin_new_community.ejs +++ b/src/webfiles/admin/admin_new_community.ejs @@ -119,6 +119,21 @@ + +
+ Type + + + checked<%}%>> + + + +
+ +
+ + +
diff --git a/src/webfiles/admin/admin_sub_communities.ejs b/src/webfiles/admin/admin_sub_communities.ejs new file mode 100644 index 0000000..e8c0c21 --- /dev/null +++ b/src/webfiles/admin/admin_sub_communities.ejs @@ -0,0 +1,138 @@ + + + + + Juxt Admin Panel + + + + + +

Juxt Admin Panel - <%= user.user_id %>

+ +
+
+ +
+ +
+

Communities

+ + +
+ + + + + + + + + + <% for(var i = 0; i < communities.length; i++) { %> + + + + + + + + <%}%> + +
IconNameCreated AtTitle ID'sFollowers
<%= communities[i].name %><%= moment(communities[i].created_at).fromNow() %><%= communities[i].title_ids %><%= communities[i].followers %>
+ + + + + \ No newline at end of file diff --git a/src/webfiles/ctr/ctr_communities.ejs b/src/webfiles/ctr/communities.ejs similarity index 78% rename from src/webfiles/ctr/ctr_communities.ejs rename to src/webfiles/ctr/communities.ejs index ac1ab72..c3c7b48 100644 --- a/src/webfiles/ctr/ctr_communities.ejs +++ b/src/webfiles/ctr/communities.ejs @@ -3,9 +3,9 @@ 3DS Testing + -
@@ -31,8 +31,8 @@ <% if(i === popularCommunities.length - 1) { %> -
- +
+

<%= popularCommunities[i].name %>

<%= popularCommunities[i].followers %> followers

@@ -41,8 +41,8 @@ <% } else { %> -
- +
+

<%= popularCommunities[i].name %>

<%= popularCommunities[i].followers %> followers

@@ -56,24 +56,24 @@

New Communities

- <% for(var j = 0; j < newCommunities.length; j++) {%> - <% if(j === newCommunities.length - 1) { %> + <% for(var i = 0; i < newCommunities.length; i++) {%> + <% if(i === newCommunities.length - 1) { %> <% } else { %> diff --git a/src/webfiles/ctr/community.ejs b/src/webfiles/ctr/community.ejs new file mode 100644 index 0000000..e218ac8 --- /dev/null +++ b/src/webfiles/ctr/community.ejs @@ -0,0 +1,105 @@ + + + + + 3DS Testing + + + + + +
+
style="background: url('<%=community.CTR_browser_header%>')"<%}%>> +
+

+ +

+
+
+

<%= community.name %>

+
+
+ + <%if(user.followed_communities.indexOf(community.id) !== -1){ %> +
+

Following

+
+ <%} else {%> +
style="display: none" <%}%>> +

Follow

+
+ <%}%> + +
+
-
- -

<%= newCommunities[j].name %>

-

<%= newCommunities[j].followers %> followers

+
+ +

<%= newCommunities[i].name %>

+

<%= newCommunities[i].followers %> followers

-
- -

<%= newCommunities[j].name %>

-

<%= newCommunities[j].followers %> followers

+
+ +

<%= newCommunities[i].name %>

+

<%= newCommunities[i].followers %> followers

+ + + + + + + +
+

Recent posts

+
+ + +

Verified posts

+
+ +
+ + <% if(totalNumPosts === 0) {%> +

No Posts

+ <%} else { %> + + <% newPosts.forEach(function(post) { %> + +
+ <% if(post.body !== '' && post.painting === '' && post.screenshot === '' && !post.url) { %> +

<%= post.body %>

+ <%} else { %> + <% if(post.screenshot !== '') { %> + + <%}%> + <% if(post.painting !== '') { %> + + <%}%> + <% if(post.url) { %> +

Video Playback is not yet supported on the 3DS

+ <%}%> + <% if(post.body) { %> +
+

<%= post.body %>

+
+ <%}%> + <%}%> +
+ <% }); %> + <%}%> +
+
+
+
+ + + \ No newline at end of file diff --git a/src/webfiles/ctr/css/juxt.css b/src/webfiles/ctr/css/juxt.css index c52dc08..2b6734c 100644 --- a/src/webfiles/ctr/css/juxt.css +++ b/src/webfiles/ctr/css/juxt.css @@ -38,12 +38,12 @@ h4 { height: 30px; } .header-title { - margin: 165px 0 0; position: absolute; width: 350px; - height: 40px; + height: 44px; z-index: 2; - padding-top: 11px; + margin: 167px 0 0; + padding-top: 9px; padding-left: 50px; white-space: nowrap; text-align: left; @@ -51,7 +51,7 @@ h4 { font-weight: bolder; font-size: 25px; color: rgb(0 0 0); - background-color: rgba(0,0,0,0); + background-color: rgba(255, 255, 255, 0.6) } .header-icon { @@ -163,12 +163,9 @@ h4 { background-size: 50px 50px !important; width: 50px; height: 50px; - border-radius: 10px; - margin-top: 5px; - margin-right: 10px; - margin-left: 5px; + border-radius: 6px; float: left; - margin-bottom: 15px; + margin: 5px 10px 15px 5px; background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV/TaqVUHOwg4pChdrIgKuIoVSyChdJWaNXB5NIvaGJIUlwcBdeCgx+LVQcXZ10dXAVB8APEydFJ0UVK/F9SaBHjwXE/3t173L0DhGaNqWZgHFA1y8gkE2K+sCIGXxFCAH7E0CsxU09lF3LwHF/38PH1Ls6zvM/9OfqVoskAn0g8y3TDIl4nnt60dM77xBFWkRTic+Ixgy5I/Mh12eU3zmWHBZ4ZMXKZOeIIsVjuYrmLWcVQiaeIo4qqUb6Qd1nhvMVZrdVZ+578heGitpzlOs0RJLGIFNIQIaOOKmqwEKdVI8VEhvYTHv5hx58ml0yuKhg55rEBFZLjB/+D392apckJNymcAHpebPtjFAjuAq2GbX8f23brBPA/A1dax7/RBGY+SW90tOgRMLANXFx3NHkPuNwBhp50yZAcyU9TKJWA9zP6pgIweAuEVt3e2vs4fQBy1NXSDXBwCMTKlL3m8e6+7t7+PdPu7wciuXKHjJUaWAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+QKBAMtDK8J1F8AAADsSURBVGje7dvNDYMwDIZhYmWtLsAizMQiXYDB2nsEEkj4J/brY3vpIzvkw1Lb9vn+lkIlS7ECDDhZ9bMP92NtGXBnD2RGGjBgwIABAwYMGLBmlrbMttbZvXtCx+8t4KINfbJCslg3hTvD2miJ+MM10S4d3o+1eS0ZxLK7I9QD7X6Gr9BaYy1WiCh7sm7dufLR0jp9SURsmiztCXXr8B2s5vmXSthwWXr6t6W7IMuoKZ5d9MjUPevoTvM+DHj2kR6vJuvxDpulywSP9PdwuZFO/9DyXgxwDwMGDBgwYMCAAQN+qRp/4wEMGPBM9Qf3C2DK9iBTlQAAAABJRU5ErkJggg=='); } .community-list-icon.bottom { @@ -474,15 +471,9 @@ h4 { text-align: center; width: 350px; height: 640px; - /*margin: 40px 190px;*/ - /*background-color: rgba(255,255,255,1); - border: 1.5px solid #d6d2d2; - border-radius: 10px;*/ } .about-header { - /*margin-top: -420px; - margin-left: 175px;*/ text-align: center; font-size: 20px; padding-top: 180px; @@ -514,7 +505,7 @@ h4 { .community-page-info-icon { width: 40px; height: 40px; - border-radius: 10px; + border-radius: 6px; } .user-page-tab-table { @@ -570,22 +561,285 @@ h4 { display: inline-block; } +.user-menu-button { + height: 37px; + width: 290px; + margin: 2px; + background: #673DB6; + color: white; + font-size: large; + border-width: 0; + border-radius: 6px; +} + .community-page-table-wrapper { - border-top: #D6D2D2; - border-width: 5px; - position: absolute; - padding-top: 115px; - margin-left: 17px; + position: relative; + margin-left: 10px; + margin-top: 10px; + margin-bottom: 10px; line-height: 20px; + background-color: rgba(255,255,255,1); + border: 1.5px solid #d6d2d2; + border-radius: 10px; } .community-page-table-label { color: #673DB6; padding-left: 15px; + margin-top: 0; } .community-page-table-text { color: black; padding-left: 15px; - margin-top: -15px + margin-top: -20px; +} + +.community-page-shaded-info-container { + z-index: 3; + width: 139px; + height: 36px; + background-color: rgb(233, 233, 233); + border: 1.5px solid #e9e9e9; + border-radius: 5px; + margin: 2px; +} + +.community-page-follow-button { + width: 115px; + height: 25px; + position: relative; + margin-bottom: 10px; + margin-left: 239px; + background-color: white; + border-color: #1F8A42; + border-style: solid; + border-bottom-left-radius: 4px; +} + +.community-page-follow-button.selected { + background-color: #1F8A42; +} + +.community-page-follow-button > .community-page-follow-button-text { + color: #1F8A42; + font-size: 11px; + margin-top: 6px; + margin-left: 20px; +} + +.community-page-follow-button.selected > .community-page-follow-button-text { + color: white; + font-size: 11px; + margin-top: 5px; + margin-left: 12px; +} + +#community-related-wrapper { + width: 75px; + height: 25px; + position: absolute; + margin-bottom: 10px; + margin-left: -40px; + padding-left: 40px; + background-color: #1F8A42; + border-color: #1F8A42; + border-style: solid; + border-bottom-right-radius: 4px; +} + +.related-button-text { + color: white; + font-size: 11px; + margin-top: 5px; + margin-left: 20px; +} + +.community-page-posts-wrapper { + position: relative; + z-index: 3; + background-color: rgba(255,255,255,1); + border: 1.5px solid #d6d2d2; + border-radius: 10px; + margin-top: 15px; + margin-bottom: 30px; + min-height: 190px; +} + +.community-page-posts-header { + margin-top: 25px; +} + +.community-page-posts-header-tab { + padding-left: 14px; + padding-right: 10px; + font-size: 11px; + cursor: pointer; +} + +.community-page-posts-header-tab.active { + color: #673DB6; +} + +.community-page-post-wrapper { + padding-top: 10px; +} + +.community-page-post-screenshot { + width: 280px; + border: 1.5px solid #d6d2d2; + border-radius: 6px; + margin-left: 15px; +} + +.community-page-post-painting { + margin-left: 15px; + max-width: 280px; +} + +.community-page-post-time-stamp { + margin-top: 5px; +} + +.community-page-post-yeah-button-wrapper { + padding-bottom: 0; + margin-left: 244px; + margin-top: -46px; + background-repeat: no-repeat !important; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAA8CAYAAADSfGxZAAAABHNCSVQICAgIfAhkiAAABHpJREFUaEPtm8Fu20YQhv+hpAQ51X2CKIfIvVW5FW2M2sc4sK08QSSgZNJTmieo8gR2T02kAlaeIJQMO0czSFr0FudWKQXqPkGlU5BI4hRLiDQpU/LS4lKCQp4EaZfc/9uZ2eFol+C7jO9e3ifiMhMXCbTi/21ZPjO4S0wnzNSo/X7nuauLxIfy+vHK1cGHFyCsL4tgKR0M62P22r2GtdF1QDy4fXT82UFwSTGsZ282N+jh2mGZQftSBJe0EYErZNw+sojw/ZlGbtpDVOt/3D1ZRt0Pv3mZ55y9B9COZxSMV2SsHf7nD4zUpxtP/7xzuowQXE36t4dFLUNvz7yDu/Rg7Yj9op+93nTixrJf47pTEKMZT0GkIIIhIbWI1CJSi3BsIF01Rq6QgkhBBFPEuVhE6atf88NB5nqG0DPfG1LvMKX8/sow2/9aDD8zyL0zTyvdOLPdxEBsFX4racSPgNAah8Vgs9U2fvGLE8DYzuyCUAQoHxTOp2CckDZ8bP7148zvQspBiJnkK/19EJUkZtAiGlSEsO3V2iNiqoIwvTLG6NqgykHnB1Pi/hObKAVRulkrMpEo8siX+RhdgE9BVIwkjLnR7BiVSH18jZWC2CnU3k4Q9C8LsYwVInL8/sKLuccEJ54QowiiL8b72MDjg7a+d+G9QhooA7FdqFeJ8LP/mQx+pX3MlfyBTriOfbVfJZCIH+cv5p4NrTxu+k7Mgd0IAGF0SRvcukzMUALCCXKc/ScAgfG81dHLk2Zr62atrGnBEiEzv9M+5dYnrRCj+CPcyLMOZjRbHV0mHgWGogTEuCghqNUxLvR5f7+LILgqRqvRC08Vo9vs6F9GdQ8lILZXa3t+U4/iu8KaMMjmzb91S1bMzmpdLJ/X3fZEgxtR3UMVCItAXgGYhtiIIkwWgNtuu1A3ieAVX22me1GX0xTEiKYaEIV6gwj33Rmzba4cvDcaUWdatv34Mk0235JN3d1nKAGxtVr/SQN2fUKsZlvfkBUWpZ2TtGlnpXjRt9nWI1felYAIG1yUgCkLYrR8HvuTNpGrtNpG5P9slYAQQsYDmPgubhfZKdTEO0wgN7mMW4ixKQMRluzECSMMAjOetDp6Vdai/O2UgRAPOZfsjJ48q2WEQ5BL2iZBUgrCgRGSOs9iGZMgTEvFZSxEOYg4YaiCoDRGjM/CrJahEkKiIGaxDNUQEgdxGRhJQJgLiCgwkoIwNxAyMJKEMFcQ02AAELWIQJosW6iRWSrD2iSyfE4b3KTVxN9HNYS5W4QrdhqMJCAsDIhJbpIUhIUCMQ4jSQgLB0IMSNQyhkAx08+Zcf/ROy1WzT1YXjbKx90vBTEimoJIQQSdK7WI1CJSiwhdcFLXmOQaxtqRONjl7Tf4PA+uoHfuKBMzTLb5yTIfZbKzvEsEb3MJi6NM6eE2wDncJlzm/AG3uBPaxb2fsIbam8117wDslcEHsfnCd9pvcQcf18gEhE/ZayXvAKx7Y+EmNlNZ7Hz1B9C4HrwI92GgJ3bwasSNp6/vens4/gcrH5FO7PvkhAAAAABJRU5ErkJggg=='); + background-size: 35px; + width: 50px; + height: 40px; + position: absolute; +} + +.community-page-post-yeah-button-wrapper.selected { + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAA8CAYAAADSfGxZAAAABHNCSVQICAgIfAhkiAAABBNJREFUaEPtmztMFEEYx78hEAOihRb4QEMBKAWKFCq5O0MwvgATTIROCRheBRDpgNaD7hK1ECFK0E4KNeHpKyYcQSl4FiZAYRSUK6BAlAJkzLfeHrvL3u3u7dxuOOZLLrmwM7Pz/eb/PdjLEpBYhbP3VgxAEQVynhA4Ir0WLd8phR8E6KdNgFcd3oLnol8Ev1Q63h6HmPUOAnA5WhzW4wcFeAObcRXtw5e+CSCqnH1eIODQMznaxlAK3nZvvotUOXvLgJCn0eagIX8oLSdVrr4BALhiaGL0DR4klc7eRUJIUvT5pt8jSqkPFUH1T4nekRyE/2w5CA5CHuZcEVwRXBGqpY+HBg8NHhr2hcbBQ/GAn7XfG/B9dkVXe5qQGAfJqfuEsfNzv+DP6rqueeEOiliOyHIlQd7NFEg/c2Db3mbGl2HC64MP3V9l1xBWcW0GHEvbL4CT2tLimgCx++EXwO+sjTkIPMnbjZmAILQMgXS1TgmO5RWnQGFZKuD8UIbKeNY6DRNDPq3lDV1nCgJP8u79s5rOSHeIji39XBNUYMRG+uehq3XayJSQY5mCaH7iUHUITxw/CYmxkJyqz2FpPkFI8XtjtzmCYfJeEV7hkmEGAmVdWJYm28fMxDK0NY3JEh1KH8diKKgZAuhqmdomfQy10qZTMiCoJnf5MJOcwQQEJjb3i1yZXyMDC4JDwSznWjKUNmbKLs/PrYCnbjRohUCI7u5cGYxJrw8eNY2FK4TAPCYglE6hQ/fKhzU3J52nBUFcDJVR7c4OrI2qaMh/p3kvrQFMQJTUZsikbiR2hR7jcALMjC9p7TVwHdUnLa/NJR9NhwcTEA0PzkF61la/4KkfNeSYbgL+gTUt2XDauVWe25rHTJdTDsIPlwkIzOY5V48GDhbrO9b5SJmyTLvvDOtu3YPtiQmIi8UpQmssGnaMnvrPEeGAPQWCkFr1hX7T92ICQm1zRhKmES+UasBexVNnHjoTEOiIMoHh31iHCPYdWHKlxiIscD1mINSaHZYw1CD0dM5CT+ecEUEFHcsMBN5B2eyIdzWrDDUIeps2vZSYgsCbqrXOZpQRDEKoVlyv89JxzEGwhGEVBKY5QnkKZpVhJYSIgjCjDKshRBxEODDsgGAJCCMw7IJgGQg9MOyEYCmIUDDwfxPlY3+9D2rCKZVqcyJSPkNtLlg1kc6xGoLlihCdDQXDDgi2gQgWJnZBsBWEEoadEGwHgRvAZxn4o8/kkC/iP/SGyl2WJ0tWWZ71OhyEnygHwUHIg4srgiuCK0K14PDQEEODv7gCIL64wl9lAhgkla6+IgLwknWntpPWowA3/r/uuKtfcKOvHw8VoBgAahz9JzZj6CQA7NlJJ8lgr6tk4+/JtpHrCwII0XbzK9H/AA3nZQ9WdEU6AAAAAElFTkSuQmCC'); + background-size: 35px; + background-repeat: no-repeat !important; +} + +.community-page-post-yeah-button { + cursor: pointer; + position: absolute; + height: 32px; + width: 36px; + margin-bottom: 0; + padding-bottom: 0; +} + +.community-page-post-yeah-count { + color: #673DB6; + margin-top: -40px; + font-weight: bold; + font-size: small; + position: absolute; + text-align: right; + height: 33px; + width: 240px; +} + +.community-page-post-user-info-wrapper { + background-color: rgba(255,255,255,1); + margin-bottom: 15px; + margin-left: 80px; + min-width: 520px; +} + +.community-page-post-user-icon { + width: 50px; + border-radius: 4px; + margin-right: 5px; + float: left; +} + +.community-page-verified-user-badge { + position: absolute; + min-width: 1px; + height: 1px; + margin-left: 40px; + margin-top: -6px; + padding: 6px 5px 4px 5px; + border: 3px solid #673DB6; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALCAYAAABPhbxiAAAABHNCSVQICAgIfAhkiAAAAI5JREFUKFOV0lERgzAQRdH7FBQpSKgTpgrQgIPioE7AAg4qAQfLLE0YyBBC+cgH2TObt4n44zOzCmiBXnddQANQA90tmKAJeBbhKZJmhY1GUp8eO4e8zuE7BP5IekV8hSL0sCPwAFZcQiv0xcwOOEzO//0GIc1pjG04Cfa6LNo67nLFzt9cp1hbvI7cA1kA5mlGowbMjrkAAAAASUVORK5CYII='); + background-color: #673DB6; + background-position: 1.5px 3px; + background-size: 79%; + background-repeat: no-repeat !important; + font-size: 20px; + font-weight: bold; + text-align: center; + line-height: 18px; + -webkit-border-radius: 20px; +} + +.community-page-post-username { + padding-top: 5px; + font-size: small; + margin-bottom: 0; +} + +.community-page-post-text-overlay { + position: relative; + z-index: 5; + width: 280px; + margin-top: -10px; +} + +.no-posts-text { + margin-left: 40%; + color: rgba(113,141,148,1); + padding-top: 24px; +} + +h3 { + padding-left: 20px; +} + +iframe { + border: 1.5px solid #d6d2d2; + border-radius: 10px; + background-color: black; + margin-left: 15px; +} + +#load-more-posts-button { + position: absolute; + height: 25px; + width: 175px; + background: #673DB6; + color: white; + font-size: small; + border-width: 0; + border-radius: 15px; + bottom: -30px; + left: 70px; +} + +.community-page-new-post-button { + position: absolute; + margin-left: 100px; + margin-top: -41px; + height: 31px; + width: 120px; + background: #1F8A42; + color: white; + border-width: 0; + border-radius: 0 0 4px 4px; +} + +.post-user-info-wrapper { + margin-left: 15px + +} + +.community-page-post-wrapper > h3 { + font-size: small; + font-weight: normal; + margin-top: -5px; +} + +.community-page-post-text-overlay > h3 { + font-size: small; + font-weight: normal; } \ No newline at end of file diff --git a/src/webfiles/ctr/ctr_communities_ajax.ejs b/src/webfiles/ctr/ctr_communities_ajax.ejs deleted file mode 100644 index d41c131..0000000 --- a/src/webfiles/ctr/ctr_communities_ajax.ejs +++ /dev/null @@ -1,74 +0,0 @@ -
-
-

- Check out the communities for the games that you play or games that you're curious about! -

-
-
-

Communities

-
-
-
-
- -
- -
-

New Communities

- - - <% for(var j = 0; j < newCommunities.length; j++) {%> - <% if(j === newCommunities.length - 1) { %> - - - - <% } else { %> - - - - <% }} %> - -
-
- -

<%= newCommunities[j].name %>

-

<%= newCommunities[j].followers %> followers

-
-
-
- -

<%= newCommunities[j].name %>

-

<%= newCommunities[j].followers %> followers

-
-
-
-
-
\ No newline at end of file diff --git a/src/webfiles/ctr/ctr_show.ejs b/src/webfiles/ctr/ctr_show.ejs index cf0548d..736cc87 100644 --- a/src/webfiles/ctr/ctr_show.ejs +++ b/src/webfiles/ctr/ctr_show.ejs @@ -3,9 +3,9 @@ 3DS Testing + -
diff --git a/src/webfiles/ctr/ctr_user_page_ajax.ejs b/src/webfiles/ctr/ctr_user_page_ajax.ejs deleted file mode 100644 index 33c7198..0000000 --- a/src/webfiles/ctr/ctr_user_page_ajax.ejs +++ /dev/null @@ -1,59 +0,0 @@ -
-
-

- -

-
-
-

<%= user.user_id %>

-
-
- - - - - - - - - - -
-
-

Country

-

N/A

-
-
-
-

Birthday

-

N/A

-
-
-
-

Game experience

-

- <%if(user.game_skill === 0) {%> - Beginner - <%} else if(user.game_skill === 1) {%> - Intermediate - <%} else if(user.game_skill === 2) {%> - Expert - <%} else {%> - N/A - <%}%> -

-
-
-
-

Yeahs

-

N/A

-
-
- -
-

New Communities

-
-
-
\ No newline at end of file diff --git a/src/webfiles/ctr/fonts/Poppins-Light.eot b/src/webfiles/ctr/fonts/Poppins-Light.eot new file mode 100644 index 0000000..4845a18 Binary files /dev/null and b/src/webfiles/ctr/fonts/Poppins-Light.eot differ diff --git a/src/webfiles/ctr/fonts/Poppins-Light.otf b/src/webfiles/ctr/fonts/Poppins-Light.otf new file mode 100644 index 0000000..ca2a50d Binary files /dev/null and b/src/webfiles/ctr/fonts/Poppins-Light.otf differ diff --git a/src/webfiles/ctr/fonts/Poppins-Light.svg b/src/webfiles/ctr/fonts/Poppins-Light.svg new file mode 100644 index 0000000..f11d807 --- /dev/null +++ b/src/webfiles/ctr/fonts/Poppins-Light.svg @@ -0,0 +1,4870 @@ + + + + +Created by FontForge 20090914 at Thu Jul 30 02:15:48 2020 + By www-data +Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webfiles/ctr/fonts/Poppins-Light.ttf b/src/webfiles/ctr/fonts/Poppins-Light.ttf new file mode 100644 index 0000000..2ab0221 Binary files /dev/null and b/src/webfiles/ctr/fonts/Poppins-Light.ttf differ diff --git a/src/webfiles/ctr/fonts/Poppins-Light.woff b/src/webfiles/ctr/fonts/Poppins-Light.woff new file mode 100644 index 0000000..36f3669 Binary files /dev/null and b/src/webfiles/ctr/fonts/Poppins-Light.woff differ diff --git a/src/webfiles/ctr/js/juxt.js b/src/webfiles/ctr/js/juxt.js index bf4ffcc..488fdf9 100644 --- a/src/webfiles/ctr/js/juxt.js +++ b/src/webfiles/ctr/js/juxt.js @@ -1,9 +1,93 @@ var scrollPosition; var toolbarBackBtn = false; -var screenName = 'PNID_3DS_Test'; //var updateCheck = setInterval(checkForUpdates, 30000); var blankMemo = 'Qk0AEwAAAAAAAD4AAAAoAAAAQAEAAHgAAAABAAEAAAAAAMISAAASCwAAEgsAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='; +/* global Pjax */ +function initCommunities() { + var buttons = document.querySelectorAll("div[data-pjax]"); + if (!buttons) + return; + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener("click", function(e) { + var el = e.currentTarget; + cave.snd_playSe("SE_OLV_OK"); + cave.transition_begin(); + //alert(el.getAttribute("data-pjax")) + pjax.loadUrl(el.getAttribute("data-pjax")); + }); + } +} +function initUserMenu() { + var buttons = document.querySelectorAll("button[data-pjax]"); + if (!buttons) + return; + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener("click", function(e) { + var el = e.currentTarget; + cave.snd_playSe("SE_OLV_OK"); + cave.transition_begin(); + pjax.loadUrl(el.getAttribute("data-pjax")); + }); + } +} +function initNotifications() { + var buttons = document.querySelectorAll("tr[data-pjax]"); + if (!buttons) + return; + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener("click", function(e) { + var el = e.currentTarget; + cave.snd_playSe("SE_OLV_OK"); + pjax.loadUrl(el.getAttribute("data-pjax")); + }); + } +} +function initCommunityUsers() { + var users = document.querySelectorAll("img[data-pjax], span[data-pjax], h2[data-pjax]"); + console.log(users) + if (!users) + return; + for (var i = 0; i < users.length; i++) { + users[i].addEventListener("click", function(e) { + var el = e.currentTarget; + cave.snd_playSe("SE_OLV_OK"); + }); + } +} +document.addEventListener("DOMContentLoaded", onPageLoad); +cave.toolbar_setCallback(1, function() { + pjax.back(); + restoreLastScrollPosition(); +}) +cave.toolbar_setCallback(2, function() { + cave.toolbar_setActiveButton(2); + pjax.loadUrl('/feed'); +}) +cave.toolbar_setCallback(3, function() { + cave.toolbar_setActiveButton(3); + pjax.loadUrl('/communities'); +}) +cave.toolbar_setCallback(4, function() { + cave.toolbar_setActiveButton(4); + pjax.loadUrl('/news') +}) +cave.toolbar_setCallback(5, function() { + cave.toolbar_setActiveButton(5); + pjax.loadUrl('/users/menu') +}) +cave.toolbar_setCallback(8, function() { + messageResponse() +}) + +function onPageLoad() { + // Init page content + pjax.canGoBack(); + initUserMenu(); + initCommunities(); + initNotifications(); + initCommunityUsers(); +} function onStart() { //loadTab(3); cave.transition_end(); @@ -26,39 +110,6 @@ function toggleBackBtn() { } } - -cave.toolbar_setCallback(1, function() { - //history.back(); - toggleBackBtn(); - loadTab(6); - cave.toolbar_setMode(0); - restoreLastScrollPosition(); -}) - -cave.toolbar_setCallback(2, function() { - cave.toolbar_setActiveButton(2); - loadTab(2); -}) - -cave.toolbar_setCallback(3, function() { - cave.toolbar_setActiveButton(3); - loadTab(3); -}) - -cave.toolbar_setCallback(4, function() { - cave.toolbar_setActiveButton(4); - loadTab(4); -}) - -cave.toolbar_setCallback(5, function() { - cave.toolbar_setActiveButton(5); - loadTab(5); -}) - -cave.toolbar_setCallback(8, function() { - messageResponse() -}) - function loadMessageThread() { storeScrollPosition(); var xhttp = new XMLHttpRequest(); @@ -73,7 +124,6 @@ function loadMessageThread() { xhttp.open("GET", "/message-thread.html", true); xhttp.send(); } - function messageResponse() { var messageConfirmation; var responseType = cave.dialog_twoButton('Reply to Message', 'Select your response type', 'Drawing', 'Text'); @@ -122,7 +172,6 @@ function sendTextMessage(messageContents) { ''; document.getElementById('message-viewer-content').innerHTML = currentThread + newMessage } - function sendDrawingMessage(memoURI) { var today = new Date(); var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate(); @@ -138,15 +187,13 @@ function sendDrawingMessage(memoURI) { document.getElementById('message-viewer-content').innerHTML = currentThread + newMessage } function loadTab(tabID) { - cave.transition_begin(); + var pageID = ''; switch (tabID) { case 2: - window.location.reload(); - return; - //pageID = 'activity-feed'; - //break; + pageID = 'activity-feed'; + break; case 3: pageID = 'communities'; break; @@ -154,7 +201,7 @@ function loadTab(tabID) { pageID = 'news'; break; case 5: - pageID = 'users/me'; + pageID = 'users/menu'; break; case 6: pageID = 'messages'; @@ -164,6 +211,9 @@ function loadTab(tabID) { pageID = 'message-thread'; cave.snd_playSe("SE_OLV_OK"); break; + case 8: + pageID = 'users/me' + break; default : pageID = 'communities'; break; @@ -175,9 +225,13 @@ function loadTab(tabID) { document.getElementById("main").innerHTML = this.responseText; cave.transition_end(); checkForUpdates(); + onPageLoad(); + } + else if(this.readyState === 4) { + cave.error_callFreeErrorViewer(5983000 + this.status, 'Load Error: "' + this.statusText + '"\nPlease send code to Jemma on Discord with what you were doing ' + this.readyState); } }; - xhttp.open("GET", "/" + pageID + "?ajax=true", true); + xhttp.open("GET", "/" + pageID, true); xhttp.send(); } function searchCommunities(searchBox) { @@ -190,14 +244,14 @@ function checkForUpdates() { xhttp.onreadystatechange = function() { if (this.readyState === 4 && this.status === 200) { var notificationObj = JSON.parse(this.responseText); - var notificationCount = notificationObj.notifications.length + notificationObj.messages.length; + var notificationCount = notificationObj.news + notificationObj.messages; /*Check for Notifications*/ if(document.getElementById("messages-banner-badge")) { - if(notificationObj.messages.length > 0 && notificationObj.messages.length < 99) { - document.getElementById("messages-banner-badge").innerHTML = notificationObj.messages.length; + if(notificationObj.messages > 0 && notificationObj.messages < 99) { + document.getElementById("messages-banner-badge").innerHTML = notificationObj.messages; document.getElementById("messages-banner-badge").style.display = "block"; } - else if(notificationObj.messages.length >= 99) { + else if(notificationObj.messages >= 99) { document.getElementById("messages-banner-badge").innerHTML = "99+"; document.getElementById("messages-banner-badge").style.display = "block"; } @@ -230,4 +284,190 @@ function storeScrollPosition() { } function restoreLastScrollPosition() { cave.brw_scrollImmediately(0, scrollPosition); +} +function followCommunity(communityWrapper) { + var community = document.getElementsByClassName('community-page-follow-button-text')[0]; + if (communityWrapper.className.indexOf('selected') !== -1) { + communityWrapper.className = 'community-page-follow-button'; + community.style.color = '#1F8A42'; + var params = "communityID=" + communityWrapper.id + "&type=false"; + var xhttp = new XMLHttpRequest(); + xhttp.open("POST", '/communities/follow', true); + xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + xhttp.send(params); + community.innerHTML = 'Follow'; + cave.snd_playSe('SE_OLV_CHECKBOX_UNCHECK'); + } + else { + var params = "communityID=" + communityWrapper.id + "&type=true"; + var xhttp = new XMLHttpRequest(); + xhttp.open("POST", '/communities/follow', true); + xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + + xhttp.onreadystatechange = function() { + if (this.readyState === 4 && this.status === 200) { + communityWrapper.className = 'community-page-follow-button selected'; + community.style.color = 'white'; + community.innerHTML = 'Following'; + cave.snd_playSe('SE_OLV_CHECKBOX_CHECK'); + } + if (this.readyState === 4 && this.status === 423) { + cave.error_callFreeErrorViewer(5980002, "An error has occurred.\n\nPlease try again later.\n\nIf the problem persists, please make a \nnote of the error code and visit invite.gg/pretendo") + } + } + + + xhttp.send(params); + + + } +} +function yeah(postNode, postID) { + var yeahCountElement = document.getElementById('yeah-' + postID); + var yeahcount = yeahCountElement.innerHTML.replace(' Yeahs', ''); + if (postNode.className.indexOf("selected") !== -1) { + postNode.className = "community-page-post-yeah-button-wrapper"; + var params = "postID=" + postID + "&type=down"; + var xhr = new XMLHttpRequest(); + xhr.open("POST", '/posts/empathy', true); + xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + xhr.send(params); + yeahCountElement.innerHTML = --yeahcount + ' Yeahs'; + cave.snd_playSe('SE_OLV_CANCEL'); + } + else { + postNode.className += " selected"; + + var params = "postID=" + postID + "&type=up"; + var xhttp = new XMLHttpRequest(); + xhttp.open("POST", '/posts/empathy', true); + xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + + xhttp.onreadystatechange = function() { + if (this.readyState === 4 && this.status === 200) { + yeahCountElement.innerHTML = ++yeahcount + ' Yeahs'; + cave.snd_playSe('SE_OLV_MII_ADD'); + } + if (this.readyState === 4 && this.status === 423) { + yeahCountElement.innerHTML = ++yeahcount + ' Yeahs'; + cave.snd_playSe('SE_OLV_MII_ADD'); + } + } + xhttp.send(params); + + } +} +function loadPosts(type) { + cave.transition_begin(); + document.getElementById('recent-tab').className = 'community-page-posts-header-tab'; + document.getElementById('popular-tab').className = 'community-page-posts-header-tab'; + document.getElementById('verified-tab').className = 'community-page-posts-header-tab'; + //0 recent : 1 popular : 2 verified + switch (type) { + case 0: + document.getElementById("recent-tab").className +=' active'; + type = 'new'; + break; + case 1: + document.getElementById("popular-tab").className +=' active'; + type = 'popular'; + break; + case 2: + document.getElementById("verified-tab").className +=' active'; + type = 'verified'; + break; + } + var id = document.getElementsByClassName('community-page-follow-button')[0].id + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState === 4 && this.status === 200) { + document.getElementById('community-posts-inner-body').innerHTML = this.responseText; + cave.transition_end(); + initCommunityUsers(); + } + else if(this.readyState === 4 && this.status === 204) + { + document.getElementById('community-posts-inner-body').innerHTML = '

No Posts

'; + cave.transition_end(); + } + else if (this.readyState === 4){ + cave.transition_end(); + cave.error_callFreeErrorViewer(5983000 + this.status, 'Error: "' + this.statusText + '"\nPlease send code to Jemma on Discord with what you were doing'); + } + }; + xhttp.open("GET", '/communities/' + id + '/' + type + '/loadposts', true); + xhttp.send(); + + cave.snd_playSe("SE_OLV_OK"); + cave.transition_end(); +} +function loadUserPosts() { + cave.transition_begin(); + var id = document.getElementsByClassName('post-user-info-wrapper')[document.getElementsByClassName('post-user-info-wrapper').length - 1].id + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState === 4 && this.status === 200) { + document.getElementsByClassName('community-page-posts-wrapper')[0].innerHTML += this.responseText; + } + else if(this.readyState === 4 && this.status === 204) + { + document.getElementById('load-more-posts-button').style.display = 'none'; + } + else if (this.readyState === 4){ + cave.error_callFreeErrorViewer(5983000 + this.status, 'Error: "' + this.statusText + '"\nPlease send code to Jemma on Discord with what you were doing'); + } + }; + xhttp.open("GET", "/users/loadPosts" + '?postID=' + id, true); + xhttp.send(); + + cave.snd_playSe("SE_OLV_OK"); + cave.transition_end(); +} +function loadCommunityPosts() { + cave.transition_begin(); + var postID = document.getElementsByClassName('post-user-info-wrapper')[document.getElementsByClassName('post-user-info-wrapper').length - 1].id + var id = document.getElementsByClassName('community-page-follow-button')[0].id + var xhttp = new XMLHttpRequest(); + var type = 'null'; + if(document.getElementById('recent-tab').className.indexOf('active') !== -1) + type = 'new'; + else if(document.getElementById('popular-tab').className.indexOf('active') !== -1) + type = 'popular'; + else if(document.getElementById('verified-tab').className.indexOf('active') !== -1) + type = 'verified'; + xhttp.onreadystatechange = function() { + if (this.readyState === 4 && this.status === 200) { + document.getElementsByClassName('community-page-posts-wrapper')[0].innerHTML += this.responseText; + initCommunityUsers(); + } + else if(this.readyState === 4 && this.status === 204) + { + document.getElementById('load-more-posts-button').style.display = 'none'; + } + else if (this.readyState === 4){ + cave.error_callFreeErrorViewer(5983000 + this.status, 'Error: "' + this.statusText + '"\nPlease send code to Jemma on Discord with what you were doing'); + } + }; + xhttp.open("GET", '/communities/' + id + '/' + type + '/loadposts?postID=' + postID, true); + xhttp.send(); + + cave.snd_playSe("SE_OLV_OK"); + cave.transition_end(); +} +function newPainting(reset) { + if(reset) + cave.memo_clear() + cave.memo_open(); + if(cave.memo_hasValidImage()) { + document.getElementById('memo').src = 'data:image/png;base64,' + cave.memo_getImageBmp(); + document.getElementById('memo').style.display = ''; + document.getElementById('memo-value').value = cave.memo_getImageZipTga(); + } +} +function loadScreenshots() { + var dropdown = document.getElementsByClassName('post-screenshot-picker-dropdown')[0]; + if(dropdown.style.display === 'block') + dropdown.style.display = 'none'; + else + dropdown.style.display = 'block'; } \ No newline at end of file diff --git a/src/webfiles/ctr/js/pjax.js b/src/webfiles/ctr/js/pjax.js new file mode 100644 index 0000000..d942949 --- /dev/null +++ b/src/webfiles/ctr/js/pjax.js @@ -0,0 +1,57 @@ +/* pjax CTR + Written By: Jemma + */ +var hist = [window.location]; + +window.pjax = { + loadUrl: function(url) { + cave.transition_begin(); + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState === 4 && this.status === 200) { + hist.push(url); + document.getElementById("main").innerHTML = this.responseText; + cave.transition_end(); + onPageLoad(); + } + else if(this.readyState === 4) { + cave.error_callFreeErrorViewer(5983000 + this.status, 'Error: "' + this.statusText + '"\nPlease send code to Jemma on Discord with what you were doing ' + this.readyState); + cave.transition_end(); + } + }; + xhttp.open("GET", url, true); + xhttp.send(); + }, + back: function() { + if(!this.canGoBack()) + return; + cave.transition_begin(); + hist.pop(); + var url = hist[hist.length - 1] + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState === 4 && this.status === 200) { + document.getElementById("main").innerHTML = this.responseText; + cave.transition_end(); + onPageLoad(); + } + else if(this.readyState === 4) { + cave.error_callFreeErrorViewer(5983000 + this.status, 'Error: "' + this.statusText + '"\nPlease send code to Jemma on Discord with what you were doing ' + this.readyState); + cave.transition_end(); + } + }; + xhttp.open("GET", url, true); + xhttp.send(); + }, + canGoBack: function () { + //alert(hist.length); + if(hist.length <= 1) { + cave.toolbar_setButtonType(0); + return false; + } + else { + cave.toolbar_setButtonType(1); + return true; + } + } +}; \ No newline at end of file diff --git a/src/webfiles/ctr/more_posts.ejs b/src/webfiles/ctr/more_posts.ejs new file mode 100644 index 0000000..1bb6236 --- /dev/null +++ b/src/webfiles/ctr/more_posts.ejs @@ -0,0 +1,38 @@ +<% newPosts.forEach(function(post) { %> + +
+ <% if(post.body !== '' && post.painting === '' && post.screenshot === '' && !post.url) { %> +

<%= post.body %>

+ <%} else { %> + <% if(post.screenshot !== '') { %> + + <%}%> + <% if(post.painting !== '') { %> + + <%}%> + <% if(post.url) { %> +

Video Playback is not yet supported on the 3DS

+ <%}%> + <% if(post.body) { %> +
+

<%= post.body %>

+
+ <%}%> + <%}%> +
+<% }); %> \ No newline at end of file diff --git a/src/webfiles/ctr/user_menu.ejs b/src/webfiles/ctr/user_menu.ejs new file mode 100644 index 0000000..93b29a5 --- /dev/null +++ b/src/webfiles/ctr/user_menu.ejs @@ -0,0 +1,53 @@ + + + + + 3DS Testing + + + + + +
+
+
+

+ Here you can change your profile and settings. You can also search for other users here. +

+
+
+

User Menu

+
+
+ +
+
+
+ + + \ No newline at end of file diff --git a/src/webfiles/ctr/user_page.ejs b/src/webfiles/ctr/user_page.ejs new file mode 100644 index 0000000..45bbc62 --- /dev/null +++ b/src/webfiles/ctr/user_page.ejs @@ -0,0 +1,79 @@ + + + + + 3DS Testing + + + + + +
+
+
+

+ +

+
+
+

<%= user.user_id %>

+
+
+ <%if(user.profile_comment_visibility && user.profile_comment){%> + + <%}%> + + + + + + + + + + + +
+
+

Country

+

<%if(user.country_visibility){%><%=user.country%><%}else {%>Private<%}%>

+
+
+
+

Birthday

+

<%if(user.birthday_visibility){%>N/A<%}else {%>Private<%}%>

+
+
+
+

Game experience

+

+ <%if(user.game_skill === 0) {%> + Beginner + <%} else if(user.game_skill === 1) {%> + Intermediate + <%} else if(user.game_skill === 2) {%> + Expert + <%} else {%> + N/A + <%}%> +

+
+
+
+

Yeahs

+

N/A

+
+
+ +
+

New Communities

+
+
+
+ + + \ No newline at end of file diff --git a/src/webfiles/portal/community.ejs b/src/webfiles/portal/community.ejs index ad1df2c..a3abed1 100644 --- a/src/webfiles/portal/community.ejs +++ b/src/webfiles/portal/community.ejs @@ -226,7 +226,7 @@ <%}%> <% if(post.url) { %> - +

Video Playback is not yet supported on the 3DS

<%}%> <% if(post.body) { %>
diff --git a/src/webfiles/portal/css/juxt.css b/src/webfiles/portal/css/juxt.css index 361f664..588ca1a 100644 --- a/src/webfiles/portal/css/juxt.css +++ b/src/webfiles/portal/css/juxt.css @@ -71,7 +71,7 @@ ul, ol, menu, li { display: none; } -#nav-bar span { +#nav-bar span { display: block; margin-top: 5px; } @@ -1283,9 +1283,6 @@ iframe { width: 940px; height: 640px; margin: 40px 190px; - /*background-color: rgba(255,255,255,1); - border: 1.5px solid #d6d2d2; - border-radius: 10px;*/ } .about-header { diff --git a/src/webfiles/portal/js/juxt.js b/src/webfiles/portal/js/juxt.js index bdc56a4..7f186ef 100644 --- a/src/webfiles/portal/js/juxt.js +++ b/src/webfiles/portal/js/juxt.js @@ -724,12 +724,12 @@ var bButtonCheck = setInterval(function() { }, 250); /*Debugging*/ if (typeof wiiu === 'undefined') { - window.gamepad = { - update: function () { - return true; - }, - hold: function () { - return 0; + window.wiiu = { + gamepad: { + update: function () { + return true; + }, + hold: 0 } }; } diff --git a/src/webfiles/portal/user_page.ejs b/src/webfiles/portal/user_page.ejs index 0934584..f495cf7 100644 --- a/src/webfiles/portal/user_page.ejs +++ b/src/webfiles/portal/user_page.ejs @@ -50,13 +50,13 @@

Country

-

N/A

+

<%if(user.country_visibility){%><%=user.country%><%}else {%>Private<%}%>

Birthday

-

N/A

+

<%if(user.birthday_visibility){%>N/A<%}else {%>Private<%}%>