- {settings ? settings.app_name : null} Help Queue
- Presented by: {settings ? settings.app_creator : null}
+ Blueprint 2022 Help Queue
+ Presented by: HackMIT
The easy to use help queue system!
{isMentor ? (
diff --git a/client/src/components/QueueMentor.css b/client/src/components/QueueMentor.css
new file mode 100644
index 0000000..ea64062
--- /dev/null
+++ b/client/src/components/QueueMentor.css
@@ -0,0 +1,7 @@
+#claim-buttons {
+ text-align: left;
+}
+
+#claim-buttons > * {
+ width: 50%;
+}
diff --git a/client/src/components/QueueMentor.tsx b/client/src/components/QueueMentor.tsx
index 1d2cf1f..7dc13d8 100644
--- a/client/src/components/QueueMentor.tsx
+++ b/client/src/components/QueueMentor.tsx
@@ -8,6 +8,7 @@ import { Row, Col, Badge } from "reactstrap";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faStar } from "@fortawesome/free-solid-svg-icons";
import useViewer from "../hooks/useViewer";
+import "./QueueMentor.css";
const QueueMentor = () => {
const { getCredentials } = useLogin();
@@ -18,11 +19,12 @@ const QueueMentor = () => {
const [queueLength, setQueueLength] = useState(0);
const locationOptions = [
{ key: "", value: "no location", text: "No filter" },
- ].concat(
- ((settings && settings.locations) || "no location")
- .split(",")
- .map((l) => ({ key: l, value: l, text: l }))
- );
+ ];
+ // .concat([{ key: "Virtual", value: "Virtual", text: "Virtual" }]).concat(
+ // ((settings && settings.locations) || "no location")
+ // .split(",")
+ // .map((l) => ({ key: l, value: l, text: l }))
+ // );
const [filteredTickets, setFilteredTickets] = useState([]);
const [searchValue, setSearchValue] = useState("no location");
@@ -95,6 +97,7 @@ const QueueMentor = () => {
const res = await ServerHelper.post(ServerURL.claimTicket, {
...getCredentials(),
ticket_id: ticket.id,
+ claim_location: "virtual",
});
if (res.success) {
setTicket(res.ticket);
@@ -107,6 +110,67 @@ const QueueMentor = () => {
>
Claim
+ {/* {(ticket.data.location == "Virtual") ?
+
+ :
+
+
+
+
+
+
+ } */}
);
});
@@ -121,8 +185,8 @@ const QueueMentor = () => {
Question: {ticket.data.question}
- Location: {ticket.data.location}
-
+ {/* Location: {ticket.data.location}
+
*/}
Contact: {ticket.data.contact}
@@ -171,6 +235,7 @@ const QueueMentor = () => {
>
);
}
+
return (
@@ -178,11 +243,11 @@ const QueueMentor = () => {
Mentor Queue
Queue length: {queueLength}
-
diff --git a/client/src/components/QueueRequest.tsx b/client/src/components/QueueRequest.tsx
index ad8bfcf..c4e4318 100644
--- a/client/src/components/QueueRequest.tsx
+++ b/client/src/components/QueueRequest.tsx
@@ -31,12 +31,16 @@ const QueueRequest = () => {
const [cTicketQuestion, setCTicketQuestion] = useState("");
const [cTicketContact, setCTicketContact] = useState("");
const [cTicketRating, setCTicketRating] = useState(0);
- const locationOptions = ((settings && settings.locations) || "no location")
- .split(",")
- .map((l) => ({ key: l, value: l, text: l }));
+ // const locationOptions = ((settings && settings.locations) || "no location")
+ // .split(",")
+ // .map((l) => ({ key: l, value: l, text: l }));
+ const locationOptions = Array.from(Array(80).keys()).map(n => ({ key: "Table " + n, value: "Table " + n, text: "Table " + n }))
const [cTicketLocation, setCTicketLocation] = useState(
locationOptions[0].value
);
+ const [cLocation, setCLocation] = useState(
+ "Virtual"
+ );
const [canMakeNotification, setCanMakeNotification] = useState(false);
const getTicket = useCallback(async () => {
@@ -149,14 +153,32 @@ const QueueRequest = () => {
onChange={(e) => setCTicketQuestion(e.currentTarget.value)}
/>
-
-
+ {/*
+
+
+ { (cLocation == "In Person") &&
+
+
+
+ } */}
+ {/*
+
+ */}
{
...getCredentials(),
data: JSON.stringify({
question: cTicketQuestion,
- location: cTicketLocation,
+ // location: cLocation == "Virtual" ? "Virtual" : cTicketLocation,
contact: cTicketContact.length === 0 ? "N/A" : cTicketContact,
}),
});
@@ -219,8 +241,8 @@ const QueueRequest = () => {
Question: {ticket.data.question}
- Location: {ticket.data.location}
-
+ {/* Location: {ticket.data.location}
+
*/}
Contact: {ticket.data.contact}
@@ -245,6 +267,9 @@ const QueueRequest = () => {
Claimed by: {ticket.claimed_by}
+
+ Please join your mentor at the provided jitsi video link.
+
{settings &&
settings.jitsi_link &&
diff --git a/client/src/components/Types.tsx b/client/src/components/Types.tsx
index 3d95f1f..f307b96 100644
--- a/client/src/components/Types.tsx
+++ b/client/src/components/Types.tsx
@@ -10,6 +10,7 @@ export type Ticket = {
requested_by: string;
claimed_by: string | null;
minutes: number;
+ claim_location: string
};
export type AdminStats = {
diff --git a/client/src/index.css b/client/src/index.css
index 2d60149..100d903 100644
--- a/client/src/index.css
+++ b/client/src/index.css
@@ -47,4 +47,8 @@ code {
#CreateTicket{
background-color: #146fc1;
color: white;
+}
+
+.claim-buttons {
+ display: flex;
}
\ No newline at end of file
diff --git a/migrations/versions/4408c3611fae_.py b/migrations/versions/4408c3611fae_.py
new file mode 100644
index 0000000..ca3b828
--- /dev/null
+++ b/migrations/versions/4408c3611fae_.py
@@ -0,0 +1,28 @@
+"""empty message
+
+Revision ID: 4408c3611fae
+Revises: fdafd4c51ead
+Create Date: 2021-09-14 03:57:36.637802
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '4408c3611fae'
+down_revision = 'fdafd4c51ead'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('tickets', 'jitsi_uuid')
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('tickets', sa.Column('jitsi_uuid', sa.VARCHAR(), autoincrement=False, nullable=True))
+ # ### end Alembic commands ###
diff --git a/migrations/versions/fdafd4c51ead_.py b/migrations/versions/fdafd4c51ead_.py
new file mode 100644
index 0000000..0ceff38
--- /dev/null
+++ b/migrations/versions/fdafd4c51ead_.py
@@ -0,0 +1,30 @@
+"""empty message
+
+Revision ID: fdafd4c51ead
+Revises: 653093fddc44
+Create Date: 2021-09-14 03:10:13.521278
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = 'fdafd4c51ead'
+down_revision = '653093fddc44'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('tickets', sa.Column('claim_location', sa.String(), nullable=True))
+ op.add_column('tickets', sa.Column('jitsi_uuid', sa.String(), nullable=True))
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('tickets', 'jitsi_uuid')
+ op.drop_column('tickets', 'claim_location')
+ # ### end Alembic commands ###
diff --git a/package.json b/package.json
index 60dc18b..76b67c3 100644
--- a/package.json
+++ b/package.json
@@ -16,5 +16,8 @@
"prod-server": "gunicorn -b 127.0.0.1:5000 --reload run_server:app",
"dev": "concurrently -r -k \"yarn start >/dev/null 2>/dev/null\" \"npm run dev-server\"",
"prod": "concurrently --kill-others \"yarn start\" \"npm run prod-server\""
+ },
+ "devDependencies": {
+ "ws": "3.3.2"
}
-}
\ No newline at end of file
+}
diff --git a/prebuild.py b/prebuild.py
index cdda53c..5d73ea6 100644
--- a/prebuild.py
+++ b/prebuild.py
@@ -8,26 +8,29 @@
if not path.exists(".env"):
print("******* Post build sync started *********")
- f = open(".env", "w")
- for key in os.environ:
- f.write(f"{key}=\"{os.environ[key]}\"\n")
+ # f = open(".env", "w")
+ # for key in os.environ:
+ # f.write(f"{key}=\"{os.environ[key]}\"\n")
- if('GSHEETS_AUTH64' in os.environ):
- print("Copying over GSHEETS_AUTH64 as well")
- f = open("service_account.json", "wb")
- f.write(base64.b64decode(os.environ['GSHEETS_AUTH64']))
- f.close()
+ # if('GSHEETS_AUTH64' in os.environ):
+ # print("Copying over GSHEETS_AUTH64 as well")
+ # f = open("service_account.json", "wb")
+ # f.write(base64.b64decode(os.environ['GSHEETS_AUTH64']))
+ # f.close()
else:
print("******* WARNING *********")
print("******* Heroku Post Build is current disabled *********")
from server.controllers.settings import *
+print("******* setting settings *********")
+set_setting(None, SETTING_MENTOR_PASSWORD, "cowsgomoo", override=True)
for setting in ALLDEFAULTSETTINGS:
if (get_setting(None,setting, True) is None):
- set_setting(None, setting, "CHANGE ME", override=True)
+ set_setting(None, setting, "HackMIT2021", override=True)
if (get_setting(None, SETTING_OFFICIAL_MESSAGE, True) is None):
set_setting(None, SETTING_OFFICIAL_MESSAGE, "", override=True)
if (get_setting(None, SETTING_QUEUE_ON, True) is None):
- set_setting(None, SETTING_QUEUE_ON, True, override=True)
\ No newline at end of file
+ set_setting(None, SETTING_QUEUE_ON, True, override=True)
+
diff --git a/requirements.txt b/requirements.txt
index 247c6eb..9ae36d6 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -24,7 +24,6 @@ Mako==1.1.0
MarkupSafe==1.1.1
mccabe==0.6.1
oauth2client==4.1.3
-psycopg2==2.8.3
psycopg2-binary==2.8.3
pyasn1==0.4.6
pyasn1-modules==0.2.6
diff --git a/runtime.txt b/runtime.txt
new file mode 100644
index 0000000..d9a16ae
--- /dev/null
+++ b/runtime.txt
@@ -0,0 +1 @@
+python-3.8.12
diff --git a/server/__init__.py b/server/__init__.py
index a51bb73..28fea0a 100644
--- a/server/__init__.py
+++ b/server/__init__.py
@@ -23,9 +23,13 @@
try:
if "MASTER_EMAIL" in os.environ:
set_setting(None, SETTING_MASTER_USER, os.environ["MASTER_EMAIL"], override=True)
+ if os.getenv("MASTER_EMAIL") is not None:
+ set_setting(None, SETTING_MASTER_USER, os.getenv("MASTER_EMAIL"), override=True)
if "REACT_APP_SITEURL" in os.environ:
app.config["REACT_APP_SITEURL"] = os.environ["REACT_APP_SITEURL"]
+ if os.getenv("REACT_APP_SITEURL") is not None:
+ app.config["REACT_APP_SITEURL"] = os.getenv("REACT_APP_SITEURL")
set_setting(None, SETTING_URL, app.config["REACT_APP_SITEURL"], override=True)
except:
diff --git a/server/api/v1/api_tickets.py b/server/api/v1/api_tickets.py
index 105fc71..efb844b 100644
--- a/server/api/v1/api_tickets.py
+++ b/server/api/v1/api_tickets.py
@@ -23,9 +23,10 @@ def post(self, data, user):
TICKET_PARSER = reqparse.RequestParser(bundle_errors=True)
-TICKET_PARSER.add_argument('ticket_id',
+TICKET_PARSER.add_argument('ticket_id', 'claim_location',
help='Need ticket',
required=True)
+TICKET_PARSER.add_argument('claim_location')
class TicketClaim(Resource):
@@ -37,7 +38,7 @@ def post(self, data, user):
ticket = get_ticket(data["ticket_id"])
if ticket is None:
return return_failure("ticket not found")
- if claim_ticket(user, ticket):
+ if claim_ticket(user, ticket, data["claim_location"]):
return return_success({'ticket': ticket.json()})
return return_failure("could not claim ticket")
diff --git a/server/app.py b/server/app.py
index d79ab51..8c2573a 100644
--- a/server/app.py
+++ b/server/app.py
@@ -9,6 +9,12 @@
app.config["SQLALCHEMY_DATABASE_URI"] = os.environ["SQLALCHEMY_DATABASE_URI"]
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
+#windows
+if os.getenv("SQLALCHEMY_DATABASE_URI") is not None:
+ app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("SQLALCHEMY_DATABASE_URI")
+ app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
+
+
# For heroku launching
if "DATABASE_URL" in os.environ:
app.config["SQLALCHEMY_DATABASE_URI"] = os.environ["DATABASE_URL"]
@@ -16,6 +22,10 @@
if "PORT" in os.environ:
app.config["PORT"] = os.environ["PORT"]
+
+#windows
+if os.getenv("PORT") is not None:
+ app.config["PORT"] = os.getenv("PORT")
# Database (uncomment if needed)
db = SQLAlchemy(app)
diff --git a/server/controllers/tickets.py b/server/controllers/tickets.py
index ae20c46..89b5bc3 100644
--- a/server/controllers/tickets.py
+++ b/server/controllers/tickets.py
@@ -59,7 +59,7 @@ def create_ticket(user, data):
return ticket
-def claim_ticket(user, ticket):
+def claim_ticket(user, ticket, claim_location):
"""
returns true if successful
"""
@@ -75,6 +75,7 @@ def claim_ticket(user, ticket):
ticket.claimant = user
ticket.date_updated = now
ticket.status = 1
+ ticket.claim_location = claim_location
db.session.commit()
return True
return False
diff --git a/server/controllers/users.py b/server/controllers/users.py
index 662e635..1d40ea9 100644
--- a/server/controllers/users.py
+++ b/server/controllers/users.py
@@ -9,7 +9,7 @@
from server.cache import should_cache_function
def laplaceSmooth(totalRating, totalRatings):
- alpha = 6
+ alpha = 6 # was 6
beta = 2
return ((totalRating + alpha)/(totalRatings + beta))
@@ -18,6 +18,7 @@ def laplaceSmooth(totalRating, totalRatings):
def mentor_rankings():
users = User.query.filter_by(mentor_is=True)
ret = []
+ len_leaderboard = 10
for user in users:
tickets = Ticket.query.filter_by(claimant=user, status=5)
totalRatings = 0
@@ -33,10 +34,12 @@ def mentor_rankings():
totalUnrated += len(unrated_tickets)
if (totalRatings > 0):
- ret.append({"name": user.name, "rating": "{:.1f}".format(
- totalRating/totalRatings), "tickets": totalRatings + totalUnrated, "smooth_rating": laplaceSmooth(totalRating, totalRatings)})
-
- return sorted(ret, key=(lambda x: -x["smooth_rating"]))
+ ret.append({"name": user.name, "rating": float("{:.1f}".format(
+ totalRating/totalRatings)), "tickets": totalRatings + totalUnrated, "smooth_rating": laplaceSmooth(totalRating, totalRatings)})
+
+ # return sorted(ret, key=(lambda x: -x["smooth_rating"]))
+ # sort first by rating, then by number of tickets
+ return sorted(ret, key=(lambda x: (-x["rating"], -x["tickets"])))[:len_leaderboard]
def get_all_users(user, override=False):
"""
diff --git a/server/models/ticket.py b/server/models/ticket.py
index 88265dd..c6f4171 100644
--- a/server/models/ticket.py
+++ b/server/models/ticket.py
@@ -5,6 +5,7 @@
import datetime
import secrets
import json
+import uuid
class Ticket(Base):
@@ -41,6 +42,8 @@ class Ticket(Base):
date_created = Column(DateTime, default=datetime.datetime.now)
date_updated = Column(DateTime, default=datetime.datetime.now)
+ claim_location = Column(String, default="virtual")
+
def __init__(self, user, data):
"""Initializes a ticket object
@@ -66,5 +69,6 @@ def json(self):
"status": self.status,
"requested_by": self.requestor.name,
"claimed_by": self.claimant.name if self.claimant else "",
- "minutes": (now-self.date_created).total_seconds()//60
+ "minutes": (now-self.date_created).total_seconds()//60,
+ "claim_location": self.claim_location
}
diff --git a/yarn.lock b/yarn.lock
index 5c605d8..b7e0ac6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -19,12 +19,17 @@ ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
+async-limiter@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
+ integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
+
camelcase@^5.0.0:
version "5.3.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-chalk@^2.4.1:
+chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -60,19 +65,19 @@ color-name@1.1.3:
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
concurrently@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.1.tgz#42cf84d625163f3f5b2e2262568211ad76e1dbe8"
- integrity sha512-48+FE5RJ0qc8azwKv4keVQWlni1hZeSjcWr8shBelOBtBHcKj1aJFM9lHRiSc1x7lq416pkvsqfBMhSRja+Lhw==
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.2.tgz#1a683b2b5c41e9ed324c9002b9f6e4c6e1f3b6d7"
+ integrity sha512-Kim9SFrNr2jd8/0yNYqDTFALzUX1tvimmwFWxmp/D4mRI+kbqIIwE2RkBDrxS2ic25O1UgQMI5AtBqdtX3ynYg==
dependencies:
- chalk "^2.4.1"
- date-fns "^1.23.0"
- lodash "^4.17.10"
+ chalk "^2.4.2"
+ date-fns "^1.30.1"
+ lodash "^4.17.15"
read-pkg "^4.0.1"
- rxjs "^6.3.3"
+ rxjs "^6.5.2"
spawn-command "^0.0.2-1"
supports-color "^4.5.0"
- tree-kill "^1.1.0"
- yargs "^12.0.1"
+ tree-kill "^1.2.1"
+ yargs "^12.0.5"
cross-spawn@^6.0.0:
version "6.0.5"
@@ -85,7 +90,7 @@ cross-spawn@^6.0.0:
shebang-command "^1.2.0"
which "^1.2.9"
-date-fns@^1.23.0:
+date-fns@^1.30.1:
version "1.30.1"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
@@ -96,9 +101,9 @@ decamelize@^1.2.0:
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
end-of-stream@^1.1.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
- integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
dependencies:
once "^1.4.0"
@@ -134,6 +139,11 @@ find-up@^3.0.0:
dependencies:
locate-path "^3.0.0"
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
get-caller-file@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
@@ -156,12 +166,17 @@ has-flag@^3.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-hosted-git-info@^2.1.4:
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.2.tgz#a35c3f355ac1249f1093c0c2a542ace8818c171a"
- integrity sha512-CyjlXII6LMsPMyUzxpTt8fzh5QwzGqPmQXgY/Jyf4Zfp27t/FvfhwoE/8laaMUcMy816CkWF20I7NeQhwwY88w==
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
dependencies:
- lru-cache "^5.1.1"
+ function-bind "^1.1.1"
+
+hosted-git-info@^2.1.4:
+ version "2.8.8"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
+ integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
invert-kv@^2.0.0:
version "2.0.0"
@@ -173,6 +188,13 @@ is-arrayish@^0.2.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+is-core-module@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
+ integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
+ dependencies:
+ has "^1.0.3"
+
is-fullwidth-code-point@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
@@ -215,17 +237,10 @@ locate-path@^3.0.0:
p-locate "^3.0.0"
path-exists "^3.0.0"
-lodash@^4.17.10:
- version "4.17.15"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
- integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
-
-lru-cache@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
- integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
- dependencies:
- yallist "^3.0.2"
+lodash@^4.17.15:
+ version "4.17.20"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+ integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
map-age-cleaner@^0.1.1:
version "0.1.3"
@@ -307,9 +322,9 @@ p-is-promise@^2.0.0:
integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
p-limit@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
- integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
dependencies:
p-try "^2.0.0"
@@ -386,23 +401,29 @@ require-main-filename@^1.0.1:
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
resolve@^1.10.0:
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
- integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
+ integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
dependencies:
+ is-core-module "^2.1.0"
path-parse "^1.0.6"
-rxjs@^6.3.3:
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7"
- integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==
+rxjs@^6.5.2:
+ version "6.6.3"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552"
+ integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==
dependencies:
tslib "^1.9.0"
+safe-buffer@~5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
"semver@2 || 3 || 4 || 5", semver@^5.5.0:
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
- integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
set-blocking@^2.0.0:
version "2.0.0"
@@ -422,9 +443,9 @@ shebang-regex@^1.0.0:
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
signal-exit@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
- integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+ integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
spawn-command@^0.0.2-1:
version "0.0.2-1"
@@ -432,30 +453,30 @@ spawn-command@^0.0.2-1:
integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=
spdx-correct@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
- integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
dependencies:
spdx-expression-parse "^3.0.0"
spdx-license-ids "^3.0.0"
spdx-exceptions@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
- integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
spdx-expression-parse@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
- integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
dependencies:
spdx-exceptions "^2.1.0"
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
- integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65"
+ integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
string-width@^1.0.1:
version "1.0.2"
@@ -507,15 +528,20 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
-tree-kill@^1.1.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a"
- integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==
+tree-kill@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
+ integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
tslib@^1.9.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
- integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+ultron@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
+ integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==
validate-npm-package-license@^3.0.1:
version "3.0.4"
@@ -550,15 +576,19 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-"y18n@^3.2.1 || ^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
- integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+ws@3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.2.tgz#96c1d08b3fefda1d5c1e33700d3bfaa9be2d5608"
+ integrity sha512-t+WGpsNxhMR4v6EClXS8r8km5ZljKJzyGhJf7goJz9k5Ye3+b5Bvno5rjqPuIBn5mnn5GBb7o8IrIWHxX1qOLQ==
+ dependencies:
+ async-limiter "~1.0.0"
+ safe-buffer "~5.1.0"
+ ultron "~1.1.0"
-yallist@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
- integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
+"y18n@^3.2.1 || ^4.0.0":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
+ integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
yargs-parser@^11.1.1:
version "11.1.1"
@@ -568,7 +598,7 @@ yargs-parser@^11.1.1:
camelcase "^5.0.0"
decamelize "^1.2.0"
-yargs@^12.0.1:
+yargs@^12.0.5:
version "12.0.5"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==