From 2c4fe5c3b713108c5164ca53f5ebf1a193ea6f08 Mon Sep 17 00:00:00 2001 From: Diego Fernando Nieto Date: Tue, 27 Apr 2021 09:35:56 -0500 Subject: [PATCH 01/19] Update success page calendar icons --- pages/success.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pages/success.tsx b/pages/success.tsx index ad7dabe6..78c7431a 100644 --- a/pages/success.tsx +++ b/pages/success.tsx @@ -76,23 +76,22 @@ export default function Success(props) {
- Google icon + Google - Microsoft Outlook icon + Microsoft Outlook - Microsoft Office icon + Microsoft Office - - + Other From df32bd1cbe38dd8c2492a9a6b580d3e68983a4e9 Mon Sep 17 00:00:00 2001 From: Jordan Vohwinkel Date: Tue, 27 Apr 2021 16:33:09 -0500 Subject: [PATCH 02/19] Add office 365 calendar instructions --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 2ebc60d8..d72aaee4 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,13 @@ Contributions are what make the open source community such an amazing place to b 10. The key will be created and you will be redirected back to the Credentials page. Select the newly generated client ID under OAuth 2.0 Client IDs. 11. Select Download JSON. Copy the contents of this file and paste the entire JSON string in the .env file as the value for GOOGLE_API_CREDENTIALS key. +## Obtaining Microsoft Graph Client ID and Secret +1. Open [Azure App Registration](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps) and select New registration +2. Name your application +3. Set **Who can use this application or access this API?** to **Accounts in any organizational directory (Any Azure AD directory - Multitenant)** +4. Set the **Web** redirect URI to `/api/integrations/office365calendar/callback` replacing CALENDSO URL with the URI at which your application runs. +5. Use **Application (client) ID** as the **MS_GRAPH_CLIENT_ID** attribute value in .env +6. Click **Certificates & secrets** create a new client secret and use the value as the **MS_GRAPH_CLIENT_SECRET** attriubte ## License From 83822c777c7d6f754c2fdf1441dbff13e355de66 Mon Sep 17 00:00:00 2001 From: Heath Daniel Date: Tue, 27 Apr 2021 21:50:54 -0400 Subject: [PATCH 03/19] Fix calendar layout and adjust spacing --- pages/[user]/[type].tsx | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pages/[user]/[type].tsx b/pages/[user]/[type].tsx index 1b9392e7..f49ffd64 100644 --- a/pages/[user]/[type].tsx +++ b/pages/[user]/[type].tsx @@ -67,11 +67,21 @@ export default function Type(props) { days.push(i); } - const calendar = days.map((day) => + + // Create placeholder elements for empty days in first week + const weekdayOfFirst = dayjs().month(selectedMonth).date(1).day(); + const emptyDays = Array(weekdayOfFirst).fill(null).map((day, i) => ( +
+ {null} +
+ )); + + // Combine placeholder days with actual days + const calendar = [...emptyDays, ...days.map((day) => - ); + )]; // Handle date change useEffect(async () => { @@ -132,7 +142,7 @@ export default function Type(props) {
-
+
{props.user.avatar && Avatar}

{props.user.name}

From 36db7fb4f1bd114e6775a08aea401af895ae2aff Mon Sep 17 00:00:00 2001 From: Heath Daniel Date: Tue, 27 Apr 2021 21:56:30 -0400 Subject: [PATCH 04/19] Match formatting --- pages/[user]/[type].tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pages/[user]/[type].tsx b/pages/[user]/[type].tsx index f49ffd64..29a66fe6 100644 --- a/pages/[user]/[type].tsx +++ b/pages/[user]/[type].tsx @@ -70,16 +70,16 @@ export default function Type(props) { // Create placeholder elements for empty days in first week const weekdayOfFirst = dayjs().month(selectedMonth).date(1).day(); - const emptyDays = Array(weekdayOfFirst).fill(null).map((day, i) => ( -
- {null} -
- )); + const emptyDays = Array(weekdayOfFirst).fill(null).map((day, i) => +
+ {null} +
+ ); // Combine placeholder days with actual days const calendar = [...emptyDays, ...days.map((day) => )]; From 5fc433ecdfcd159d6ad8370bb5b935e67b91c127 Mon Sep 17 00:00:00 2001 From: Bailey Pumfleet Date: Wed, 28 Apr 2021 09:23:42 +0100 Subject: [PATCH 05/19] Add day labels to calendar --- pages/[user]/[type].tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pages/[user]/[type].tsx b/pages/[user]/[type].tsx index 29a66fe6..2de51be2 100644 --- a/pages/[user]/[type].tsx +++ b/pages/[user]/[type].tsx @@ -199,6 +199,13 @@ export default function Type(props) {
+
Sun
+
Mon
+
Tue
+
Wed
+
Thu
+
Fri
+
Sat
{calendar}
From c320b0f20dc844c5b6b4272bb7c4fb504618c5db Mon Sep 17 00:00:00 2001 From: Bailey Pumfleet Date: Wed, 28 Apr 2021 10:23:30 +0100 Subject: [PATCH 06/19] Add hidden event types --- pages/[user].tsx | 15 +++++++++++--- pages/api/availability/eventtype.ts | 6 +++++- pages/availability/event/[type].tsx | 27 +++++++++++++++++++++++-- pages/availability/index.tsx | 31 +++++++++++++++++++++++++++-- prisma/schema.prisma | 1 + 5 files changed, 72 insertions(+), 8 deletions(-) diff --git a/pages/[user].tsx b/pages/[user].tsx index c41f3907..096f4349 100644 --- a/pages/[user].tsx +++ b/pages/[user].tsx @@ -3,7 +3,7 @@ import Link from 'next/link'; import prisma from '../lib/prisma'; export default function User(props) { - const eventTypes = props.user.eventTypes.map(type => + const eventTypes = props.eventTypes.map(type =>
  • @@ -46,9 +46,10 @@ export default function User(props) { export async function getServerSideProps(context) { const user = await prisma.user.findFirst({ where: { - username: context.query.user, + username: context.query.user, }, select: { + id: true, username: true, name: true, bio: true, @@ -63,9 +64,17 @@ export async function getServerSideProps(context) { } } + const eventTypes = await prisma.eventType.findMany({ + where: { + userId: user.id, + hidden: false + } + }); + return { props: { - user + user, + eventTypes }, } } \ No newline at end of file diff --git a/pages/api/availability/eventtype.ts b/pages/api/availability/eventtype.ts index 1d118ffd..77875a69 100644 --- a/pages/api/availability/eventtype.ts +++ b/pages/api/availability/eventtype.ts @@ -26,12 +26,14 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) const title = req.body.title; const description = req.body.description; const length = parseInt(req.body.length); + const hidden = req.body.hidden; const createEventType = await prisma.eventType.create({ data: { title: title, description: description, length: length, + hidden: hidden, userId: user.id, }, }); @@ -56,6 +58,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) const title = req.body.title; const description = req.body.description; const length = parseInt(req.body.length); + const hidden = req.body.hidden; const updateEventType = await prisma.eventType.update({ where: { @@ -64,7 +67,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) data: { title: title, description: description, - length: length + length: length, + hidden: hidden }, }); diff --git a/pages/availability/event/[type].tsx b/pages/availability/event/[type].tsx index ece56d12..c66f9a6f 100644 --- a/pages/availability/event/[type].tsx +++ b/pages/availability/event/[type].tsx @@ -12,6 +12,7 @@ export default function EventType(props) { const titleRef = useRef(); const descriptionRef = useRef(); const lengthRef = useRef(); + const isHiddenRef = useRef(); if (loading) { return

    Loading...

    ; @@ -27,12 +28,13 @@ export default function EventType(props) { const enteredTitle = titleRef.current.value; const enteredDescription = descriptionRef.current.value; const enteredLength = lengthRef.current.value; + const enteredIsHidden = isHiddenRef.current.checked; // TODO: Add validation const response = await fetch('/api/availability/eventtype', { method: 'PATCH', - body: JSON.stringify({id: props.eventType.id, title: enteredTitle, description: enteredDescription, length: enteredLength}), + body: JSON.stringify({id: props.eventType.id, title: enteredTitle, description: enteredDescription, length: enteredLength, hidden: enteredIsHidden}), headers: { 'Content-Type': 'application/json' } @@ -88,6 +90,26 @@ export default function EventType(props) {
  • +
    +
    +
    + +
    +
    + +

    Hide the event type from your page, so it can only be booked through it's URL.

    +
    +
    +
    Cancel @@ -129,7 +151,8 @@ export async function getServerSideProps(context) { id: true, title: true, description: true, - length: true + length: true, + hidden: true } }); diff --git a/pages/availability/index.tsx b/pages/availability/index.tsx index 6dc5570d..205e7617 100644 --- a/pages/availability/index.tsx +++ b/pages/availability/index.tsx @@ -17,6 +17,7 @@ export default function Availability(props) { const titleRef = useRef(); const descriptionRef = useRef(); const lengthRef = useRef(); + const isHiddenRef = useRef(); const startHoursRef = useRef(); const startMinsRef = useRef(); @@ -55,12 +56,13 @@ export default function Availability(props) { const enteredTitle = titleRef.current.value; const enteredDescription = descriptionRef.current.value; const enteredLength = lengthRef.current.value; + const enteredIsHidden = isHiddenRef.current.checked; // TODO: Add validation const response = await fetch('/api/availability/eventtype', { method: 'POST', - body: JSON.stringify({title: enteredTitle, description: enteredDescription, length: enteredLength}), + body: JSON.stringify({title: enteredTitle, description: enteredDescription, length: enteredLength, hidden: enteredIsHidden}), headers: { 'Content-Type': 'application/json' } @@ -139,6 +141,11 @@ export default function Availability(props) { {eventType.title} + {eventType.hidden && + + Hidden + + } {eventType.description} @@ -221,6 +228,25 @@ export default function Availability(props) { +
    +
    +
    + +
    +
    + +

    Hide the event type from your page, so it can only be booked through it's URL.

    +
    +
    +
    {/* TODO: Add an error message when required input fields empty*/}
    +
    + +
    +
    + + {location.hostname}/{props.user.username}/ + + +
    +
    +
    @@ -142,6 +162,16 @@ export default function EventType(props) { } export async function getServerSideProps(context) { + const session = await getSession(context); + + const user = await prisma.user.findFirst({ + where: { + email: session.user.email, + }, + select: { + username: true + } + }); const eventType = await prisma.eventType.findUnique({ where: { @@ -150,6 +180,7 @@ export async function getServerSideProps(context) { select: { id: true, title: true, + slug: true, description: true, length: true, hidden: true @@ -158,6 +189,7 @@ export async function getServerSideProps(context) { return { props: { + user, eventType }, } diff --git a/pages/availability/index.tsx b/pages/availability/index.tsx index 403e4690..fbb4419a 100644 --- a/pages/availability/index.tsx +++ b/pages/availability/index.tsx @@ -15,6 +15,7 @@ export default function Availability(props) { const [successModalOpen, setSuccessModalOpen] = useState(false); const [showChangeTimesModal, setShowChangeTimesModal] = useState(false); const titleRef = useRef(); + const slugRef = useRef(); const descriptionRef = useRef(); const lengthRef = useRef(); const isHiddenRef = useRef(); @@ -54,6 +55,7 @@ export default function Availability(props) { event.preventDefault(); const enteredTitle = titleRef.current.value; + const enteredSlug = slugRef.current.value; const enteredDescription = descriptionRef.current.value; const enteredLength = lengthRef.current.value; const enteredIsHidden = isHiddenRef.current.checked; @@ -62,7 +64,7 @@ export default function Availability(props) { const response = await fetch('/api/availability/eventtype', { method: 'POST', - body: JSON.stringify({title: enteredTitle, description: enteredDescription, length: enteredLength, hidden: enteredIsHidden}), + body: JSON.stringify({title: enteredTitle, slug: enteredSlug, description: enteredDescription, length: enteredLength, hidden: enteredIsHidden}), headers: { 'Content-Type': 'application/json' } @@ -154,7 +156,7 @@ export default function Availability(props) { {eventType.length} minutes - {eventType.hidden && View} + {eventType.hidden && View} Edit @@ -213,6 +215,23 @@ export default function Availability(props) {
    +
    + +
    +
    + + {location.hostname}/{props.user.username}/ + + +
    +
    +
    @@ -351,6 +370,7 @@ export async function getServerSideProps(context) { select: { id: true, title: true, + slug: true, description: true, length: true, hidden: true diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 2b815ec7..288682e7 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -13,6 +13,7 @@ generator client { model EventType { id Int @default(autoincrement()) @id title String + slug String description String? length Int hidden Boolean @default(false) From 3a7fce4c8e66b89b2040e2931195fc3174feca7d Mon Sep 17 00:00:00 2001 From: Bailey Pumfleet Date: Wed, 28 Apr 2021 14:10:55 +0100 Subject: [PATCH 09/19] Create issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 25 ++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 36 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/questions.md | 14 +++++++++ 3 files changed, 75 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/ISSUE_TEMPLATE/questions.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..0e7bd19c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,25 @@ +--- +name: Bug report +about: Report any issues with the platform +title: '' +labels: bug +assignees: '' + +--- + +Found a bug? Please fill out the sections below. 👍 + +### Issue Summary +A summary of the issue. This needs to be a clear detailed-rich summary. + +### Steps to Reproduce +1. (for example) Went to ... +2. Clicked on... +3. ... + +Any other relevant information. For example, why do you consider this a bug and what did you expect to happen instead? + +### Technical details +* Browser version: You can use https://www.whatsmybrowser.org/ to find this out. +* Node.js version +* Anything else that you think could be an issue. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..263a4d38 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,36 @@ +--- +name: Feature request +about: Suggest a feature or idea +title: '' +labels: enhancement +assignees: '' + +--- + +> Please check if your Feature Request has not been already raised in the [Discussions Tab](https://github.com/calendso/calendso/discussions), as we would like to reduce duplicates. If it has been already raised, simply upvote it 🔼. + +### Is your proposal related to a problem? + +(Write your answer here.) + +### Describe the solution you'd like + +(Describe your proposed solution here.) + +### Describe alternatives you've considered + +(Write your answer here.) + +### Additional context + +(Write your answer here.) diff --git a/.github/ISSUE_TEMPLATE/questions.md b/.github/ISSUE_TEMPLATE/questions.md new file mode 100644 index 00000000..4097ff01 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/questions.md @@ -0,0 +1,14 @@ +--- +name: Questions +about: Ask a general question about the project +title: '' +labels: '' +assignees: '' + +--- + +Please do not use GitHub for asking questions, as this unnecessarily pollutes it. Instead, if you have a general question about Calendso or about Calendso's features we encourage you to post on our Slack workspace instead: [Calendso's Slack](https://calendso.com/slack). The maintainers and other community members can provide help and answer your questions there. + +If you've discovered a bug or would like to propose a change/new feature please use one of the other issue templates. + +Thanks! From c4635646ba5d9d7516239c1ccfd3dfbc30dc6bfb Mon Sep 17 00:00:00 2001 From: Alex van Andel Date: Wed, 28 Apr 2021 17:26:24 +0000 Subject: [PATCH 10/19] Updated Next.js to 10.2 --- next.config.js | 3 + package.json | 8 +- yarn.lock | 545 ++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 436 insertions(+), 120 deletions(-) diff --git a/next.config.js b/next.config.js index d5093721..414aee90 100644 --- a/next.config.js +++ b/next.config.js @@ -1,6 +1,9 @@ const withTM = require('next-transpile-modules')(['react-timezone-select']); module.exports = withTM({ + future: { + webpack5: true, + }, typescript: { ignoreBuildErrors: true, }, diff --git a/package.json b/package.json index cc4b0df1..fef9125b 100644 --- a/package.json +++ b/package.json @@ -17,19 +17,19 @@ "dayjs": "^1.10.4", "googleapis": "^67.1.1", "ics": "^2.27.0", - "next": "10.0.8", + "next": "^10.2.0", "next-auth": "^3.13.2", - "next-transpile-modules": "^6.4.1", + "next-transpile-modules": "^7.0.0", "react": "17.0.1", "react-dom": "17.0.1", - "react-timezone-select": "^0.10.7" + "react-timezone-select": "^0.10.10" }, "devDependencies": { "@types/node": "^14.14.33", "@types/react": "^17.0.3", "autoprefixer": "^10.2.5", "postcss": "^8.2.8", - "prisma": "2.21.2", + "prisma": "^2.21.2", "tailwindcss": "^2.0.3", "typescript": "^4.2.3" } diff --git a/yarn.lock b/yarn.lock index 6921863c..39026a88 100644 --- a/yarn.lock +++ b/yarn.lock @@ -160,20 +160,20 @@ resolved "https://registry.npmjs.org/@heroicons/react/-/react-1.0.1.tgz" integrity sha512-uikw2gKCmqnvjVxitecWfFLMOKyL9BTFcU4VM3hHj9OMwpkCr5Ke+MRMyY2/aQVmsYs4VTq7NCFX05MYwAHi3g== -"@next/env@10.0.8": - version "10.0.8" - resolved "https://registry.npmjs.org/@next/env/-/env-10.0.8.tgz" - integrity sha512-vWdxAHD6gJn52tN5bxj1VoRgu5lNtRPc/HyYf7V014k2GZ9eKhqoFQGSSMNGHB7WgdUxLVw75+o9Ek9ClOOAjw== +"@next/env@10.2.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-10.2.0.tgz#154dbce2efa3ad067ebd20b7d0aa9aed775e7c97" + integrity sha512-tsWBsn1Rb6hXRaHc/pWMCpZ4Ipkf3OCbZ54ef5ukgIyEvzzGdGFXQshPP2AF7yb+8yMpunWs7vOMZW3e8oPF6A== -"@next/polyfill-module@10.0.8": - version "10.0.8" - resolved "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-10.0.8.tgz" - integrity sha512-JCUGB4/SKQ4LXniv7LKGrpW+W2DGH/CLkrgXgSo/Ze+EJdMDLxC/VFhiuW+TgAaAWLE4gryoswlZBNyHtkPGQA== +"@next/polyfill-module@10.2.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.2.0.tgz#61f41110c4b465cc26d113e2054e205df61c3594" + integrity sha512-Nl3GexIUXsmuggkUqrRFyE/2k7UI44JaVzSywtXEyHzxpZm2a5bdMaWuC89pgLiFDDOqmbqyLAbtwm5lNxa7Eg== -"@next/react-dev-overlay@10.0.8": - version "10.0.8" - resolved "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-10.0.8.tgz" - integrity sha512-ygVsvkzYTYIuME+dUUSjCxbNjrJ+Up9Y+CrWEmSSk6HuxajUvrB9vN6RT+PeAzEOQ5er1sWxmVHVdPknQPVWyQ== +"@next/react-dev-overlay@10.2.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.2.0.tgz#4220121abac7e3404cbaf467784aeecca8be46cf" + integrity sha512-PRIAoWog41hLN4iJ8dChKp4ysOX0Q8yiNQ/cwzyqEd3EjugkDV5OiKl3mumGKaApJaIra1MX6j1wgQRuLhuWMA== dependencies: "@babel/code-frame" "7.12.11" anser "1.4.9" @@ -187,10 +187,10 @@ stacktrace-parser "0.1.10" strip-ansi "6.0.0" -"@next/react-refresh-utils@10.0.8": - version "10.0.8" - resolved "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-10.0.8.tgz" - integrity sha512-ZMO77Xs2ioGV/nZB4GRDHgsNT2jhOp+cZIh6c7wf0xw9o/1KoTWN8nxWzwU/laAtkoSS+E6YdhuR4Mw3Ar3CSg== +"@next/react-refresh-utils@10.2.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.2.0.tgz#55953b697769c6647f371bc6bcd865a24e1a22e9" + integrity sha512-3I31K9B4hEQRl7yQ44Umyz+szHtuMJrNdwsgJGhoEnUCXSBRHp5wv5Zv8eDa2NewSbe53b2C0oOpivrzmdBakw== "@opentelemetry/api@0.14.0": version "0.14.0" @@ -223,7 +223,7 @@ "@prisma/engines@2.21.0-36.e421996c87d5f3c8f7eeadd502d4ad402c89464d": version "2.21.0-36.e421996c87d5f3c8f7eeadd502d4ad402c89464d" - resolved "https://registry.npmjs.org/@prisma/engines/-/engines-2.21.0-36.e421996c87d5f3c8f7eeadd502d4ad402c89464d.tgz" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-2.21.0-36.e421996c87d5f3c8f7eeadd502d4ad402c89464d.tgz#aafed60c9506bc766e49ea60b9f8ce7da2385bc6" integrity sha512-L57tvSoom2GDWDqik4wrAUBvLTAv5MTm2OOzNMBKsv0w5cX7ONoZ8KnGQN+csmdJpQVBs93dIvIBm72OO+l/9Q== "@sideway/address@^4.1.0": @@ -255,6 +255,11 @@ dependencies: mini-svg-data-uri "^1.2.3" +"@types/node@*": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.1.tgz#ef34dea0881028d11398be5bf4e856743e3dc35a" + integrity sha512-TMkXt0Ck1y0KKsGr9gJtWGjttxlZnnvDtphxUOSd0bfaR6Q1jle+sPvrzNR1urqYTWMinoKvjKfXUGsumaO1PA== + "@types/node@^14.14.33": version "14.14.33" resolved "https://registry.npmjs.org/@types/node/-/node-14.14.33.tgz" @@ -371,6 +376,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + arrify@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" @@ -386,6 +396,16 @@ asn1.js@^5.2.0: minimalistic-assert "^1.0.0" safer-buffer "^2.1.0" +assert@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + assert@^1.1.1: version "1.5.0" resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" @@ -416,6 +436,13 @@ autoprefixer@^10.2.5: normalize-range "^0.1.2" postcss-value-parser "^4.1.0" +available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + babel-plugin-syntax-jsx@6.18.0: version "6.18.0" resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" @@ -535,7 +562,7 @@ browserify-sign@^4.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" -browserify-zlib@^0.2.0: +browserify-zlib@0.2.0, browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== @@ -609,6 +636,14 @@ bytes@3.1.0, bytes@^3.0.0: resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" @@ -619,7 +654,12 @@ caniuse-lite@^1.0.30001173, caniuse-lite@^1.0.30001179, caniuse-lite@^1.0.300011 resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001198.tgz" integrity sha512-r5GGgESqOPZzwvdLVER374FpQu2WluCF1Z2DSiFJ89KSmGjT0LVKjgv4NcAqHmGWF9ihNpqRI9KXO9Ex4sKsgA== -chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +caniuse-lite@^1.0.30001202: + version "1.0.30001219" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001219.tgz#5bfa5d0519f41f993618bd318f606a4c4c16156b" + integrity sha512-c0yixVG4v9KBc/tQ2rlbB3A/bgBFRvl8h8M4IeUbqCca4gsiCfvtaheUssbnux/Mb66Vjz7x8yYjDgYcNQOhyQ== + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -769,7 +809,7 @@ console-browserify@^1.1.0: resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -constants-browserify@^1.0.0: +constants-browserify@1.0.0, constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= @@ -854,21 +894,19 @@ cssesc@^3.0.0: resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-simple@1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-1.2.2.tgz" - integrity sha512-gtvrcRSGtP3hA/wS8mFVinFnQdEsEpm3v4I/s/KmNjpdWaThV/4E5EojAzFXxyT5OCSRPLlHR9iQexAqKHlhGQ== +cssnano-preset-simple@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-2.0.0.tgz#b55e72cb970713f425560a0e141b0335249e2f96" + integrity sha512-HkufSLkaBJbKBFx/7aj5HmCK9Ni/JedRQm0mT2qBzMG/dEuJOLnMt2lK6K1rwOOyV4j9aSY+knbW9WoS7BYpzg== dependencies: - caniuse-lite "^1.0.30001179" - postcss "^7.0.32" + caniuse-lite "^1.0.30001202" -cssnano-simple@1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-1.2.2.tgz" - integrity sha512-4slyYc1w4JhSbhVX5xi9G0aQ42JnRyPg+7l7cqoNyoIDzfWx40Rq3JQZnoAWDu60A4AvKVp9ln/YSUOdhDX68g== +cssnano-simple@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-2.0.0.tgz#930d9dcd8ba105c5a62ce719cb00854da58b5c05" + integrity sha512-0G3TXaFxlh/szPEG/o3VcmCwl0N3E60XNb9YZZijew5eIs6fLjJuOPxQd9yEBaX2p/YfJtt49i4vYi38iH6/6w== dependencies: - cssnano-preset-simple "1.2.2" - postcss "^7.0.32" + cssnano-preset-simple "^2.0.0" csstype@^3.0.2: version "3.0.7" @@ -899,6 +937,13 @@ debug@4, debug@^4.1.1: dependencies: ms "2.1.2" +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + defined@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" @@ -948,6 +993,11 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" +domain-browser@4.19.0: + version "4.19.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.19.0.tgz#1093e17c0a17dbd521182fe90d49ac1370054af1" + integrity sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ== + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" @@ -965,6 +1015,11 @@ ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: dependencies: safe-buffer "^5.0.1" +efrt-unpack@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/efrt-unpack/-/efrt-unpack-2.2.0.tgz#b05dbec0fb8cb346a27840e00c969df9c72fee52" + integrity sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ== + electron-to-chromium@^1.3.634, electron-to-chromium@^1.3.649: version "1.3.684" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.684.tgz" @@ -993,17 +1048,60 @@ emojis-list@^2.0.0: resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +encoding@0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + enhanced-resolve@^5.7.0: version "5.8.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.0.tgz" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.0.tgz#d9deae58f9d3773b6a111a5a46831da5be5c9ac0" integrity sha512-Sl3KRpJA8OpprrtaIswVki3cWPiPKxXuFxJXBp+zNb6s6VwNWwFRUdtmzd2ReUut8n+sCPx7QCtQ7w5wfJhSgQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + escalade@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: @@ -1083,6 +1181,11 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + fraction.js@^4.0.13: version "4.0.13" resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.13.tgz" @@ -1142,6 +1245,15 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-orientation@1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/get-orientation/-/get-orientation-1.1.2.tgz" @@ -1236,6 +1348,11 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" @@ -1246,6 +1363,11 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + has@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" @@ -1312,7 +1434,7 @@ http-errors@1.7.3: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -https-browserify@^1.0.0: +https-browserify@1.0.0, https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= @@ -1332,6 +1454,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + ics@^2.27.0: version "2.27.0" resolved "https://registry.npmjs.org/ics/-/ics-2.27.0.tgz" @@ -1373,11 +1502,23 @@ inherits@2.0.3: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + is-arrayish@^0.3.1: version "0.3.2" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-bigint@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" @@ -1385,6 +1526,18 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" + +is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz" @@ -1392,6 +1545,11 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" @@ -1402,6 +1560,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" + integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== + is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" @@ -1409,35 +1572,78 @@ is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + is-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typed-array@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" + integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.2" + es-abstract "^1.18.0-next.2" + foreach "^2.0.5" + has-symbols "^1.0.1" + +isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -jest-worker@24.9.0: - version "24.9.0" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== +jest-worker@27.0.0-next.5: + version "27.0.0-next.5" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.0-next.5.tgz#5985ee29b12a4e191f4aae4bb73b97971d86ec28" + integrity sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g== dependencies: + "@types/node" "*" merge-stream "^2.0.0" - supports-color "^6.1.0" + supports-color "^8.0.0" joi@^17.1.1: version "17.4.0" @@ -1543,14 +1749,6 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" -line-column@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz" - integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= - dependencies: - isarray "^1.0.0" - isobject "^2.0.0" - loader-utils@1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" @@ -1726,11 +1924,16 @@ mz@^2.4.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.1.16, nanoid@^3.1.20: +nanoid@^3.1.20: version "3.1.20" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz" integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== +nanoid@^3.1.22: + version "3.1.22" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" + integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== + native-url@0.3.4: version "0.3.4" resolved "https://registry.npmjs.org/native-url/-/native-url-0.3.4.tgz" @@ -1756,54 +1959,67 @@ next-auth@^3.13.2: require_optional "^1.0.1" typeorm "^0.2.30" -next-transpile-modules@^6.4.1: - version "6.4.1" - resolved "https://registry.npmjs.org/next-transpile-modules/-/next-transpile-modules-6.4.1.tgz" - integrity sha512-trUMkm+bkjMci7mXSOQkF3apEY18K6YuaeG4mkLwiQtDdsmdVXzopNyZGc2nJq8OwHYDgJr1QlsBQuQb/2vXlw== +next-transpile-modules@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/next-transpile-modules/-/next-transpile-modules-7.0.0.tgz#5a48988cede89bc5920defb15378093d0d8562eb" + integrity sha512-HgVczU5ajXKvE7HO3ZLmBmxXj79aq8jSZNYpCttim+MZ+b0GIsdk7AV2w7Ax/tIM1/dJA+vV/6loXCRYlbsGGA== dependencies: enhanced-resolve "^5.7.0" escalade "^3.1.1" -next@10.0.8: - version "10.0.8" - resolved "https://registry.npmjs.org/next/-/next-10.0.8.tgz" - integrity sha512-iDY65ce4Prn/9EnQpJGFMb5QJvtGWzZPk6KQqT7vDNu4D+jkivkk9NaAs/k1hR73pXdJHmhHer1s0YxLSghAKQ== +next@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/next/-/next-10.2.0.tgz#6654cc925d8abcb15474fa062fc6b3ee527dd6dc" + integrity sha512-PKDKCSF7s82xudu3kQhOEaokxggpbLEWouEUtzP6OqV0YqKYHF+Ff+BFLycEem8ixtTM2M6ElN0VRJcskJfxPQ== dependencies: "@babel/runtime" "7.12.5" "@hapi/accept" "5.0.1" - "@next/env" "10.0.8" - "@next/polyfill-module" "10.0.8" - "@next/react-dev-overlay" "10.0.8" - "@next/react-refresh-utils" "10.0.8" + "@next/env" "10.2.0" + "@next/polyfill-module" "10.2.0" + "@next/react-dev-overlay" "10.2.0" + "@next/react-refresh-utils" "10.2.0" "@opentelemetry/api" "0.14.0" + assert "2.0.0" ast-types "0.13.2" + browserify-zlib "0.2.0" browserslist "4.16.1" buffer "5.6.0" caniuse-lite "^1.0.30001179" chalk "2.4.2" chokidar "3.5.1" + constants-browserify "1.0.0" crypto-browserify "3.12.0" - cssnano-simple "1.2.2" + cssnano-simple "2.0.0" + domain-browser "4.19.0" + encoding "0.1.13" etag "1.8.1" find-cache-dir "3.3.1" get-orientation "1.1.2" - jest-worker "24.9.0" + https-browserify "1.0.0" + jest-worker "27.0.0-next.5" native-url "0.3.4" node-fetch "2.6.1" node-html-parser "1.4.9" node-libs-browser "^2.2.1" + os-browserify "0.3.0" p-limit "3.1.0" path-browserify "1.0.1" pnp-webpack-plugin "1.6.4" - postcss "8.1.7" + postcss "8.2.13" process "0.11.10" prop-types "15.7.2" + querystring-es3 "0.2.1" raw-body "2.4.1" react-is "16.13.1" react-refresh "0.8.3" stream-browserify "3.0.0" + stream-http "3.1.1" + string_decoder "1.3.0" styled-jsx "3.3.2" + timers-browserify "2.0.12" + tty-browserify "0.0.1" use-subscription "1.5.1" + util "0.12.3" vm-browserify "1.1.2" watchpack "2.1.1" @@ -1895,6 +2111,34 @@ object-hash@^2.1.1: resolved "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz" integrity sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ== +object-inspect@^1.9.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" + integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + once@^1.3.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" @@ -1902,7 +2146,7 @@ once@^1.3.0: dependencies: wrappy "1" -os-browserify@^0.3.0: +os-browserify@0.3.0, os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= @@ -2081,14 +2325,13 @@ postcss-value-parser@^4.1.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@8.1.7: - version "8.1.7" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.1.7.tgz" - integrity sha512-llCQW1Pz4MOPwbZLmOddGM9eIJ8Bh7SZ2Oj5sxZva77uVaotYDsYTch1WBTNu7fUY0fpWp0fdt7uW40D4sRiiQ== +postcss@8.2.13: + version "8.2.13" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.13.tgz#dbe043e26e3c068e45113b1ed6375d2d37e2129f" + integrity sha512-FCE5xLH+hjbzRdpbRb1IMCvPv9yZx2QnDarBEYSN0N0HYk+TcXsEhwdFcFb+SRWOKzKGErhIEbBK2ogyLdTtfQ== dependencies: - colorette "^1.2.1" - line-column "^1.0.2" - nanoid "^3.1.16" + colorette "^1.2.2" + nanoid "^3.1.22" source-map "^0.6.1" postcss@^6.0.9: @@ -2100,15 +2343,6 @@ postcss@^6.0.9: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^7.0.32: - version "7.0.35" - resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - postcss@^8.1.6, postcss@^8.2.1, postcss@^8.2.8: version "8.2.8" resolved "https://registry.npmjs.org/postcss/-/postcss-8.2.8.tgz" @@ -2140,9 +2374,9 @@ pretty-hrtime@^1.0.3: resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= -prisma@2.21.2: +prisma@^2.21.2: version "2.21.2" - resolved "https://registry.npmjs.org/prisma/-/prisma-2.21.2.tgz" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-2.21.2.tgz#a73b4cbe92a884aa98b317684d6741871b5e94a5" integrity sha512-Ux9ovDIUHsMNLGLtuo6BBKCuuBVLpZmhM2LXF+VBUQvsbmsVfp3u5CRyHGEqaZqMibYQJISy7YZYF/RgozHKkQ== dependencies: "@prisma/engines" "2.21.0-36.e421996c87d5f3c8f7eeadd502d4ad402c89464d" @@ -2208,7 +2442,7 @@ qs@^6.7.0: resolved "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz" integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== -querystring-es3@^0.2.0: +querystring-es3@0.2.1, querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= @@ -2274,7 +2508,7 @@ react-refresh@0.8.3: resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== -react-select@^4.0.2: +react-select@^4.2.1: version "4.3.0" resolved "https://registry.yarnpkg.com/react-select/-/react-select-4.3.0.tgz#6bde634ae7a378b49f3833c85c126f533483fa2e" integrity sha512-SBPD1a3TJqE9zoI/jfOLCAoLr/neluaeokjOixr3zZ1vHezkom8K0A9J4QG9IWDqIDE9K/Mv+0y1GjidC2PDtQ== @@ -2287,14 +2521,14 @@ react-select@^4.0.2: react-input-autosize "^3.0.0" react-transition-group "^4.3.0" -react-timezone-select@^0.10.7: - version "0.10.7" - resolved "https://registry.yarnpkg.com/react-timezone-select/-/react-timezone-select-0.10.7.tgz#c13edcd43091ae11d887b5551305655182b92280" - integrity sha512-JPnrYcXf3NqqNl4HYDsDaS6OiUEPW6i7xeGE1xOA7SPuh7oR5vzKj0g0kbg5IH8LkiWTZNWk5NbBSJkRHp/dlA== +react-timezone-select@^0.10.10: + version "0.10.10" + resolved "https://registry.yarnpkg.com/react-timezone-select/-/react-timezone-select-0.10.10.tgz#853aeb73e84fcf00bd01eb57c35f2df1b84e1cc0" + integrity sha512-PEEQQkiL+fFW3940MmhrX6xNf2VMz16BW2UyF6Mu7jzCv89McwJ93Bp5mqE6ouhLPZSsyTnhjILifsEFUUMuFg== dependencies: - react-select "^4.0.2" - spacetime "^6.12.3" - spacetime-informal "^0.5.0" + react-select "^4.2.1" + spacetime "^6.14.0" + spacetime-informal "^0.6.1" react-transition-group@^4.3.0: version "4.4.1" @@ -2405,7 +2639,7 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -2480,12 +2714,14 @@ source-map@^0.6.1: resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -spacetime-informal@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/spacetime-informal/-/spacetime-informal-0.5.0.tgz#0301d45621d7207d6573d97ba0e6700dab37c667" - integrity sha512-cdSsniJJfJJTBdeVvXtooxyXzrRfoBVjAl3usQl9DgGExB3XN3deA3MwjInnD/26C/lANf3dU54bT2YweAGrOw== +spacetime-informal@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/spacetime-informal/-/spacetime-informal-0.6.1.tgz#621b4156a98f20f5c3f0151475d2ea886e1c19c1" + integrity sha512-fOA+RMi2mpCbkLkjBIzWQttmkYE/v9VfdbbrvE2Pus/WoiQNmHO20YGNEqJOuFADsrrZOd/hJVuBwAkV3s6BHg== + dependencies: + efrt-unpack "2.2.0" -spacetime@^6.12.3: +spacetime@^6.14.0: version "6.16.0" resolved "https://registry.yarnpkg.com/spacetime/-/spacetime-6.16.0.tgz#f213963392eafc380716c3857b23251de87db97f" integrity sha512-mkuniNOp6ssfPyJidj81tb54zKxK4vEKPTmcUsC/NEGIF8S07ppoSotdg6numT1/26rthQYmdxMY/M5a9WeJVQ== @@ -2523,6 +2759,16 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-http@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564" + integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" + stream-http@^2.7.2: version "2.8.3" resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" @@ -2555,7 +2801,23 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@1.3.0, string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -2624,13 +2886,6 @@ supports-color@^5.3.0, supports-color@^5.4.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" @@ -2638,6 +2893,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + tailwindcss@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.0.3.tgz" @@ -2666,7 +2928,7 @@ tailwindcss@^2.0.3: tapable@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== thenify-all@^1.0.0: @@ -2683,7 +2945,7 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -timers-browserify@^2.0.4: +timers-browserify@2.0.12, timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== @@ -2734,6 +2996,11 @@ tty-browserify@0.0.0: resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= +tty-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + type-fest@^0.7.1: version "0.7.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" @@ -2766,6 +3033,16 @@ typescript@^4.2.3: resolved "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz" integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== +unbox-primitive@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" @@ -2813,6 +3090,18 @@ util@0.10.3: dependencies: inherits "2.0.1" +util@0.12.3, util@^0.12.0: + version "0.12.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" + integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + util@^0.11.0: version "0.11.1" resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz" @@ -2857,6 +3146,30 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" From b2c848d6665a09b972710f56db6684beeb5de77d Mon Sep 17 00:00:00 2001 From: Bailey Pumfleet Date: Thu, 29 Apr 2021 13:03:49 +0100 Subject: [PATCH 11/19] Fix logout screen icon --- pages/auth/logout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/auth/logout.tsx b/pages/auth/logout.tsx index c89416bc..fe1aaf78 100644 --- a/pages/auth/logout.tsx +++ b/pages/auth/logout.tsx @@ -13,7 +13,7 @@ export default function Logout() {
    -
    +
    From 687ab5ad3e3e08da9b4247c492e35e53fd244251 Mon Sep 17 00:00:00 2001 From: Bailey Pumfleet Date: Thu, 29 Apr 2021 13:05:50 +0100 Subject: [PATCH 12/19] Replace router URL instead of reloading --- pages/availability/index.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pages/availability/index.tsx b/pages/availability/index.tsx index fbb4419a..be1346ba 100644 --- a/pages/availability/index.tsx +++ b/pages/availability/index.tsx @@ -3,7 +3,7 @@ import Link from 'next/link'; import prisma from '../../lib/prisma'; import Modal from '../../components/Modal'; import Shell from '../../components/Shell'; -import Router from 'next/router'; +import { useRouter } from 'next/router'; import { useRef } from 'react'; import { useState } from 'react'; import { useSession, getSession } from 'next-auth/client'; @@ -11,6 +11,7 @@ import { PlusIcon, ClockIcon } from '@heroicons/react/outline'; export default function Availability(props) { const [ session, loading ] = useSession(); + const router = useRouter(); const [showAddModal, setShowAddModal] = useState(false); const [successModalOpen, setSuccessModalOpen] = useState(false); const [showChangeTimesModal, setShowChangeTimesModal] = useState(false); @@ -71,7 +72,8 @@ export default function Availability(props) { }); if (enteredTitle && enteredLength) { - Router.reload(); + router.replace(router.asPath); + toggleAddModal(); } } From 7d7b6273043df8af223f871d08c49240de6d6632 Mon Sep 17 00:00:00 2001 From: Bailey Pumfleet Date: Thu, 29 Apr 2021 13:28:25 +0100 Subject: [PATCH 13/19] Improve settings page redirect --- pages/settings/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/settings/index.tsx b/pages/settings/index.tsx index 8ff88a7d..dd0adcff 100644 --- a/pages/settings/index.tsx +++ b/pages/settings/index.tsx @@ -13,7 +13,7 @@ export default function Settings() { } } - router.push('/settings/profile'); + router.replace('/settings/profile'); return null; } \ No newline at end of file From c2dfbaad88b3e5296e1750483cb89a3bca8fc8b6 Mon Sep 17 00:00:00 2001 From: Bailey Pumfleet Date: Thu, 29 Apr 2021 13:36:37 +0100 Subject: [PATCH 14/19] Set avatar through URL --- pages/api/user/profile.ts | 2 ++ pages/settings/profile.tsx | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/pages/api/user/profile.ts b/pages/api/user/profile.ts index 9ddbe984..c471b0a3 100644 --- a/pages/api/user/profile.ts +++ b/pages/api/user/profile.ts @@ -26,6 +26,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) const username = req.body.username; const name = req.body.name; const description = req.body.description; + const avatar = req.body.avatar; const timeZone = req.body.timeZone; const updateUser = await prisma.user.update({ @@ -35,6 +36,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) data: { username, name, + avatar, bio: description, timeZone: timeZone, }, diff --git a/pages/settings/profile.tsx b/pages/settings/profile.tsx index e80d5e87..0749fd46 100644 --- a/pages/settings/profile.tsx +++ b/pages/settings/profile.tsx @@ -1,6 +1,7 @@ import Head from 'next/head'; import Link from 'next/link'; import { useRef, useState } from 'react'; +import { useRouter } from 'next/router'; import prisma from '../../lib/prisma'; import Modal from '../../components/Modal'; import Shell from '../../components/Shell'; @@ -10,10 +11,12 @@ import TimezoneSelect from 'react-timezone-select'; export default function Settings(props) { const [ session, loading ] = useSession(); + const router = useRouter(); const [successModalOpen, setSuccessModalOpen] = useState(false); const usernameRef = useRef(); const nameRef = useRef(); const descriptionRef = useRef(); + const avatarRef = useRef(); const [ selectedTimeZone, setSelectedTimeZone ] = useState({ value: props.user.timeZone }); @@ -33,18 +36,20 @@ export default function Settings(props) { const enteredUsername = usernameRef.current.value; const enteredName = nameRef.current.value; const enteredDescription = descriptionRef.current.value; + const enteredAvatar = avatarRef.current.value; const enteredTimeZone = selectedTimeZone.value; // TODO: Add validation const response = await fetch('/api/user/profile', { method: 'PATCH', - body: JSON.stringify({username: enteredUsername, name: enteredName, description: enteredDescription, timeZone: enteredTimeZone}), + body: JSON.stringify({username: enteredUsername, name: enteredName, description: enteredDescription, avatar: enteredAvatar, timeZone: enteredTimeZone}), headers: { 'Content-Type': 'application/json' } }); + router.replace(router.asPath); setSuccessModalOpen(true); } @@ -111,7 +116,7 @@ export default function Settings(props) { -
    + {/*
    -
    +
    */}
    {props.user.avatar && } {!props.user.avatar &&
    } - */} +
    +
    + +
    From 1b7c9cf3594217f949bd9624cea600d2f79f7a50 Mon Sep 17 00:00:00 2001 From: Bailey Pumfleet Date: Thu, 29 Apr 2021 14:04:08 +0100 Subject: [PATCH 15/19] Fix TypeScript ref errors --- pages/availability/event/[type].tsx | 10 +++++----- pages/availability/index.tsx | 18 +++++++++--------- pages/settings/password.tsx | 4 ++-- pages/settings/profile.tsx | 8 ++++---- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/pages/availability/event/[type].tsx b/pages/availability/event/[type].tsx index bfa872ad..007ebcea 100644 --- a/pages/availability/event/[type].tsx +++ b/pages/availability/event/[type].tsx @@ -9,11 +9,11 @@ import { useSession, getSession } from 'next-auth/client'; export default function EventType(props) { const router = useRouter(); const [ session, loading ] = useSession(); - const titleRef = useRef(); - const slugRef = useRef(); - const descriptionRef = useRef(); - const lengthRef = useRef(); - const isHiddenRef = useRef(); + const titleRef = useRef(); + const slugRef = useRef(); + const descriptionRef = useRef(); + const lengthRef = useRef(); + const isHiddenRef = useRef(); if (loading) { return

    Loading...

    ; diff --git a/pages/availability/index.tsx b/pages/availability/index.tsx index be1346ba..2c1163b5 100644 --- a/pages/availability/index.tsx +++ b/pages/availability/index.tsx @@ -15,16 +15,16 @@ export default function Availability(props) { const [showAddModal, setShowAddModal] = useState(false); const [successModalOpen, setSuccessModalOpen] = useState(false); const [showChangeTimesModal, setShowChangeTimesModal] = useState(false); - const titleRef = useRef(); - const slugRef = useRef(); - const descriptionRef = useRef(); - const lengthRef = useRef(); - const isHiddenRef = useRef(); + const titleRef = useRef(); + const slugRef = useRef(); + const descriptionRef = useRef(); + const lengthRef = useRef(); + const isHiddenRef = useRef(); - const startHoursRef = useRef(); - const startMinsRef = useRef(); - const endHoursRef = useRef(); - const endMinsRef = useRef(); + const startHoursRef = useRef(); + const startMinsRef = useRef(); + const endHoursRef = useRef(); + const endMinsRef = useRef(); if (loading) { return

    Loading...

    ; diff --git a/pages/settings/password.tsx b/pages/settings/password.tsx index c1ae06b0..8644d3c7 100644 --- a/pages/settings/password.tsx +++ b/pages/settings/password.tsx @@ -10,8 +10,8 @@ import { signIn, useSession, getSession } from 'next-auth/client'; export default function Settings(props) { const [ session, loading ] = useSession(); const [successModalOpen, setSuccessModalOpen] = useState(false); - const oldPasswordRef = useRef(); - const newPasswordRef = useRef(); + const oldPasswordRef = useRef(); + const newPasswordRef = useRef(); if (loading) { return

    Loading...

    ; diff --git a/pages/settings/profile.tsx b/pages/settings/profile.tsx index 0749fd46..76039466 100644 --- a/pages/settings/profile.tsx +++ b/pages/settings/profile.tsx @@ -13,10 +13,10 @@ export default function Settings(props) { const [ session, loading ] = useSession(); const router = useRouter(); const [successModalOpen, setSuccessModalOpen] = useState(false); - const usernameRef = useRef(); - const nameRef = useRef(); - const descriptionRef = useRef(); - const avatarRef = useRef(); + const usernameRef = useRef(); + const nameRef = useRef(); + const descriptionRef = useRef(); + const avatarRef = useRef(); const [ selectedTimeZone, setSelectedTimeZone ] = useState({ value: props.user.timeZone }); From ea316075989066b9480546a2033eca7056fa8850 Mon Sep 17 00:00:00 2001 From: Bailey Pumfleet Date: Thu, 29 Apr 2021 14:47:01 +0100 Subject: [PATCH 16/19] Fix a bunch of TypeScript errors --- components/Modal.tsx | 1 - lib/prisma.ts | 7 ++++--- pages/[user]/[type].tsx | 21 ++++++++++++--------- pages/availability/event/[type].tsx | 2 +- pages/availability/index.tsx | 4 ++-- pages/settings/profile.tsx | 2 +- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/components/Modal.tsx b/components/Modal.tsx index 40f1a5a2..658bf706 100644 --- a/components/Modal.tsx +++ b/components/Modal.tsx @@ -1,4 +1,3 @@ -/* This example requires Tailwind CSS v2.0+ */ import { Fragment, useState } from 'react' import { Dialog, Transition } from '@headlessui/react' import { CheckIcon } from '@heroicons/react/outline' diff --git a/lib/prisma.ts b/lib/prisma.ts index 20e4d98c..4d3f8470 100644 --- a/lib/prisma.ts +++ b/lib/prisma.ts @@ -1,14 +1,15 @@ import { PrismaClient } from '@prisma/client'; let prisma: PrismaClient; +const globalAny:any = global; if (process.env.NODE_ENV === 'production') { prisma = new PrismaClient(); } else { - if (!global.prisma) { - global.prisma = new PrismaClient(); + if (!globalAny.prisma) { + globalAny.prisma = new PrismaClient(); } - prisma = global.prisma; + prisma = globalAny.prisma; } export default prisma; \ No newline at end of file diff --git a/pages/[user]/[type].tsx b/pages/[user]/[type].tsx index 8d7fcc8b..8ca4d5d6 100644 --- a/pages/[user]/[type].tsx +++ b/pages/[user]/[type].tsx @@ -84,16 +84,19 @@ export default function Type(props) { )]; // Handle date change - useEffect(async () => { - if(!selectedDate) { - return + useEffect(() => { + const changeDate = async () => { + if (!selectedDate) { + return + } + + setLoading(true); + const res = await fetch(`/api/availability/${user}?dateFrom=${lowerBound.utc().format()}&dateTo=${upperBound.utc().format()}`); + const busyTimes = await res.json(); + if (busyTimes.length > 0) setBusy(busyTimes); + setLoading(false); } - - setLoading(true); - const res = await fetch(`/api/availability/${user}?dateFrom=${lowerBound.utc().format()}&dateTo=${upperBound.utc().format()}`); - const busyTimes = await res.json(); - if (busyTimes.length > 0) setBusy(busyTimes); - setLoading(false); + changeDate(); }, [selectedDate]); diff --git a/pages/availability/event/[type].tsx b/pages/availability/event/[type].tsx index 007ebcea..89deae62 100644 --- a/pages/availability/event/[type].tsx +++ b/pages/availability/event/[type].tsx @@ -11,7 +11,7 @@ export default function EventType(props) { const [ session, loading ] = useSession(); const titleRef = useRef(); const slugRef = useRef(); - const descriptionRef = useRef(); + const descriptionRef = useRef(); const lengthRef = useRef(); const isHiddenRef = useRef(); diff --git a/pages/availability/index.tsx b/pages/availability/index.tsx index 2c1163b5..9369a0b0 100644 --- a/pages/availability/index.tsx +++ b/pages/availability/index.tsx @@ -17,7 +17,7 @@ export default function Availability(props) { const [showChangeTimesModal, setShowChangeTimesModal] = useState(false); const titleRef = useRef(); const slugRef = useRef(); - const descriptionRef = useRef(); + const descriptionRef = useRef(); const lengthRef = useRef(); const isHiddenRef = useRef(); @@ -42,7 +42,7 @@ export default function Availability(props) { setShowChangeTimesModal(!showChangeTimesModal); } - const closeSuccessModal = () => { Router.reload(); } + const closeSuccessModal = () => { router.replace(router.asPath); } function convertMinsToHrsMins (mins) { let h = Math.floor(mins / 60); diff --git a/pages/settings/profile.tsx b/pages/settings/profile.tsx index 76039466..e536f8b1 100644 --- a/pages/settings/profile.tsx +++ b/pages/settings/profile.tsx @@ -15,7 +15,7 @@ export default function Settings(props) { const [successModalOpen, setSuccessModalOpen] = useState(false); const usernameRef = useRef(); const nameRef = useRef(); - const descriptionRef = useRef(); + const descriptionRef = useRef(); const avatarRef = useRef(); const [ selectedTimeZone, setSelectedTimeZone ] = useState({ value: props.user.timeZone }); From 27eb9ad95ec05fa2a117f602510f63cc6aa5af87 Mon Sep 17 00:00:00 2001 From: Bailey Pumfleet Date: Fri, 30 Apr 2021 13:06:04 +0100 Subject: [PATCH 17/19] Fix cancel link on booking page --- pages/[user]/book.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pages/[user]/book.tsx b/pages/[user]/book.tsx index 537c0437..2ec3e924 100644 --- a/pages/[user]/book.tsx +++ b/pages/[user]/book.tsx @@ -74,7 +74,7 @@ export default function Book(props) {
    - + Cancel
    @@ -108,6 +108,7 @@ export async function getServerSideProps(context) { select: { id: true, title: true, + slug: true, description: true, length: true } From 7b8d0b1119eb50d5e9d3167e56abcda8d0f8b1b1 Mon Sep 17 00:00:00 2001 From: Alex van Andel Date: Fri, 30 Apr 2021 21:14:26 +0000 Subject: [PATCH 18/19] Implemented getCsrfToken as per auth-next docs, getCsrfToken is required by webpack5 (fixes #123, thanks @jacobocode) --- pages/auth/login.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pages/auth/login.tsx b/pages/auth/login.tsx index 291e8f6e..ace1cbfe 100644 --- a/pages/auth/login.tsx +++ b/pages/auth/login.tsx @@ -1,5 +1,5 @@ import Head from 'next/head'; -import { csrfToken } from 'next-auth/client'; +import { getCsrfToken } from 'next-auth/client'; export default function Login({ csrfToken }) { return ( @@ -13,7 +13,7 @@ export default function Login({ csrfToken }) { Sign in to your account
    - +
    @@ -26,7 +26,7 @@ export default function Login({ csrfToken }) {
    - +
    - +
    - + ) } -Login.getInitialProps = async (context) => { +Login.getInitialProps = async ({ req, res }) => { return { - csrfToken: await csrfToken(context) + csrfToken: await getCsrfToken({ req }) } } \ No newline at end of file From 75394eed7e28d447e47eff728a764e185991eacd Mon Sep 17 00:00:00 2001 From: Peer_Rich Date: Sun, 2 May 2021 19:35:55 +0100 Subject: [PATCH 19/19] Product Hunt Badge --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index d72aaee4..bacaa70e 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,12 @@ Let's face it: Calendly and other scheduling tools are awesome. It made our lives massively easier. We're using it for business meetings, seminars, yoga classes and even calls with our families. However, most tools are very limited in terms of control and customisations. That's where Calendso comes in. Self-hosted or hosted by us. White-label by design. API-driven and ready to be deployed on your own domain. Full control of your events and data. Calendso is to Calendly what GitLab is to GitHub. +### Product of the Month: April +#### Support us on [Product Hunt](https://www.producthunt.com/posts/calendso?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-calendso) + + +Calendso - The open source Calendly alternative | Product Hunt + ### Built With * [Next.js](https://nextjs.org/)