diff --git a/citrus/app/(organizers)/organizer/signup/page.tsx b/citrus/app/(organizers)/organizer/signup/page.tsx index 50b5786..074eba1 100644 --- a/citrus/app/(organizers)/organizer/signup/page.tsx +++ b/citrus/app/(organizers)/organizer/signup/page.tsx @@ -1,7 +1,7 @@ "use client" -import { useState, FormEvent, ChangeEvent} from "react"; +import { useState, FormEvent, ChangeEvent } from "react"; import styles from "./signup.module.css"; import { @@ -18,6 +18,8 @@ import { FormHelperText, InputRightElement } from "@chakra-ui/react"; +import { BASE_URL } from "@/lib/vars"; +import { redirect } from "next/navigation"; const App = (): JSX.Element => { @@ -48,13 +50,21 @@ const App = (): JSX.Element => { // Handle form submission here const res = await fetch('/api/organizers', { method: 'POST', - body: JSON.stringify({org_id : org_id, display_name: org_id, password: password, email: email }), + body: JSON.stringify({ org_id: org_id, display_name: org_id, password: password, email: email }), }); + if (res.status === 200) { + redirect(BASE_URL + "/organizer/login"); + } else if (res.body) { + const body = await res.json(); + window.alert(body.error); + } else { + window.alert("Error signing up. Please try again."); + } }; return ( Chats +
  • + Premium! +
  • Organizer portal diff --git a/citrus/app/(users)/login/page.tsx b/citrus/app/(users)/login/page.tsx index 02e84b7..1ac8891 100644 --- a/citrus/app/(users)/login/page.tsx +++ b/citrus/app/(users)/login/page.tsx @@ -42,7 +42,7 @@ const App = (): JSX.Element => { const handleSubmit = async (e: FormEvent) => { e.preventDefault(); // Handle form submission here - signIn('user-credentials', {username: username, password: password, callbackUrl: '/user'}) + signIn('user-credentials', {username: username, password: password, callbackUrl: '/myExperiences'}) }; return ( diff --git a/citrus/app/(users)/user/page.tsx b/citrus/app/(users)/myExperiences/page.tsx similarity index 100% rename from citrus/app/(users)/user/page.tsx rename to citrus/app/(users)/myExperiences/page.tsx diff --git a/citrus/app/(users)/pricing/page.jsx b/citrus/app/(users)/pricing/page.jsx new file mode 100644 index 0000000..b489a0a --- /dev/null +++ b/citrus/app/(users)/pricing/page.jsx @@ -0,0 +1,35 @@ +'use client' +import axios from "axios" +import { useState, useEffect } from "react" +import PricingCard from "@/components/PricingCard" + +const Pricing = () => { + const [prices, setPrices] = useState([]); + + useEffect(() => { + fetchPrices() + }, []) + + + const fetchPrices = async () => { + const {data} = await axios.get('/api/getproducts') + setPrices(data) + } + + return ( +
    +
    +

    Pricing

    +

    Choose the right plan for you!

    +

    Check out all the information below

    +
    +
    + {prices && prices.map((price) => ( + + ))} +
    +
    + ) +} + +export default Pricing \ No newline at end of file diff --git a/citrus/app/(users)/signup/page.tsx b/citrus/app/(users)/signup/page.tsx index 3597099..6c66064 100644 --- a/citrus/app/(users)/signup/page.tsx +++ b/citrus/app/(users)/signup/page.tsx @@ -3,6 +3,8 @@ import { useState, FormEvent, ChangeEvent} from "react"; import styles from "./signup.module.css"; +import { redirect } from 'next/navigation' +import { BASE_URL } from "@/lib/vars"; import { Flex, @@ -19,7 +21,6 @@ import { InputRightElement } from "@chakra-ui/react"; - const App = (): JSX.Element => { const [showPassword, setShowPassword] = useState(false); const [email, setEmail] = useState(""); @@ -51,6 +52,14 @@ const handleSubmit = async (e: FormEvent) => { method: 'POST', body: JSON.stringify({"username" : username, "password": password, email: email }), }); + if (res.status === 200) { + redirect(BASE_URL + "/login"); + } else if (res.body) { + const body = await res.json(); + window.alert(body.error); + } else { + window.alert("Error signing up. Please try again."); + } }; return ( diff --git a/citrus/app/(users)/success/[id]/page.tsx b/citrus/app/(users)/success/[id]/page.tsx new file mode 100644 index 0000000..558e50c --- /dev/null +++ b/citrus/app/(users)/success/[id]/page.tsx @@ -0,0 +1,59 @@ +import axios from "axios" +import { stripe } from "@/app/api/payment/route"; +import { redirect } from "next/navigation" +import * as db from "@/lib/db" +import { BASE_URL } from "@/lib/vars" +import { getServerSession } from "next-auth"; +import { authOptions } from "@/app/api/auth/[...nextauth]/route"; + + +export default async function Page({ params }: { params: { id: string } }) { + + const session = await getServerSession(authOptions) + + if (!session || !session.user) { + redirect(BASE_URL + '/login') + } + + const prisma = db.getClient(); + + let update = { + premium: true, + } + + const currentSession = await stripe.checkout.sessions.retrieve( + params.id + ) + + + if (currentSession.payment_status === 'paid') { + + try { + await prisma.users.update({ + where: {username: session.user.name}, + data: update + }); + } catch (e) { + return db.handleError(e); + } + + // Replace with stripe.checkout.sessions.expire() + if (currentSession.status == 'open'){ + const expireSession = await stripe.checkout.sessions.expire( + params.id + ) + } + } + + + return ( +
    +
    +

    Success!

    +
    +
    + +
    +
    + ) +} diff --git a/citrus/app/api/experiences/[id]/route.ts b/citrus/app/api/experiences/[id]/route.ts index 6dada19..1563d8a 100644 --- a/citrus/app/api/experiences/[id]/route.ts +++ b/citrus/app/api/experiences/[id]/route.ts @@ -5,6 +5,7 @@ import { attending_status_type } from '@prisma/client'; import { redirect } from 'next/navigation'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/app/api/auth/[...nextauth]/route'; +import { BASE_URL } from '@/lib/vars'; const prisma = db.getClient(); @@ -135,7 +136,7 @@ export async function PUT(request: Request, const body = await request.json() || undefined; if (session === null && addUser != null) { - redirect('/login') + redirect(BASE_URL + '/login') } diff --git a/citrus/app/api/experiences/route.ts b/citrus/app/api/experiences/route.ts index 95521cb..62bdb35 100644 --- a/citrus/app/api/experiences/route.ts +++ b/citrus/app/api/experiences/route.ts @@ -220,7 +220,6 @@ export async function GET(request: Request) { * @apiSuccessExample Success-Response: * HTTP/1.1 200 OK * { - * "id": "1", * "name": "Event 1", * "description": "This is the first event", * "location": "New York", @@ -240,6 +239,20 @@ export async function POST(request: Request) { const end_time = new Date(body.end_time); try { + if (body.user_id) { + const user = await prisma.users.findUnique({ + where: { + username: body.user_id + } + }); + if (!user) { + return NextResponse.json({ error: "Organizing user does not exist." }, { status: 400 }); + } + if (user.premium == false) { + return NextResponse.json({ error: "Organizing user does not have premium." }, { status: 400 }); + } + } + const event = await prisma.experiences.create({ data: { name: body.name, diff --git a/citrus/app/api/getproducts/route.js b/citrus/app/api/getproducts/route.js new file mode 100644 index 0000000..d056c2c --- /dev/null +++ b/citrus/app/api/getproducts/route.js @@ -0,0 +1,12 @@ +import Stripe from "stripe"; +import { NextResponse, NextRequest } from 'next/server'; + + +export async function GET(request) { + const stripe = new Stripe(process.env.STRIPE_SECRET_KEY); + const prices = await stripe.prices.list({ + limit: 1, + }); + + return NextResponse.json(prices.data.reverse()); +} diff --git a/citrus/app/api/payment/route.jsx b/citrus/app/api/payment/route.jsx new file mode 100644 index 0000000..6b3c28c --- /dev/null +++ b/citrus/app/api/payment/route.jsx @@ -0,0 +1,36 @@ +import Stripe from "stripe"; +import { NextResponse, NextRequest } from "next/server"; +import { redirect } from "next/navigation"; +import * as db from "@/lib/db" +import { getServerSession } from "next-auth"; +import { authOptions } from "../auth/[...nextauth]/route"; +import { BASE_URL } from "@/lib/vars"; + + +export const stripe = new Stripe(process.env.STRIPE_SECRET_KEY) + +export async function POST (request) { + const session = await getServerSession(authOptions); + + + if (!session || !session.user) { + redirect(BASE_URL + '/login') + } + + let data = await request.json(); + let priceId = data.priceId + + const stripeSession = await stripe.checkout.sessions.create({ + line_items: [ + { + price: priceId, + quantity: 1 + } + ], + mode: 'payment', + success_url: BASE_URL + '/success/{CHECKOUT_SESSION_ID}', + cancel_url: BASE_URL+ '/cancel', + }) + + return NextResponse.json(stripeSession.url) +} \ No newline at end of file diff --git a/citrus/components/AddEvent.tsx b/citrus/components/AddEvent.tsx index da47544..4fa476a 100644 --- a/citrus/components/AddEvent.tsx +++ b/citrus/components/AddEvent.tsx @@ -75,6 +75,17 @@ export default function AddEvent() { body: JSON.stringify({"name" : name, "description": description, "capacity": parseInt(capacity), "location": location, "start_time": start, "end_time": end, "category": category, "tags": tags.split(","), ...organizer_fields }), }); + + if (res.status === 200) { + window.alert("Event created successfully!"); + } + else if (res.body) { + const body = await res.json(); + window.alert("Event creation failed. " + body.error); + } + else { + window.alert("Event creation failed. " + res.statusText); + } }; if (!session) { diff --git a/citrus/components/EventCardHolder.tsx b/citrus/components/EventCardHolder.tsx index 236bcb3..66cd3ed 100644 --- a/citrus/components/EventCardHolder.tsx +++ b/citrus/components/EventCardHolder.tsx @@ -68,11 +68,11 @@ export default function EventCardHolder() { link = 'dashboard'; } } - else if(session?.user && route.includes('user')){ + else if(session?.user && route.includes('myExperiences')){ if (session?.user) { //basePathName = '/api/experiences?current_user_id=' + session.user.name; basePathName = '/api/statuses'; - link = 'user'; + link = 'myExperiences'; } } else { @@ -97,7 +97,7 @@ export default function EventCardHolder() { useEffect(() => { - if ((session?.user && (route.includes('organizer')) || route.includes('experiences') || route.includes('user'))) { + if ((session?.user && (route.includes('organizer')) || route.includes('experiences') || route.includes('myExperiences'))) { fetch(apiPathName) .then(res => res.json()) .then(data => { diff --git a/citrus/components/PricingCard.jsx b/citrus/components/PricingCard.jsx new file mode 100644 index 0000000..26a046d --- /dev/null +++ b/citrus/components/PricingCard.jsx @@ -0,0 +1,53 @@ +import axios from "axios" +import Link from "next/link" +import {AiFillCheckCircle} from 'react-icons/ai' + +const PricingCard = ({price}) => { + + + +// POST request +const handleSubscription = async (e) => { + e.preventDefault(); + const { data } = await axios.post('/api/payment', + { + priceId: price.id + }, + { + headers: { + "Content-Type": "application/json", + }, + } + ); + window.location.assign(data) +} + + return ( +
    +
    +
    +

    {price.nickname}

    +

    Premium Plan

    +
    +
    +
    +

    + {(price.unit_amount / 100).toLocaleString('en-US', { + style: 'currency', + currency: 'USD' + })} +

    +
    +
      +
    • Premium plan description
    • +
    + +
    +
    +
    + ) +} + +export default PricingCard \ No newline at end of file diff --git a/citrus/lib/vars.js b/citrus/lib/vars.js new file mode 100644 index 0000000..c7ba8cf --- /dev/null +++ b/citrus/lib/vars.js @@ -0,0 +1 @@ +export const BASE_URL = process.env.PROTOCOL_SCHEME + process.env.VERCEL_URL; \ No newline at end of file diff --git a/citrus/package-lock.json b/citrus/package-lock.json index 691e59f..68ef02a 100644 --- a/citrus/package-lock.json +++ b/citrus/package-lock.json @@ -23,6 +23,7 @@ "@types/react": "18.2.7", "@types/react-datepicker": "^4.11.2", "@types/react-dom": "18.2.4", + "axios": "^1.4.0", "ably": "^1.2.42", "autoprefixer": "10.4.14", "bcrypt": "^5.1.0", @@ -30,22 +31,28 @@ "eslint": "8.41.0", "eslint-config-next": "13.4.4", "fill-range": "^7.0.1", + "next": "^13.4.12", "got": "^13.0.0", "keyv": "^4.5.3", - "next": "^13.4.11", "next-auth": "^4.22.1", "password-validator": "^5.3.0", "pg": "^8.11.0", - "postcss": "8.4.24", "prisma": "^4.16.2", "react": "18.2.0", "react-datepicker": "^4.16.0", "react-dom": "18.2.0", - "react-icons": "^4.9.0", + "react-icons": "^4.10.1", "react-select": "^5.7.4", "react-infinite-scroll-component": "^6.1.0", "request": "^2.88.2", "streamsearch": "^1.1.0", + "stripe": "^12.16.0", + "typescript": "5.0.4" + }, + "devDependencies": { + "autoprefixer": "^10.4.14", + "postcss": "^8.4.27", + "tailwindcss": "^3.3.3" "tailwindcss": "3.3.2", "typescript": "5.0.4", "utf-8-validate": "^6.0.3" @@ -75,6 +82,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, "engines": { "node": ">=10" }, @@ -1714,6 +1722,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1727,6 +1736,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -1735,6 +1745,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -1742,12 +1753,14 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.18", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -1756,7 +1769,8 @@ "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true }, "node_modules/@keyvhq/core": { "version": "2.0.0", @@ -1798,9 +1812,9 @@ } }, "node_modules/@next/env": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.11.tgz", - "integrity": "sha512-BbPLOkfFFca+OpwSmGhNrl56B3ZzOFS4eJ85SpGTDpjlXoz7XFfS3MMOfjUCTuW1laTrQjm98I9Q30tsYpr8ew==" + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.12.tgz", + "integrity": "sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==" }, "node_modules/@next/eslint-plugin-next": { "version": "13.4.4", @@ -1830,9 +1844,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.11.tgz", - "integrity": "sha512-lc3vl7Wo5A6dnLoJKlURHx2Y8wvHPQBy2JmJ88r+xbATYSyy3U+1B0M0ycrtleIP3lmachoeai9V/8ITt+/AQQ==", + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.12.tgz", + "integrity": "sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==", "cpu": [ "arm64" ], @@ -1845,9 +1859,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.11.tgz", - "integrity": "sha512-0bSZrEcKSOywSeCJbqwE9B7nHd5CVB+J6vIjCKb0IUWzmireMn6OLu1fsZbNKNetpuVq2Fdk2dmUpYIXuSfGTg==", + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.12.tgz", + "integrity": "sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==", "cpu": [ "x64" ], @@ -1860,9 +1874,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.11.tgz", - "integrity": "sha512-BrSo2dYhbYSJksmzdj6uR+hz0ZNgVdWKeyVFou+SSHHm1JoviAOPv9QPBliK1LMoBVk5TA2FlTMS5zzYfm2mUw==", + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.12.tgz", + "integrity": "sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==", "cpu": [ "arm64" ], @@ -1875,9 +1889,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.11.tgz", - "integrity": "sha512-AWACRlOtmCO+KaRaPtltYdoRPHhXf1ywhc6vRxT0UnJvrFpbzDpncKHCadPWYlrOyT37bT1+9ye8tHxBjlNiuA==", + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.12.tgz", + "integrity": "sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==", "cpu": [ "arm64" ], @@ -1890,9 +1904,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.11.tgz", - "integrity": "sha512-JEC0lkHKSLeW82YeSeTO4GjcQ1996paE2+daFWFPJ6V1m0zJ/6FWGZEIivGdsZTUGy34pFFoYlo9QhDEeRZWHw==", + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.12.tgz", + "integrity": "sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==", "cpu": [ "x64" ], @@ -1905,9 +1919,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.11.tgz", - "integrity": "sha512-gBTXltxQf+2vGx7c5eBMYhh/TJ1IPTOWi75XhfdLhXP3CljupRZJiFzwTKYXk/XAEc3Vd/FL8DYJN5THog1t2Q==", + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.12.tgz", + "integrity": "sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==", "cpu": [ "x64" ], @@ -1920,9 +1934,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.11.tgz", - "integrity": "sha512-SlOMH+Ewh71/PQGM9hSoHoINNo0RFekMIJ/95JcLIRGLZLFj5jEFb44WT8ISmBFtkdZu7eSeIcnD615sCwwctw==", + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.12.tgz", + "integrity": "sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==", "cpu": [ "arm64" ], @@ -1935,9 +1949,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.11.tgz", - "integrity": "sha512-W0dipacpgzmqcJlqCwmMLEHg4nxGa6wUxS8tsABEcFDF/+UQA5p34H5rGsn+SoeGNmhK0Nsr+cDtVbEviDEf6w==", + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.12.tgz", + "integrity": "sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==", "cpu": [ "ia32" ], @@ -1950,9 +1964,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.11.tgz", - "integrity": "sha512-thNeqt0QtsvaNkRK+Ge31REyriGMJC3HlVwvC9z6b82+Q7Coz5Q/UvIX3HmKPr00UleSRCM4QPxH+YT6wrjOqw==", + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.12.tgz", + "integrity": "sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==", "cpu": [ "x64" ], @@ -2573,12 +2587,14 @@ "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2607,7 +2623,8 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true }, "node_modules/argparse": { "version": "2.0.1", @@ -2752,6 +2769,7 @@ "version": "10.4.14", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -2812,6 +2830,16 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/axobject-query": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", @@ -2880,6 +2908,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, "engines": { "node": ">=8" } @@ -2928,6 +2957,7 @@ "version": "4.21.7", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -3061,6 +3091,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, "engines": { "node": ">= 6" } @@ -3108,6 +3139,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "funding": [ { "type": "individual", @@ -3134,6 +3166,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -3222,6 +3255,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, "engines": { "node": ">= 6" } @@ -3315,6 +3349,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -3527,7 +3562,8 @@ "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true }, "node_modules/dir-glob": { "version": "3.0.1", @@ -3543,7 +3579,8 @@ "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true }, "node_modules/doctrine": { "version": "3.0.0", @@ -3577,7 +3614,8 @@ "node_modules/electron-to-chromium": { "version": "1.4.432", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.432.tgz", - "integrity": "sha512-yz3U/khQgAFT2HURJA3/F4fKIyO2r5eK09BQzBZFd6BvBSSaRuzKc2ZNBHtJcO75/EKiRYbVYJZ2RB0P4BuD2g==" + "integrity": "sha512-yz3U/khQgAFT2HURJA3/F4fKIyO2r5eK09BQzBZFd6BvBSSaRuzKc2ZNBHtJcO75/EKiRYbVYJZ2RB0P4BuD2g==", + "dev": true }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -3719,6 +3757,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, "engines": { "node": ">=6" } @@ -4281,6 +4320,25 @@ "node": ">=10" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -4289,6 +4347,19 @@ "is-callable": "^1.1.3" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -4322,6 +4393,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, "engines": { "node": "*" }, @@ -4415,6 +4487,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -4939,6 +5012,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -5275,6 +5349,7 @@ "version": "1.18.2", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "dev": true, "bin": { "jiti": "bin/jiti.js" } @@ -5412,6 +5487,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, "engines": { "node": ">=10" } @@ -5641,6 +5717,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -5670,11 +5747,11 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "node_modules/next": { - "version": "13.4.11", - "resolved": "https://registry.npmjs.org/next/-/next-13.4.11.tgz", - "integrity": "sha512-XlJClNF3OPCv99At3BA7TflcF5q2zJAuTcyE4l6f5LWN3Uh8FF4e8PhZfaBk0PKmsKL7yOMGele/UUzbLvLbzw==", + "version": "13.4.12", + "resolved": "https://registry.npmjs.org/next/-/next-13.4.12.tgz", + "integrity": "sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==", "dependencies": { - "@next/env": "13.4.11", + "@next/env": "13.4.12", "@swc/helpers": "0.5.1", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", @@ -5690,15 +5767,15 @@ "node": ">=16.8.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "13.4.11", - "@next/swc-darwin-x64": "13.4.11", - "@next/swc-linux-arm64-gnu": "13.4.11", - "@next/swc-linux-arm64-musl": "13.4.11", - "@next/swc-linux-x64-gnu": "13.4.11", - "@next/swc-linux-x64-musl": "13.4.11", - "@next/swc-win32-arm64-msvc": "13.4.11", - "@next/swc-win32-ia32-msvc": "13.4.11", - "@next/swc-win32-x64-msvc": "13.4.11" + "@next/swc-darwin-arm64": "13.4.12", + "@next/swc-darwin-x64": "13.4.12", + "@next/swc-linux-arm64-gnu": "13.4.12", + "@next/swc-linux-arm64-musl": "13.4.12", + "@next/swc-linux-x64-gnu": "13.4.12", + "@next/swc-linux-x64-musl": "13.4.12", + "@next/swc-win32-arm64-msvc": "13.4.12", + "@next/swc-win32-ia32-msvc": "13.4.12", + "@next/swc-win32-x64-msvc": "13.4.12" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -5806,7 +5883,8 @@ "node_modules/node-releases": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==" + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "dev": true }, "node_modules/nopt": { "version": "5.0.0", @@ -5826,6 +5904,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5834,6 +5913,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5918,6 +5998,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, "engines": { "node": ">= 6" } @@ -6334,6 +6415,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -6342,14 +6424,16 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, "engines": { "node": ">= 6" } }, "node_modules/postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -6377,6 +6461,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -6393,6 +6478,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, "dependencies": { "camelcase-css": "^2.0.1" }, @@ -6411,6 +6497,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, "dependencies": { "lilconfig": "^2.0.5", "yaml": "^2.1.1" @@ -6439,6 +6526,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.11" }, @@ -6457,6 +6545,7 @@ "version": "6.0.13", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -6468,7 +6557,8 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true }, "node_modules/postgres-array": { "version": "2.0.0", @@ -6564,6 +6654,11 @@ "react-is": "^16.13.1" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -6587,11 +6682,17 @@ } }, "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/queue-microtask": { @@ -6703,9 +6804,9 @@ } }, "node_modules/react-icons": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.9.0.tgz", - "integrity": "sha512-ijUnFr//ycebOqujtqtV9PFS7JjhWg0QU6ykURVHuL4cbofvRCf3f6GMn9+fBktEFQOIVZnuAYLZdiyadRQRFg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.10.1.tgz", + "integrity": "sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw==", "peerDependencies": { "react": "*" } @@ -6859,6 +6960,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, "dependencies": { "pify": "^2.3.0" } @@ -6880,6 +6982,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -7446,6 +7549,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stripe": { + "version": "12.16.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-12.16.0.tgz", + "integrity": "sha512-iwVkyZsS9KsWmEVK5qnbPeX/m94+Z3fXIRU7Q4iNBS2Zuj1spGIjLKMN3tejUs/ZZ2o7dCYFJvVdC2aZMYo8GA==", + "dependencies": { + "@types/node": ">=8.1.0", + "qs": "^6.11.0" + }, + "engines": { + "node": ">=12.*" + } + }, "node_modules/styled-jsx": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", @@ -7477,6 +7592,7 @@ "version": "3.32.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", + "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -7498,6 +7614,7 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7551,9 +7668,10 @@ } }, "node_modules/tailwindcss": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", - "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", + "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -7575,7 +7693,6 @@ "postcss-load-config": "^4.0.1", "postcss-nested": "^6.0.1", "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", "resolve": "^1.22.2", "sucrase": "^3.32.0" }, @@ -7620,6 +7737,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, "dependencies": { "any-promise": "^1.0.0" } @@ -7628,6 +7746,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -7708,7 +7827,8 @@ "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true }, "node_modules/tsconfig-paths": { "version": "3.14.2", @@ -7834,6 +7954,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -8101,6 +8222,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true, "engines": { "node": ">= 14" } diff --git a/citrus/package.json b/citrus/package.json index c518677..60c01cd 100644 --- a/citrus/package.json +++ b/citrus/package.json @@ -24,6 +24,7 @@ "@types/react": "18.2.7", "@types/react-datepicker": "^4.11.2", "@types/react-dom": "18.2.4", + "axios": "^1.4.0", "ably": "^1.2.42", "autoprefixer": "10.4.14", "bcrypt": "^5.1.0", @@ -31,22 +32,28 @@ "eslint": "8.41.0", "eslint-config-next": "13.4.4", "fill-range": "^7.0.1", + "next": "^13.4.12", "got": "^13.0.0", "keyv": "^4.5.3", - "next": "^13.4.11", "next-auth": "^4.22.1", "password-validator": "^5.3.0", "pg": "^8.11.0", - "postcss": "8.4.24", "prisma": "^4.16.2", "react": "18.2.0", "react-datepicker": "^4.16.0", "react-dom": "18.2.0", - "react-icons": "^4.9.0", + "react-icons": "^4.10.1", "react-select": "^5.7.4", "react-infinite-scroll-component": "^6.1.0", "request": "^2.88.2", "streamsearch": "^1.1.0", + "stripe": "^12.16.0", + "typescript": "5.0.4" + }, + "devDependencies": { + "autoprefixer": "^10.4.14", + "postcss": "^8.4.27", + "tailwindcss": "^3.3.3" "tailwindcss": "3.3.2", "typescript": "5.0.4", "utf-8-validate": "^6.0.3" diff --git a/citrus/tsconfig.json b/citrus/tsconfig.json index 492d280..706c9c9 100644 --- a/citrus/tsconfig.json +++ b/citrus/tsconfig.json @@ -24,7 +24,7 @@ "@/*": ["./*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "effects/AblyReactEffect.js"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "components/PricingCard.tsx", "app/api/getproducts/route.jsx", "app/(users)/success/page.tsx", "effects/AblyReactEffect.js"], "exclude": ["node_modules"], "typeRoots": ["./node_modules/@types", "./types"], }