From 2067b44610043f6c27ee352c8591ffe88fc25d19 Mon Sep 17 00:00:00 2001 From: Sendou Date: Sat, 14 Dec 2019 23:19:39 +0200 Subject: [PATCH] free agent feature done --- index.js | 8 + package-lock.json | 31 ++- package.json | 9 +- react-ui/package-lock.json | 146 ++++++----- react-ui/package.json | 2 +- .../components/common/TextAreaWithLimit.js | 5 +- .../src/components/common/WeaponDropdown.js | 6 +- .../src/components/freeagents/FAPostForm.js | 7 +- .../components/freeagents/FreeAgentBrowser.js | 232 ++++++++++++----- react-ui/src/utils/lists.js | 242 ++++++++++++++++++ schemas/fapost.js | 8 + scripts/matches.py | 1 + utils/webhook.js | 57 +++++ 13 files changed, 603 insertions(+), 151 deletions(-) create mode 100644 utils/webhook.js diff --git a/index.js b/index.js index 756cacdb0..5a9ff295c 100644 --- a/index.js +++ b/index.js @@ -95,6 +95,14 @@ const server = new ApolloServer({ twitch_name: "sendou", twitter_name: "sendouc", username: "Sendou", + weapons: [ + "Tenta Brella", + "Range Blaster", + "Kensa Sloshing Machine", + "Custom Blaster", + ], + country: "fi", + top500: true, }, } } diff --git a/package-lock.json b/package-lock.json index f235bb64e..63a941be6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1556,9 +1556,9 @@ } }, "mongoose": { - "version": "5.7.14", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.7.14.tgz", - "integrity": "sha512-fF+7+7Xl856VQRwRl1/pc/sL3eblWnaYO1K0Yp3d7v+53e5dMJDg3b1Iz61Fk1PBbJF2Z39yGyxakj59lLoj0w==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.8.1.tgz", + "integrity": "sha512-8Cffl52cMK2iBlpLipoRKW/RdrhkxvVzXsy+xVsfbKHQBCWkFiS0T0jU4smYzomTMP4gW0sReJoRA7Gu/7VVgQ==", "requires": { "bson": "~1.1.1", "kareem": "2.3.1", @@ -1647,9 +1647,9 @@ "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, "nodemon": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.1.tgz", - "integrity": "sha512-UC6FVhNLXjbbV4UzaXA3wUdbEkUZzLGgMGzmxvWAex5nzib/jhcSHVFlQODdbuUHq8SnnZ4/EABBAbC3RplvPg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.2.tgz", + "integrity": "sha512-GWhYPMfde2+M0FsHnggIHXTqPDHXia32HRhh6H0d75Mt9FKUoCBvumNHr7LdrpPBTKxsWmIEOjoN+P4IU6Hcaw==", "dev": true, "requires": { "chokidar": "^3.2.2", @@ -1776,9 +1776,9 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "passport": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.4.0.tgz", - "integrity": "sha1-xQlWkTR71a07XhgCOMORTRbwWBE=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.4.1.tgz", + "integrity": "sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg==", "requires": { "passport-strategy": "1.x.x", "pause": "0.0.1" @@ -2095,6 +2095,11 @@ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" }, + "snekfetch": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz", + "integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw==" + }, "sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -2352,6 +2357,14 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "webhook-discord": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/webhook-discord/-/webhook-discord-3.5.1.tgz", + "integrity": "sha512-kktwGzj9e/v7aBhtb9rN1ZZY0EADxQFX7a1p2v9tatrBBS21oh/xiKzDd3fk/NdxdSQ0eIErrL2bHbMfunJspA==", + "requires": { + "snekfetch": "^3.6.4" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/package.json b/package.json index c7acfc159..76baf75d2 100644 --- a/package.json +++ b/package.json @@ -22,13 +22,14 @@ "express-session": "^1.17.0", "graphql": "^14.5.8", "lodash": "^4.17.15", - "mongoose": "^5.7.14", + "mongoose": "^5.8.1", "mongoose-unique-validator": "^2.0.3", "node-fetch": "^2.6.0", - "passport": "^0.4.0", - "passport-discord": "^0.1.3" + "passport": "^0.4.1", + "passport-discord": "^0.1.3", + "webhook-discord": "^3.5.1" }, "devDependencies": { - "nodemon": "^2.0.0" + "nodemon": "^2.0.2" } } diff --git a/react-ui/package-lock.json b/react-ui/package-lock.json index f714bdde9..1f26f856f 100644 --- a/react-ui/package-lock.json +++ b/react-ui/package-lock.json @@ -1915,54 +1915,54 @@ } }, "apollo-boost": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.4.tgz", - "integrity": "sha512-ASngBvazmp9xNxXfJ2InAzfDwz65o4lswlEPrWoN35scXmCz8Nz4k3CboUXbrcN/G0IExkRf/W7o9Rg0cjEBqg==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.7.tgz", + "integrity": "sha512-jfc3aqO0vpCV+W662EOG5gq4AH94yIsvSgAUuDvS3o/Z+8Joqn4zGC9CgLCDHusK30mFgtsEgwEe0pZoedohsQ==", "requires": { - "apollo-cache": "^1.3.2", - "apollo-cache-inmemory": "^1.6.3", - "apollo-client": "^2.6.4", + "apollo-cache": "^1.3.4", + "apollo-cache-inmemory": "^1.6.5", + "apollo-client": "^2.6.7", "apollo-link": "^1.0.6", "apollo-link-error": "^1.0.3", "apollo-link-http": "^1.3.1", "graphql-tag": "^2.4.2", "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" + "tslib": "^1.10.0" } }, "apollo-cache": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.2.tgz", - "integrity": "sha512-+KA685AV5ETEJfjZuviRTEImGA11uNBp/MJGnaCvkgr+BYRrGLruVKBv6WvyFod27WEB2sp7SsG8cNBKANhGLg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.4.tgz", + "integrity": "sha512-7X5aGbqaOWYG+SSkCzJNHTz2ZKDcyRwtmvW4mGVLRqdQs+HxfXS4dUS2CcwrAj449se6tZ6NLUMnjko4KMt3KA==", "requires": { - "apollo-utilities": "^1.3.2", - "tslib": "^1.9.3" + "apollo-utilities": "^1.3.3", + "tslib": "^1.10.0" } }, "apollo-cache-inmemory": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.3.tgz", - "integrity": "sha512-S4B/zQNSuYc0M/1Wq8dJDTIO9yRgU0ZwDGnmlqxGGmFombOZb9mLjylewSfQKmjNpciZ7iUIBbJ0mHlPJTzdXg==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.5.tgz", + "integrity": "sha512-koB76JUDJaycfejHmrXBbWIN9pRKM0Z9CJGQcBzIOtmte1JhEBSuzsOUu7NQgiXKYI4iGoMREcnaWffsosZynA==", "requires": { - "apollo-cache": "^1.3.2", - "apollo-utilities": "^1.3.2", + "apollo-cache": "^1.3.4", + "apollo-utilities": "^1.3.3", "optimism": "^0.10.0", "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" + "tslib": "^1.10.0" } }, "apollo-client": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.4.tgz", - "integrity": "sha512-oWOwEOxQ9neHHVZrQhHDbI6bIibp9SHgxaLRVPoGvOFy7OH5XUykZE7hBQAVxq99tQjBzgytaZffQkeWo1B4VQ==", + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.8.tgz", + "integrity": "sha512-0zvJtAcONiozpa5z5zgou83iEKkBaXhhSSXJebFHRXs100SecDojyUWKjwTtBPn9HbM6o5xrvC5mo9VQ5fgAjw==", "requires": { "@types/zen-observable": "^0.8.0", - "apollo-cache": "1.3.2", + "apollo-cache": "1.3.4", "apollo-link": "^1.0.0", - "apollo-utilities": "1.3.2", + "apollo-utilities": "1.3.3", "symbol-observable": "^1.0.2", "ts-invariant": "^0.4.0", - "tslib": "^1.9.3", + "tslib": "^1.10.0", "zen-observable": "^0.8.0" } }, @@ -2008,14 +2008,14 @@ } }, "apollo-utilities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.2.tgz", - "integrity": "sha512-JWNHj8XChz7S4OZghV6yc9FNnzEXj285QYp/nLNh943iObycI5GTDO3NGR9Dth12LRrSFMeDOConPfPln+WGfg==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.3.tgz", + "integrity": "sha512-F14aX2R/fKNYMvhuP2t9GD9fggID7zp5I96MF5QeKYWDWTrkRdHRp4+SVfXUVN+cXOaB/IebfvRtzPf25CM0zw==", "requires": { "@wry/equality": "^0.1.2", "fast-json-stable-stringify": "^2.0.0", "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" + "tslib": "^1.10.0" } }, "aproba": { @@ -2601,11 +2601,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", @@ -8837,23 +8832,6 @@ "minipass": "^3.0.0" } }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -12763,9 +12741,9 @@ } }, "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, "strict-uri-encode": { "version": "1.1.0", @@ -13755,6 +13733,30 @@ "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" + }, + "dependencies": { + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + } } }, "eslint-scope": { @@ -13777,9 +13779,9 @@ } }, "serialize-javascript": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", - "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" }, "source-map": { "version": "0.6.1", @@ -13795,19 +13797,29 @@ } }, "terser-webpack-plugin": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", - "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", + "serialize-javascript": "^2.1.2", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" + }, + "dependencies": { + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + } } } } @@ -14306,14 +14318,6 @@ "workbox-core": "^4.3.1" } }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "requires": { - "errno": "~0.1.7" - } - }, "worker-rpc": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", @@ -14477,9 +14481,9 @@ } }, "zen-observable": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.14.tgz", - "integrity": "sha512-kQz39uonEjEESwh+qCi83kcC3rZJGh4mrZW7xjkSQYXkq//JZHTtKo+6yuVloTgMtzsIWOJrjIrKvk/dqm0L5g==" + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" }, "zen-observable-ts": { "version": "0.8.20", diff --git a/react-ui/package.json b/react-ui/package.json index 0b12e0273..a0871c3ae 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -5,7 +5,7 @@ "dependencies": { "@apollo/react-hooks": "^3.1.3", "@sendou/react-sketch": "^0.5.2", - "apollo-boost": "^0.4.4", + "apollo-boost": "^0.4.7", "graphql": "^14.5.8", "jstz": "^2.1.1", "react": "^16.12.0", diff --git a/react-ui/src/components/common/TextAreaWithLimit.js b/react-ui/src/components/common/TextAreaWithLimit.js index 1ed0d03ab..dc7a7eebe 100644 --- a/react-ui/src/components/common/TextAreaWithLimit.js +++ b/react-ui/src/components/common/TextAreaWithLimit.js @@ -2,17 +2,18 @@ import React from "react" import { TextArea } from "semantic-ui-react" const TextAreaWithLimit = ({ value, setValue, limit, style = {} }) => { + const inputLength = value ? value.length : 0 return ( <>