├── .env.example
├── .eslintrc.json
├── .gitignore
├── LICENSE
├── README.md
├── components
├── Features.tsx
├── Footer.tsx
├── Form.tsx
├── Header.tsx
├── Preview.tsx
├── TriggerButton.tsx
└── Widget.tsx
├── lib
├── constants.ts
├── getIcon.ts
├── isURL.ts
└── types.ts
├── next-env.d.ts
├── next.config.js
├── package.json
├── pages
├── _app.tsx
├── api
│ ├── auth
│ │ └── [...nextauth].js
│ └── widget.ts
├── dashboard.tsx
├── index.tsx
└── widget
│ ├── panel
│ └── [slug].tsx
│ └── trigger.tsx
├── pnpm-lock.yaml
├── postcss.config.js
├── prisma
└── schema.prisma
├── public
├── favicon.ico
├── scripts
│ └── embed.min.js
└── vercel.svg
├── scripts
└── embed.js
├── styles
├── globals.css
└── nprogress.css
├── tailwind.config.js
├── tsconfig.json
└── types
└── next-auth.d.ts
/.env.example:
--------------------------------------------------------------------------------
1 | DATABASE_URL=
2 | GITHUB_CLIENT_ID=
3 | GITHUB_CLIENT_SECRET=
4 | GOOGLE_CLIENT_ID=
5 | GOOGLE_CLIENT_SECRET=
6 | NEXTAUTH_SECRET=
7 | NEXT_PUBLIC_CLOUDINARY_PRESET=
8 | NEXT_PUBLIC_CLOUDINARY_NAME=
9 | NEXTAUTH_URL=
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 | .pnpm-debug.log*
27 |
28 | # local env files
29 | .env*.local
30 | /*.env
31 |
32 | # vercel
33 | .vercel
34 |
35 | # typescript
36 | *.tsbuildinfo
37 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 ashish
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Ponsor
2 | getting sponsored made easy through widgets
3 |
4 | ### Tech Stack
5 | A lot of different tech and soft wares were used to create Ponsor, here is a list of the tech I used -
6 | - [Next.js](https://nextjs.org) - Framework
7 | - [PlanetScale](https://planetscale.com) - Database
8 | - [Tailwind CSS](https://tailwindcss.com) - Styling
9 | - [VS Code](https://code.visualstudio.com/) - Code Editor
10 | - [Next Auth](https://next-auth.js.org/) - Auth
11 | - [GitHub](https://github.com) - Code Base
12 | - [Prisma](https://prisma.io) - ORM
13 | - [Vercel](https://vercel.app) - Host
14 | - [Nprogress](https://ricostacruz.com/nprogress/) - Progress Bars
15 | - [React Hot Toast](https://react-hot-toast.com/) - Toast Notifications
16 | - [React Icons / Feather Icons](https://react-icons.github.io/react-icons/icons?name=fi) - Icons
17 | - [Favmoji](https://github.com/asrvd/favmoji) - Favicon as a service
18 |
19 | ### Run Locally
20 | - Clone the repository
21 | ```bash
22 | git clone https://github.com/asrvd/ponsor.git
23 | ```
24 | - Install dependencies
25 | ```bash
26 | cd ponsor
27 | pnpm i # or npm i
28 | ```
29 | - Create a `.env` file and put these env variables in it
30 | ```env
31 | DATABASE_URL=
32 | GITHUB_CLIENT_ID=
33 | GITHUB_CLIENT_SECRET=
34 | GOOGLE_CLIENT_ID=
35 | GOOGLE_CLIENT_SECRET=
36 | NEXTAUTH_SECRET=
37 | NEXT_PUBLIC_CLOUDINARY_PRESET=
38 | NEXT_PUBLIC_CLOUDINARY_NAME=
39 | NEXTAUTH_URL=
40 | ```
41 | - Fire up prisma
42 | ```bash
43 | pnpm dlx prisma db push # or npx prisma db push
44 | ```
45 | - Run the app
46 | ```bash
47 | pnpm run dev # or npm run dev
48 | ```
49 |
50 | ### License
51 | [MIT License](LICENSE)
52 |
53 | ### Contributing
54 | - Fork the repository
55 | - Create a new branch
56 | - Make your changes
57 | - Commit your changes
58 | - Push your changes to the main branch
59 | - Open a pull request
60 |
61 | ### Ending Note
62 | - This project was made for the [hashnode](https://hashnode.com) x [planetscale](https://planetscale.com) hackathon.
63 | - If you have any questions, suggestions or bug reports please open an issue.
64 | - Leave a star if you like the project.
65 | - If you like this project, please consider [supporting](https://www.buymeacoffee.com/asheeshh) me.
--------------------------------------------------------------------------------
/components/Features.tsx:
--------------------------------------------------------------------------------
1 | import { FiArrowRight } from "react-icons/fi";
2 | import { useRouter } from "next/router";
3 | import { features } from "../lib/constants";
4 |
5 | type FeatureProps = {
6 | showButton?: boolean;
7 | };
8 |
9 | type Feature = {
10 | title: string;
11 | description: string;
12 | icon: any;
13 | };
14 |
15 | export default function Features(props: FeatureProps) {
16 | const router = useRouter();
17 |
18 | return (
19 |
20 |
21 | Features
22 |
23 |
24 | {features.map((feature) => (
25 | <>
26 | {feature.map((f: Feature) => (
27 |
31 |
32 | {f.icon()} {f.title}
33 |
34 |
35 | {f.description}
36 |
37 |
38 | ))}
39 | >
40 | ))}
41 |
42 | {props.showButton && (
43 |
49 | )}
50 |
51 | );
52 | }
53 |
--------------------------------------------------------------------------------
/components/Footer.tsx:
--------------------------------------------------------------------------------
1 | export default function Footer() {
2 | return (
3 |
37 | );
38 | }
39 |
--------------------------------------------------------------------------------
/components/Form.tsx:
--------------------------------------------------------------------------------
1 | import {
2 | FiPlus,
3 | FiX,
4 | FiSave,
5 | FiChevronDown,
6 | FiCopy,
7 | FiCheck,
8 | } from "react-icons/fi";
9 | import { useState } from "react";
10 | import { isURL } from "../lib/isURL";
11 | import toast from "react-hot-toast";
12 | import { getIcon } from "../lib/getIcon";
13 | import { memo } from "react";
14 | import type { FormProps, DerivedLink, Slug } from "../lib/types";
15 | import { sponsorLinks } from "../lib/constants";
16 |
17 | export default memo(function PonsorForm({ ...props }: FormProps) {
18 | const [hasMadeChanges, setHasMadeChanges] = useState(false);
19 | const [copied, setCopied] = useState(false);
20 | const [addedLinkTypes, setAddedLinkTypes] = useState(
21 | props?.links?.map((link) => link.title) || []
22 | );
23 | const [addedLinks, setAddedLinks] = useState(
24 | props?.links?.map((link) => {
25 | return {
26 | url: link.url,
27 | title: link.title,
28 | icon: getIcon(link.type as Slug),
29 | type: link.type,
30 | };
31 | }) || []
32 | );
33 | const [currentLinkType, setCurrentLinkType] = useState("");
34 | const [currentLink, setCurrentLink] = useState("");
35 |
36 | return (
37 |
38 |
39 |
225 |
226 | {addedLinks.map((link) => (
227 |
231 |
237 | {link?.icon()}
238 | {link?.title}
239 |
240 |
256 |
257 | ))}
258 |
259 |
260 |
261 | );
262 | });
263 |
--------------------------------------------------------------------------------
/components/Header.tsx:
--------------------------------------------------------------------------------
1 | /* eslint-disable @next/next/no-img-element */
2 |
3 | import { useState, useRef, useEffect } from "react";
4 | import { signOut } from "next-auth/react";
5 | import { useRouter } from "next/router";
6 | import { motion } from "framer-motion";
7 | import { FiHome, FiLogOut, FiSliders } from "react-icons/fi";
8 | import { memo } from "react";
9 | import type { HeaderProps } from "../lib/types";
10 |
11 | export default memo(function Header(props: HeaderProps) {
12 | const router = useRouter();
13 | const ref = useRef();
14 | const [drawerOpen, setDrawerOpen] = useState(false);
15 | const currentLocation = router.pathname;
16 |
17 | useEffect(() => {
18 | const handleClickOutside = (event: any) => {
19 | if (ref.current && !ref.current?.contains(event.target)) {
20 | setDrawerOpen(false);
21 | }
22 | };
23 | document.addEventListener("mousedown", handleClickOutside);
24 | return () => {
25 | document.removeEventListener("mousedown", handleClickOutside);
26 | };
27 | }, [drawerOpen]);
28 |
29 | return (
30 |
34 |
router.push("/")}>
35 | ponsor
36 |
37 |
{
40 | setDrawerOpen(!drawerOpen);
41 | }}
42 | >
43 |
44 |

49 |
{props?.name}
50 |
51 | {drawerOpen && (
52 |
62 |
69 |
78 |
79 | )}
80 |
81 |
82 | );
83 | });
84 |
--------------------------------------------------------------------------------
/components/Preview.tsx:
--------------------------------------------------------------------------------
1 | /* eslint-disable @next/next/no-img-element */
2 |
3 | import { memo } from "react";
4 |
5 | export default memo(function Preview(props: any) {
6 | return (
7 |
8 |
9 |
10 |

15 |
16 | Sponsor {props.name}
17 |
18 |
{props.heading}
19 |
20 |
21 | {props?.links?.map((link: any) => (
22 |
36 | ))}
37 |
38 |
51 |
52 |
53 | );
54 | });
55 |
--------------------------------------------------------------------------------
/components/TriggerButton.tsx:
--------------------------------------------------------------------------------
1 | import { FiHeart } from "react-icons/fi";
2 |
3 | export default function TriggerButton() {
4 | return (
5 |
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/components/Widget.tsx:
--------------------------------------------------------------------------------
1 | /* eslint-disable @next/next/no-img-element */
2 | import { getIcon } from "../lib/getIcon";
3 | import type { WidgetProps } from "../lib/types";
4 |
5 | export default function WidgetComponent(props: WidgetProps) {
6 | return (
7 |
8 |
9 |
10 |

15 |
16 | Sponsor {props?.widget?.name}
17 |
18 |
19 | {props?.widget?.heading}
20 |
21 |
22 |
23 | {props?.links?.map((link: any) => (
24 |
39 | ))}
40 |
41 |
54 |
55 |
56 | );
57 | }
58 |
--------------------------------------------------------------------------------
/lib/constants.ts:
--------------------------------------------------------------------------------
1 | import {
2 | FiPenTool,
3 | FiSave,
4 | FiHeart,
5 | FiSliders,
6 | FiSmile,
7 | FiCopy,
8 | } from "react-icons/fi";
9 | import {
10 | SiPatreon,
11 | SiGithubsponsors,
12 | SiKofi,
13 | SiBuymeacoffee,
14 | SiOpencollective,
15 | SiLiberapay,
16 | SiPaypal,
17 | SiGumroad,
18 | } from "react-icons/si";
19 |
20 | export const features = [
21 | [
22 | {
23 | icon: FiPenTool,
24 | title: "Clean Widgets",
25 | description: "easy to make clean and beautiful widgets.",
26 | },
27 | {
28 | icon: FiSave,
29 | title: "Auth Support",
30 | description: "login with github or google to never lose your widget.",
31 | },
32 | {
33 | icon: FiSliders,
34 | title: "Customizable",
35 | description: "add upto 7 different sponsor methods to your widget.",
36 | },
37 | ],
38 | [
39 | {
40 | icon: FiCopy,
41 | title: "Embed Anywhere",
42 | description: "embed your widget on any site using script tags.",
43 | },
44 | {
45 | icon: FiSmile,
46 | title: "Easy to Use",
47 | description: "creating the widget is as easy as filling a form.",
48 | },
49 | {
50 | icon: FiHeart,
51 | title: "Free Forever",
52 | description: "ponsor is a completely free to use tool.",
53 | },
54 | ],
55 | ];
56 |
57 | export const sponsorLinks = [
58 | {
59 | name: "GitHub Sponsor",
60 | icon: SiGithubsponsors,
61 | },
62 | {
63 | name: "Buy me a coffee",
64 | icon: SiBuymeacoffee,
65 | },
66 | {
67 | name: "Kofi",
68 | icon: SiKofi,
69 | },
70 | {
71 | name: "Patreon",
72 | icon: SiPatreon,
73 | },
74 | {
75 | name: "Open Collective",
76 | icon: SiOpencollective,
77 | },
78 | {
79 | name: "Liberapay",
80 | icon: SiLiberapay,
81 | },
82 | {
83 | name: "PayPal",
84 | icon: SiPaypal,
85 | },
86 | {
87 | name: "Gumroad",
88 | icon: SiGumroad,
89 | },
90 | ];
91 |
--------------------------------------------------------------------------------
/lib/getIcon.ts:
--------------------------------------------------------------------------------
1 | import {
2 | SiPatreon,
3 | SiGithubsponsors,
4 | SiKofi,
5 | SiBuymeacoffee,
6 | SiOpencollective,
7 | SiLiberapay,
8 | SiPaypal,
9 | SiGumroad
10 | } from "react-icons/si";
11 | import type { Slug } from "./types";
12 |
13 | const slugToIcon = {
14 | patreon: SiPatreon,
15 | githubsponsor: SiGithubsponsors,
16 | kofi: SiKofi,
17 | buymeacoffee: SiBuymeacoffee,
18 | opencollective: SiOpencollective,
19 | liberapay: SiLiberapay,
20 | paypal: SiPaypal,
21 | gumroad: SiGumroad
22 | };
23 |
24 | export function getIcon(slug: Slug) {
25 | return slugToIcon[slug];
26 | }
27 |
--------------------------------------------------------------------------------
/lib/isURL.ts:
--------------------------------------------------------------------------------
1 | export function isURL(url: string): boolean {
2 | return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(
3 | url
4 | );
5 | }
6 |
--------------------------------------------------------------------------------
/lib/types.ts:
--------------------------------------------------------------------------------
1 | import type { Widget, Link } from "@prisma/client";
2 | import type { Session } from "next-auth";
3 |
4 | export type Slug =
5 | | "patreon"
6 | | "githubsponsor"
7 | | "kofi"
8 | | "buymeacoffee"
9 | | "opencollective"
10 | | "liberapay"
11 | | "paypal"
12 | | "gumroad";
13 |
14 | export type FormData = {
15 | name?: string;
16 | image?: string;
17 | rawImage?: any;
18 | previewImage?: any;
19 | heading?: string;
20 | links: any[];
21 | };
22 |
23 | export type DashboardProps = {
24 | session?: Session;
25 | widget?: Widget;
26 | links?: Link[];
27 | };
28 |
29 | export type DerivedLink = {
30 | url: string;
31 | title: string;
32 | type: string;
33 | icon: any;
34 | };
35 |
36 | export type FormProps = {
37 | widget?: Widget;
38 | links?: DerivedLink[];
39 | uploadImage: (e: any) => void;
40 | addLink: (link: DerivedLink) => void;
41 | removeLink: (linkName: string) => void;
42 | setHeading: (head: string) => void;
43 | setName: (name: string) => void;
44 | handleSave: () => void;
45 | };
46 |
47 | export type HeaderProps = {
48 | name: string | any;
49 | image: string | any;
50 | };
51 |
52 | export type WidgetProps = {
53 | widget?: Widget;
54 | links?: Link[];
55 | };
56 |
--------------------------------------------------------------------------------
/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/basic-features/typescript for more information.
6 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: true,
4 | }
5 |
6 | module.exports = nextConfig
7 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "spm",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "npm run build-script && npm run build-app",
8 | "build-app": "next build",
9 | "build-script": "uglifyjs ./scripts/embed.js --output ./public/scripts/embed.min.js",
10 | "start": "next start",
11 | "lint": "next lint"
12 | },
13 | "dependencies": {
14 | "@next-auth/prisma-adapter": "^1.0.3",
15 | "@prisma/client": "^4.0.0",
16 | "axios": "^0.27.2",
17 | "framer-motion": "^6.5.1",
18 | "next": "12.2.0",
19 | "next-auth": "^4.9.0",
20 | "nprogress": "^0.2.0",
21 | "react": "18.2.0",
22 | "react-dom": "18.2.0",
23 | "react-hook-form": "^7.33.1",
24 | "react-hot-toast": "^2.2.0",
25 | "react-icons": "^4.4.0",
26 | "uglify-js": "^3.16.3"
27 | },
28 | "devDependencies": {
29 | "@types/node": "18.0.3",
30 | "@types/nprogress": "^0.2.0",
31 | "@types/react": "18.0.15",
32 | "@types/react-dom": "18.0.6",
33 | "autoprefixer": "^10.4.7",
34 | "eslint": "8.19.0",
35 | "eslint-config-next": "12.2.0",
36 | "postcss": "^8.4.14",
37 | "prisma": "^4.0.0",
38 | "tailwindcss": "^3.1.4",
39 | "typescript": "4.7.4"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | import "../styles/globals.css";
2 | import type { AppProps } from "next/app";
3 | import { SessionProvider } from "next-auth/react";
4 | import { Toaster } from "react-hot-toast";
5 | import NProgress from "nprogress";
6 | import { Router } from "next/router";
7 | import "../styles/nprogress.css";
8 | import Head from "next/head";
9 | import Script from "next/script";
10 |
11 | function MyApp({ Component, pageProps: { session, ...pageProps } }: AppProps) {
12 | NProgress.configure({ showSpinner: false });
13 | Router.events.on("routeChangeStart", () => NProgress.start());
14 | Router.events.on("routeChangeComplete", () => NProgress.done());
15 | Router.events.on("routeChangeError", () => NProgress.done());
16 | return (
17 |
18 |
19 | ponsor
20 |
21 |
25 |
26 |
30 |
31 |
32 |
33 |
37 |
38 |
39 |
40 |
41 |
42 | );
43 | }
44 |
45 | export default MyApp;
46 |
--------------------------------------------------------------------------------
/pages/api/auth/[...nextauth].js:
--------------------------------------------------------------------------------
1 | import NextAuth from "next-auth";
2 | import GithubProvider from "next-auth/providers/github";
3 | import GoogleProvider from "next-auth/providers/google";
4 | import { PrismaAdapter } from "@next-auth/prisma-adapter";
5 | import { PrismaClient } from "@prisma/client";
6 |
7 | const prisma = new PrismaClient();
8 |
9 | export default NextAuth({
10 | adapter: PrismaAdapter(prisma),
11 | providers: [
12 | GithubProvider({
13 | clientId: process.env.GITHUB_CLIENT_ID,
14 | clientSecret: process.env.GITHUB_CLIENT_SECRET,
15 | }),
16 | GoogleProvider({
17 | clientId: process.env.GOOGLE_CLIENT_ID,
18 | clientSecret: process.env.GOOGLE_CLIENT_SECRET,
19 | }),
20 | ],
21 | callbacks: {
22 | async session({ session, token, user }) {
23 | session = {
24 | ...session,
25 | user: {
26 | id: user.id,
27 | ...session.user,
28 | },
29 | };
30 | return session;
31 | },
32 | },
33 | });
34 |
--------------------------------------------------------------------------------
/pages/api/widget.ts:
--------------------------------------------------------------------------------
1 | import { PrismaClient } from "@prisma/client";
2 | import { getSession } from "next-auth/react";
3 |
4 | const prisma = new PrismaClient();
5 |
6 | import type { NextApiRequest, NextApiResponse } from "next";
7 |
8 | export type Link = {
9 | url: string;
10 | title: string;
11 | type: string;
12 | };
13 |
14 | export default async function handler(
15 | req: NextApiRequest,
16 | res: NextApiResponse
17 | ) {
18 | const session = await getSession({ req });
19 | const { name, heading, avatar, links } = req.body;
20 | if (!session) {
21 | return res.status(401).json({ message: "Not logged in" });
22 | }
23 | try {
24 | await prisma.user.update({
25 | where: {
26 | id: session.user.id,
27 | },
28 | data: {
29 | widget: {
30 | upsert: {
31 | create: {
32 | name,
33 | heading,
34 | avatar,
35 | links: {
36 | create: links,
37 | },
38 | },
39 | update: {
40 | name,
41 | heading,
42 | avatar,
43 | links: {
44 | deleteMany: {},
45 | create: links,
46 | },
47 | },
48 | },
49 | },
50 | },
51 | });
52 | res.status(200).json({ message: "Widget created" });
53 | } catch (error) {
54 | console.log(error);
55 | res.status(500).json({ message: "Something went wrong" });
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/pages/dashboard.tsx:
--------------------------------------------------------------------------------
1 | import { useSession, getSession } from "next-auth/react";
2 | import type { Session } from "next-auth";
3 | import { GetServerSideProps } from "next";
4 | import Header from "../components/Header";
5 | import Preview from "../components/Preview";
6 | import PonsorForm from "../components/Form";
7 | import { useState } from "react";
8 | import axios from "axios";
9 | import { PrismaClient } from "@prisma/client";
10 | import { getIcon } from "../lib/getIcon";
11 | import toast from "react-hot-toast";
12 | import Footer from "../components/Footer";
13 | import type { FormData, DashboardProps, Slug } from "../lib/types";
14 |
15 | const prisma = new PrismaClient();
16 |
17 | export default function Dashboard(props: DashboardProps) {
18 | const { data: session, status } = useSession();
19 | const [formData, setFormData] = useState({
20 | name: props?.widget?.name
21 | ? props?.widget?.name
22 | : (session?.user?.name as string),
23 | image: props?.widget?.avatar
24 | ? props?.widget?.avatar
25 | : (session?.user?.image as string),
26 | previewImage: props?.widget?.avatar
27 | ? props?.widget?.avatar
28 | : (session?.user?.image as string),
29 | rawImage: null,
30 | heading: props?.widget?.heading
31 | ? props?.widget?.heading
32 | : "loved the project? help me create more!",
33 | links: props?.links
34 | ? props?.links.map((link) => {
35 | return {
36 | url: link.url,
37 | title: link.title,
38 | icon: getIcon(link.type as Slug),
39 | type: link.type,
40 | };
41 | })
42 | : [],
43 | });
44 |
45 | let imageURL: string | null = null;
46 |
47 | const handleSave = async () => {
48 | if (formData.rawImage) {
49 | imageURL = await uploadImage();
50 | }
51 |
52 | let toastId = toast.loading("Saving...");
53 |
54 | const res = await axios.post("/api/widget", {
55 | name: formData.name,
56 | heading: formData.heading,
57 | avatar: imageURL !== null ? imageURL : formData.image,
58 | links: formData.links.map((link) => {
59 | return {
60 | url: link.url,
61 | title: link.title,
62 | type: link.type,
63 | };
64 | }),
65 | });
66 |
67 | if (res.status === 200) {
68 | toast.success("Saved!", {
69 | id: toastId,
70 | });
71 |
72 | setTimeout(() => {
73 | window.location.reload();
74 | }, 1000);
75 | } else {
76 | toast.error("Error saving! Try Again!", {
77 | id: toastId,
78 | });
79 | }
80 | };
81 |
82 | const uploadImage = async () => {
83 | const fileData = new FormData();
84 | fileData.append("file", formData.rawImage);
85 | fileData.append(
86 | "upload_preset",
87 | process.env.NEXT_PUBLIC_CLOUDINARY_PRESET as string
88 | );
89 | try {
90 | return axios
91 | .post(
92 | `https://api.cloudinary.com/v1_1/${process.env.NEXT_PUBLIC_CLOUDINARY_NAME}/image/upload`,
93 | fileData
94 | )
95 | .then((res) => {
96 | return res.data.secure_url;
97 | });
98 | } catch (err) {
99 | console.log(err);
100 | return null;
101 | }
102 | };
103 |
104 | return (
105 |
106 | {session?.user ? (
107 |
108 |
109 |
117 |
118 |
119 |
130 |
131 |
{
134 | return {
135 | url: link.url,
136 | title: link.title,
137 | type: link.type,
138 | icon: getIcon(link.type as Slug),
139 | };
140 | })}
141 | uploadImage={(e: any) => {
142 | e.preventDefault();
143 | setFormData({
144 | ...formData,
145 | previewImage: URL.createObjectURL(e.target.files[0]),
146 | rawImage: e.target.files[0],
147 | });
148 | }}
149 | addLink={(link: any) =>
150 | setFormData({ ...formData, links: [...formData.links, link] })
151 | }
152 | removeLink={(linkName: string) => {
153 | setFormData({
154 | ...formData,
155 | links: formData.links.filter(
156 | (link: any) => link.title !== linkName // here
157 | ),
158 | });
159 | }}
160 | setHeading={(head: string) => {
161 | setFormData({ ...formData, heading: head });
162 | }}
163 | setName={(name: string) => {
164 | setFormData({ ...formData, name: name });
165 | }}
166 | handleSave={handleSave}
167 | />
168 |
169 |
170 | ) : (
171 |
not signed in
172 | )}
173 |
174 |
175 | );
176 | }
177 |
178 | export const getServerSideProps: GetServerSideProps<{
179 | session: Session | null;
180 | }> = async (context) => {
181 | const sess = await getSession(context);
182 |
183 | if (!sess) {
184 | return {
185 | redirect: {
186 | destination: "/",
187 | permanent: false,
188 | },
189 | };
190 | }
191 |
192 | const widget = await prisma.widget.findUnique({
193 | where: {
194 | userId: sess.user.id,
195 | },
196 | });
197 |
198 | if (widget) {
199 | const links = await prisma.link.findMany({
200 | where: {
201 | widgetId: widget.id,
202 | },
203 | });
204 | return {
205 | props: {
206 | session: sess,
207 | widget: widget,
208 | links: links,
209 | },
210 | };
211 | }
212 |
213 | return {
214 | props: {
215 | session: sess,
216 | },
217 | };
218 | };
219 |
--------------------------------------------------------------------------------
/pages/index.tsx:
--------------------------------------------------------------------------------
1 | import type { NextPage } from "next";
2 | import { useSession, signIn, signOut } from "next-auth/react";
3 | import type { Session } from "next-auth";
4 | import { useRouter } from "next/router";
5 | import GitHub from "next-auth/providers/github";
6 | import Header from "../components/Header";
7 | import Script from "next/script";
8 | import { FiArrowRight, FiArrowDown } from "react-icons/fi";
9 | import { SiGoogle, SiGithub } from "react-icons/si";
10 | import Features from "../components/Features";
11 | import Footer from "../components/Footer";
12 |
13 | const Home: NextPage = () => {
14 | const { data: session } = useSession();
15 | const router = useRouter();
16 | if (session?.user) {
17 | return (
18 |
19 |
20 |
21 |
22 |
23 |
24 | ponsor
25 |
26 |
27 | use widgets in your websites to let people find a way to support
28 | your work!
29 |
30 |
36 |
37 |
38 |
39 |
40 |
41 |
46 |
47 |
48 |
49 |
54 |
55 | );
56 | }
57 | return (
58 |
59 |
60 |
61 | ponsor
62 |
63 |
64 | use widgets in your websites to let people find a way to support your
65 | work!
66 |
67 |
68 |
74 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
91 |
92 |
93 |
94 |
99 |
100 | );
101 | };
102 |
103 | export default Home;
104 |
--------------------------------------------------------------------------------
/pages/widget/panel/[slug].tsx:
--------------------------------------------------------------------------------
1 | import { PrismaClient } from "@prisma/client";
2 | import WidgetComponent from "../../../components/Widget";
3 |
4 | const prisma = new PrismaClient();
5 |
6 | export async function getStaticPaths() {
7 | const widgets = await prisma.widget.findMany();
8 | const paths = widgets.map((widget) => ({
9 | params: { slug: widget.userId },
10 | }));
11 | return { paths, fallback: true };
12 | }
13 |
14 | export async function getStaticProps({ params }: any) {
15 | const widget = await prisma.widget.findUnique({
16 | where: {
17 | userId: params.slug,
18 | },
19 | });
20 | const links = await prisma.link.findMany({
21 | where: {
22 | widgetId: widget?.id,
23 | },
24 | });
25 |
26 | if (widget) {
27 | return {
28 | props: {
29 | widget: widget,
30 | links: links,
31 | },
32 | revalidate: 1,
33 | };
34 | }
35 |
36 | return {
37 | redirect: {
38 | destination: "/",
39 | permanent: false,
40 | },
41 | };
42 | }
43 |
44 | export default function Widget({ widget, links }: any) {
45 | return (
46 |
47 |
48 |
49 | );
50 | }
51 |
--------------------------------------------------------------------------------
/pages/widget/trigger.tsx:
--------------------------------------------------------------------------------
1 | import TriggerButton from "../../components/TriggerButton";
2 |
3 | export default function Trigger() {
4 | return (
5 |
6 |
7 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | specifiers:
4 | '@next-auth/prisma-adapter': ^1.0.3
5 | '@prisma/client': ^4.0.0
6 | '@types/node': 18.0.3
7 | '@types/nprogress': ^0.2.0
8 | '@types/react': 18.0.15
9 | '@types/react-dom': 18.0.6
10 | autoprefixer: ^10.4.7
11 | axios: ^0.27.2
12 | eslint: 8.19.0
13 | eslint-config-next: 12.2.0
14 | framer-motion: ^6.5.1
15 | next: 12.2.0
16 | next-auth: ^4.9.0
17 | nprogress: ^0.2.0
18 | postcss: ^8.4.14
19 | prisma: ^4.0.0
20 | react: 18.2.0
21 | react-dom: 18.2.0
22 | react-hook-form: ^7.33.1
23 | react-hot-toast: ^2.2.0
24 | react-icons: ^4.4.0
25 | tailwindcss: ^3.1.4
26 | typescript: 4.7.4
27 | uglify-js: ^3.16.3
28 |
29 | dependencies:
30 | '@next-auth/prisma-adapter': 1.0.3_zbk22odcg35vk5ct4chga7myiy
31 | '@prisma/client': 4.0.0_prisma@4.0.0
32 | axios: 0.27.2
33 | framer-motion: 6.5.1_biqbaboplfbrettd7655fr4n2y
34 | next: 12.2.0_biqbaboplfbrettd7655fr4n2y
35 | next-auth: 4.9.0_biqbaboplfbrettd7655fr4n2y
36 | nprogress: 0.2.0
37 | react: 18.2.0
38 | react-dom: 18.2.0_react@18.2.0
39 | react-hook-form: 7.33.1_react@18.2.0
40 | react-hot-toast: 2.2.0_biqbaboplfbrettd7655fr4n2y
41 | react-icons: 4.4.0_react@18.2.0
42 | uglify-js: 3.16.3
43 |
44 | devDependencies:
45 | '@types/node': 18.0.3
46 | '@types/nprogress': 0.2.0
47 | '@types/react': 18.0.15
48 | '@types/react-dom': 18.0.6
49 | autoprefixer: 10.4.7_postcss@8.4.14
50 | eslint: 8.19.0
51 | eslint-config-next: 12.2.0_4x5o4skxv6sl53vpwefgt23khm
52 | postcss: 8.4.14
53 | prisma: 4.0.0
54 | tailwindcss: 3.1.4
55 | typescript: 4.7.4
56 |
57 | packages:
58 |
59 | /@babel/runtime-corejs3/7.18.6:
60 | resolution: {integrity: sha512-cOu5wH2JFBgMjje+a+fz2JNIWU4GzYpl05oSob3UDvBEh6EuIn+TXFHMmBbhSb+k/4HMzgKCQfEEDArAWNF9Cw==}
61 | engines: {node: '>=6.9.0'}
62 | dependencies:
63 | core-js-pure: 3.23.3
64 | regenerator-runtime: 0.13.9
65 | dev: true
66 |
67 | /@babel/runtime/7.18.6:
68 | resolution: {integrity: sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==}
69 | engines: {node: '>=6.9.0'}
70 | dependencies:
71 | regenerator-runtime: 0.13.9
72 |
73 | /@emotion/is-prop-valid/0.8.8:
74 | resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==}
75 | requiresBuild: true
76 | dependencies:
77 | '@emotion/memoize': 0.7.4
78 | dev: false
79 | optional: true
80 |
81 | /@emotion/memoize/0.7.4:
82 | resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==}
83 | dev: false
84 | optional: true
85 |
86 | /@eslint/eslintrc/1.3.0:
87 | resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==}
88 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
89 | dependencies:
90 | ajv: 6.12.6
91 | debug: 4.3.4
92 | espree: 9.3.2
93 | globals: 13.16.0
94 | ignore: 5.2.0
95 | import-fresh: 3.3.0
96 | js-yaml: 4.1.0
97 | minimatch: 3.1.2
98 | strip-json-comments: 3.1.1
99 | transitivePeerDependencies:
100 | - supports-color
101 | dev: true
102 |
103 | /@humanwhocodes/config-array/0.9.5:
104 | resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==}
105 | engines: {node: '>=10.10.0'}
106 | dependencies:
107 | '@humanwhocodes/object-schema': 1.2.1
108 | debug: 4.3.4
109 | minimatch: 3.1.2
110 | transitivePeerDependencies:
111 | - supports-color
112 | dev: true
113 |
114 | /@humanwhocodes/object-schema/1.2.1:
115 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
116 | dev: true
117 |
118 | /@motionone/animation/10.13.1:
119 | resolution: {integrity: sha512-dxQ+1wWxL6iFHDy1uv6hhcPjIdOg36eDT56jN4LI7Z5HZRyLpq8x1t7JFQclo/IEIb+6Bk4atmyinGFdXVECuA==}
120 | dependencies:
121 | '@motionone/easing': 10.13.1
122 | '@motionone/types': 10.13.0
123 | '@motionone/utils': 10.13.1
124 | tslib: 2.4.0
125 | dev: false
126 |
127 | /@motionone/dom/10.12.0:
128 | resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==}
129 | dependencies:
130 | '@motionone/animation': 10.13.1
131 | '@motionone/generators': 10.13.1
132 | '@motionone/types': 10.13.0
133 | '@motionone/utils': 10.13.1
134 | hey-listen: 1.0.8
135 | tslib: 2.4.0
136 | dev: false
137 |
138 | /@motionone/easing/10.13.1:
139 | resolution: {integrity: sha512-INEsInHHDHVgx0dp5qlXi1lMXBqYicgLMMSn3zfGzaIvcaEbI1Uz8BoyNV4BiclTupG7RYIh+T6BU83ZcEe74g==}
140 | dependencies:
141 | '@motionone/utils': 10.13.1
142 | tslib: 2.4.0
143 | dev: false
144 |
145 | /@motionone/generators/10.13.1:
146 | resolution: {integrity: sha512-+HK5u2YcNJCckTTqfOLgSVcrWv2z1dVwrSZEMVJuAh0EnWEWGDJRvMBoPc0cFf/osbkA2Rq9bH2+vP0Ex/D8uw==}
147 | dependencies:
148 | '@motionone/types': 10.13.0
149 | '@motionone/utils': 10.13.1
150 | tslib: 2.4.0
151 | dev: false
152 |
153 | /@motionone/types/10.13.0:
154 | resolution: {integrity: sha512-qegk4qg8U1N9ZwAJ187BG3TkZz1k9LP/pvNtCSlqdq/PMUDKlCFG4ZnjJ481P0IOH/vIw1OzIbKIuyg0A3rk9g==}
155 | dev: false
156 |
157 | /@motionone/utils/10.13.1:
158 | resolution: {integrity: sha512-TjDPTIppaf3ofBXQv4ZzAketJgN0sclALXfZ6mfrkjJkOy83mLls9744F+6S+VKCpBmvbZcBY4PQfrfhAfeMtA==}
159 | dependencies:
160 | '@motionone/types': 10.13.0
161 | hey-listen: 1.0.8
162 | tslib: 2.4.0
163 | dev: false
164 |
165 | /@next-auth/prisma-adapter/1.0.3_zbk22odcg35vk5ct4chga7myiy:
166 | resolution: {integrity: sha512-3Lq1cD3ytKM3EGKJZ4UZvlqshLtlPvYxLeCrUV9ifYwYlq51kmDaHjsIawlp8EbH5pE1UhlsvtlXMery7RghtA==}
167 | peerDependencies:
168 | '@prisma/client': '>=2.26.0 || >=3'
169 | next-auth: ^4.0.1
170 | dependencies:
171 | '@prisma/client': 4.0.0_prisma@4.0.0
172 | next-auth: 4.9.0_biqbaboplfbrettd7655fr4n2y
173 | dev: false
174 |
175 | /@next/env/12.2.0:
176 | resolution: {integrity: sha512-/FCkDpL/8SodJEXvx/DYNlOD5ijTtkozf4PPulYPtkPOJaMPpBSOkzmsta4fnrnbdH6eZjbwbiXFdr6gSQCV4w==}
177 | dev: false
178 |
179 | /@next/eslint-plugin-next/12.2.0:
180 | resolution: {integrity: sha512-nIj5xV/z3dOfeBnE7qFAjUQZAi4pTlIMuusRM6s/T6lOz8x7mjY5s1ZkTUBmcjPVCb2VIv3CrMH0WZL6xfjZZg==}
181 | dependencies:
182 | glob: 7.1.7
183 | dev: true
184 |
185 | /@next/swc-android-arm-eabi/12.2.0:
186 | resolution: {integrity: sha512-hbneH8DNRB2x0Nf5fPCYoL8a0osvdTCe4pvOc9Rv5CpDsoOlf8BWBs2OWpeP0U2BktGvIsuUhmISmdYYGyrvTw==}
187 | engines: {node: '>= 10'}
188 | cpu: [arm]
189 | os: [android]
190 | requiresBuild: true
191 | dev: false
192 | optional: true
193 |
194 | /@next/swc-android-arm64/12.2.0:
195 | resolution: {integrity: sha512-1eEk91JHjczcJomxJ8X0XaUeNcp5Lx1U2Ic7j15ouJ83oRX+3GIslOuabW2oPkSgXbHkThMClhirKpvG98kwZg==}
196 | engines: {node: '>= 10'}
197 | cpu: [arm64]
198 | os: [android]
199 | requiresBuild: true
200 | dev: false
201 | optional: true
202 |
203 | /@next/swc-darwin-arm64/12.2.0:
204 | resolution: {integrity: sha512-x5U5gJd7ZvrEtTFnBld9O2bUlX8opu7mIQUqRzj7KeWzBwPhrIzTTsQXAiNqsaMuaRPvyHBVW/5d/6g6+89Y8g==}
205 | engines: {node: '>= 10'}
206 | cpu: [arm64]
207 | os: [darwin]
208 | requiresBuild: true
209 | dev: false
210 | optional: true
211 |
212 | /@next/swc-darwin-x64/12.2.0:
213 | resolution: {integrity: sha512-iwMNFsrAPjfedjKDv9AXPAV16PWIomP3qw/FfPaxkDVRbUls7BNdofBLzkQmqxqWh93WrawLwaqyXpJuAaiwJA==}
214 | engines: {node: '>= 10'}
215 | cpu: [x64]
216 | os: [darwin]
217 | requiresBuild: true
218 | dev: false
219 | optional: true
220 |
221 | /@next/swc-freebsd-x64/12.2.0:
222 | resolution: {integrity: sha512-gRiAw8g3Akf6niTDLEm1Emfa7jXDjvaAj/crDO8hKASKA4Y1fS4kbi/tyWw5VtoFI4mUzRmCPmZ8eL0tBSG58A==}
223 | engines: {node: '>= 10'}
224 | cpu: [x64]
225 | os: [freebsd]
226 | requiresBuild: true
227 | dev: false
228 | optional: true
229 |
230 | /@next/swc-linux-arm-gnueabihf/12.2.0:
231 | resolution: {integrity: sha512-/TJZkxaIpeEwnXh6A40trgwd40C5+LJroLUOEQwMOJdavLl62PjCA6dGl1pgooWLCIb5YdBQ0EG4ylzvLwS2+Q==}
232 | engines: {node: '>= 10'}
233 | cpu: [arm]
234 | os: [linux]
235 | requiresBuild: true
236 | dev: false
237 | optional: true
238 |
239 | /@next/swc-linux-arm64-gnu/12.2.0:
240 | resolution: {integrity: sha512-++WAB4ElXCSOKG9H8r4ENF8EaV+w0QkrpjehmryFkQXmt5juVXz+nKDVlCRMwJU7A1O0Mie82XyEoOrf6Np1pA==}
241 | engines: {node: '>= 10'}
242 | cpu: [arm64]
243 | os: [linux]
244 | requiresBuild: true
245 | dev: false
246 | optional: true
247 |
248 | /@next/swc-linux-arm64-musl/12.2.0:
249 | resolution: {integrity: sha512-XrqkHi/VglEn5zs2CYK6ofJGQySrd+Lr4YdmfJ7IhsCnMKkQY1ma9Hv5THwhZVof3e+6oFHrQ9bWrw9K4WTjFA==}
250 | engines: {node: '>= 10'}
251 | cpu: [arm64]
252 | os: [linux]
253 | requiresBuild: true
254 | dev: false
255 | optional: true
256 |
257 | /@next/swc-linux-x64-gnu/12.2.0:
258 | resolution: {integrity: sha512-MyhHbAKVjpn065WzRbqpLu2krj4kHLi6RITQdD1ee+uxq9r2yg5Qe02l24NxKW+1/lkmpusl4Y5Lks7rBiJn4w==}
259 | engines: {node: '>= 10'}
260 | cpu: [x64]
261 | os: [linux]
262 | requiresBuild: true
263 | dev: false
264 | optional: true
265 |
266 | /@next/swc-linux-x64-musl/12.2.0:
267 | resolution: {integrity: sha512-Tz1tJZ5egE0S/UqCd5V6ZPJsdSzv/8aa7FkwFmIJ9neLS8/00za+OY5pq470iZQbPrkTwpKzmfTTIPRVD5iqDg==}
268 | engines: {node: '>= 10'}
269 | cpu: [x64]
270 | os: [linux]
271 | requiresBuild: true
272 | dev: false
273 | optional: true
274 |
275 | /@next/swc-win32-arm64-msvc/12.2.0:
276 | resolution: {integrity: sha512-0iRO/CPMCdCYUzuH6wXLnsfJX1ykBX4emOOvH0qIgtiZM0nVYbF8lkEyY2ph4XcsurpinS+ziWuYCXVqrOSqiw==}
277 | engines: {node: '>= 10'}
278 | cpu: [arm64]
279 | os: [win32]
280 | requiresBuild: true
281 | dev: false
282 | optional: true
283 |
284 | /@next/swc-win32-ia32-msvc/12.2.0:
285 | resolution: {integrity: sha512-8A26RJVcJHwIKm8xo/qk2ePRquJ6WCI2keV2qOW/Qm+ZXrPXHMIWPYABae/nKN243YFBNyPiHytjX37VrcpUhg==}
286 | engines: {node: '>= 10'}
287 | cpu: [ia32]
288 | os: [win32]
289 | requiresBuild: true
290 | dev: false
291 | optional: true
292 |
293 | /@next/swc-win32-x64-msvc/12.2.0:
294 | resolution: {integrity: sha512-OI14ozFLThEV3ey6jE47zrzSTV/6eIMsvbwozo+XfdWqOPwQ7X00YkRx4GVMKMC0rM44oGS2gmwMKYpe4EblnA==}
295 | engines: {node: '>= 10'}
296 | cpu: [x64]
297 | os: [win32]
298 | requiresBuild: true
299 | dev: false
300 | optional: true
301 |
302 | /@nodelib/fs.scandir/2.1.5:
303 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
304 | engines: {node: '>= 8'}
305 | dependencies:
306 | '@nodelib/fs.stat': 2.0.5
307 | run-parallel: 1.2.0
308 | dev: true
309 |
310 | /@nodelib/fs.stat/2.0.5:
311 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
312 | engines: {node: '>= 8'}
313 | dev: true
314 |
315 | /@nodelib/fs.walk/1.2.8:
316 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
317 | engines: {node: '>= 8'}
318 | dependencies:
319 | '@nodelib/fs.scandir': 2.1.5
320 | fastq: 1.13.0
321 | dev: true
322 |
323 | /@panva/hkdf/1.0.2:
324 | resolution: {integrity: sha512-MSAs9t3Go7GUkMhpKC44T58DJ5KGk2vBo+h1cqQeqlMfdGkxaVB78ZWpv9gYi/g2fa4sopag9gJsNvS8XGgWJA==}
325 | dev: false
326 |
327 | /@prisma/client/4.0.0_prisma@4.0.0:
328 | resolution: {integrity: sha512-g1h2OGoRo7anBVQ9Cw3gsbjwPtvf7i0pkGxKeZICtwkvE5CZXW+xZF4FZdmrViYkKaAShbISL0teNpu9ecpf4g==}
329 | engines: {node: '>=14.17'}
330 | requiresBuild: true
331 | peerDependencies:
332 | prisma: '*'
333 | peerDependenciesMeta:
334 | prisma:
335 | optional: true
336 | dependencies:
337 | '@prisma/engines-version': 3.16.0-49.da41d2bb3406da22087b849f0e911199ba4fbf11
338 | prisma: 4.0.0
339 | dev: false
340 |
341 | /@prisma/engines-version/3.16.0-49.da41d2bb3406da22087b849f0e911199ba4fbf11:
342 | resolution: {integrity: sha512-PiZhdD624SrYEjyLboI0X7OugNbxUzDJx9v/6ldTKuqNDVUCmRH/Z00XwDi/dgM4FlqOSO+YiUsSiSKjxxG8cw==}
343 | dev: false
344 |
345 | /@prisma/engines/3.16.0-49.da41d2bb3406da22087b849f0e911199ba4fbf11:
346 | resolution: {integrity: sha512-u/rG4lDHALolWBLr3yebZ+N2qImp3SDMcu7bHNJuRDaYvYEXy/MqfNRNEgd9GoPsXL3gofYf0VzJf2AmCG3YVw==}
347 | requiresBuild: true
348 |
349 | /@rushstack/eslint-patch/1.1.4:
350 | resolution: {integrity: sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==}
351 | dev: true
352 |
353 | /@swc/helpers/0.4.2:
354 | resolution: {integrity: sha512-556Az0VX7WR6UdoTn4htt/l3zPQ7bsQWK+HqdG4swV7beUCxo/BqmvbOpUkTIm/9ih86LIf1qsUnywNL3obGHw==}
355 | dependencies:
356 | tslib: 2.4.0
357 | dev: false
358 |
359 | /@types/json5/0.0.29:
360 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
361 | dev: true
362 |
363 | /@types/node/18.0.3:
364 | resolution: {integrity: sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==}
365 | dev: true
366 |
367 | /@types/nprogress/0.2.0:
368 | resolution: {integrity: sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==}
369 | dev: true
370 |
371 | /@types/prop-types/15.7.5:
372 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
373 | dev: true
374 |
375 | /@types/react-dom/18.0.6:
376 | resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==}
377 | dependencies:
378 | '@types/react': 18.0.15
379 | dev: true
380 |
381 | /@types/react/18.0.15:
382 | resolution: {integrity: sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==}
383 | dependencies:
384 | '@types/prop-types': 15.7.5
385 | '@types/scheduler': 0.16.2
386 | csstype: 3.1.0
387 | dev: true
388 |
389 | /@types/scheduler/0.16.2:
390 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
391 | dev: true
392 |
393 | /@typescript-eslint/parser/5.30.5_4x5o4skxv6sl53vpwefgt23khm:
394 | resolution: {integrity: sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==}
395 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
396 | peerDependencies:
397 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
398 | typescript: '*'
399 | peerDependenciesMeta:
400 | typescript:
401 | optional: true
402 | dependencies:
403 | '@typescript-eslint/scope-manager': 5.30.5
404 | '@typescript-eslint/types': 5.30.5
405 | '@typescript-eslint/typescript-estree': 5.30.5_typescript@4.7.4
406 | debug: 4.3.4
407 | eslint: 8.19.0
408 | typescript: 4.7.4
409 | transitivePeerDependencies:
410 | - supports-color
411 | dev: true
412 |
413 | /@typescript-eslint/scope-manager/5.30.5:
414 | resolution: {integrity: sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg==}
415 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
416 | dependencies:
417 | '@typescript-eslint/types': 5.30.5
418 | '@typescript-eslint/visitor-keys': 5.30.5
419 | dev: true
420 |
421 | /@typescript-eslint/types/5.30.5:
422 | resolution: {integrity: sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw==}
423 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
424 | dev: true
425 |
426 | /@typescript-eslint/typescript-estree/5.30.5_typescript@4.7.4:
427 | resolution: {integrity: sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ==}
428 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
429 | peerDependencies:
430 | typescript: '*'
431 | peerDependenciesMeta:
432 | typescript:
433 | optional: true
434 | dependencies:
435 | '@typescript-eslint/types': 5.30.5
436 | '@typescript-eslint/visitor-keys': 5.30.5
437 | debug: 4.3.4
438 | globby: 11.1.0
439 | is-glob: 4.0.3
440 | semver: 7.3.7
441 | tsutils: 3.21.0_typescript@4.7.4
442 | typescript: 4.7.4
443 | transitivePeerDependencies:
444 | - supports-color
445 | dev: true
446 |
447 | /@typescript-eslint/visitor-keys/5.30.5:
448 | resolution: {integrity: sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA==}
449 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
450 | dependencies:
451 | '@typescript-eslint/types': 5.30.5
452 | eslint-visitor-keys: 3.3.0
453 | dev: true
454 |
455 | /acorn-jsx/5.3.2_acorn@8.7.1:
456 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
457 | peerDependencies:
458 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
459 | dependencies:
460 | acorn: 8.7.1
461 | dev: true
462 |
463 | /acorn-node/1.8.2:
464 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==}
465 | dependencies:
466 | acorn: 7.4.1
467 | acorn-walk: 7.2.0
468 | xtend: 4.0.2
469 | dev: true
470 |
471 | /acorn-walk/7.2.0:
472 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
473 | engines: {node: '>=0.4.0'}
474 | dev: true
475 |
476 | /acorn/7.4.1:
477 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
478 | engines: {node: '>=0.4.0'}
479 | hasBin: true
480 | dev: true
481 |
482 | /acorn/8.7.1:
483 | resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==}
484 | engines: {node: '>=0.4.0'}
485 | hasBin: true
486 | dev: true
487 |
488 | /ajv/6.12.6:
489 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
490 | dependencies:
491 | fast-deep-equal: 3.1.3
492 | fast-json-stable-stringify: 2.1.0
493 | json-schema-traverse: 0.4.1
494 | uri-js: 4.4.1
495 | dev: true
496 |
497 | /ansi-regex/5.0.1:
498 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
499 | engines: {node: '>=8'}
500 | dev: true
501 |
502 | /ansi-styles/4.3.0:
503 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
504 | engines: {node: '>=8'}
505 | dependencies:
506 | color-convert: 2.0.1
507 | dev: true
508 |
509 | /anymatch/3.1.2:
510 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
511 | engines: {node: '>= 8'}
512 | dependencies:
513 | normalize-path: 3.0.0
514 | picomatch: 2.3.1
515 | dev: true
516 |
517 | /arg/5.0.2:
518 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
519 | dev: true
520 |
521 | /argparse/2.0.1:
522 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
523 | dev: true
524 |
525 | /aria-query/4.2.2:
526 | resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==}
527 | engines: {node: '>=6.0'}
528 | dependencies:
529 | '@babel/runtime': 7.18.6
530 | '@babel/runtime-corejs3': 7.18.6
531 | dev: true
532 |
533 | /array-includes/3.1.5:
534 | resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==}
535 | engines: {node: '>= 0.4'}
536 | dependencies:
537 | call-bind: 1.0.2
538 | define-properties: 1.1.4
539 | es-abstract: 1.20.1
540 | get-intrinsic: 1.1.2
541 | is-string: 1.0.7
542 | dev: true
543 |
544 | /array-union/2.1.0:
545 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
546 | engines: {node: '>=8'}
547 | dev: true
548 |
549 | /array.prototype.flat/1.3.0:
550 | resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==}
551 | engines: {node: '>= 0.4'}
552 | dependencies:
553 | call-bind: 1.0.2
554 | define-properties: 1.1.4
555 | es-abstract: 1.20.1
556 | es-shim-unscopables: 1.0.0
557 | dev: true
558 |
559 | /array.prototype.flatmap/1.3.0:
560 | resolution: {integrity: sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==}
561 | engines: {node: '>= 0.4'}
562 | dependencies:
563 | call-bind: 1.0.2
564 | define-properties: 1.1.4
565 | es-abstract: 1.20.1
566 | es-shim-unscopables: 1.0.0
567 | dev: true
568 |
569 | /ast-types-flow/0.0.7:
570 | resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==}
571 | dev: true
572 |
573 | /asynckit/0.4.0:
574 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
575 | dev: false
576 |
577 | /autoprefixer/10.4.7_postcss@8.4.14:
578 | resolution: {integrity: sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==}
579 | engines: {node: ^10 || ^12 || >=14}
580 | hasBin: true
581 | peerDependencies:
582 | postcss: ^8.1.0
583 | dependencies:
584 | browserslist: 4.21.1
585 | caniuse-lite: 1.0.30001363
586 | fraction.js: 4.2.0
587 | normalize-range: 0.1.2
588 | picocolors: 1.0.0
589 | postcss: 8.4.14
590 | postcss-value-parser: 4.2.0
591 | dev: true
592 |
593 | /axe-core/4.4.2:
594 | resolution: {integrity: sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA==}
595 | engines: {node: '>=12'}
596 | dev: true
597 |
598 | /axios/0.27.2:
599 | resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==}
600 | dependencies:
601 | follow-redirects: 1.15.1
602 | form-data: 4.0.0
603 | transitivePeerDependencies:
604 | - debug
605 | dev: false
606 |
607 | /axobject-query/2.2.0:
608 | resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==}
609 | dev: true
610 |
611 | /balanced-match/1.0.2:
612 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
613 | dev: true
614 |
615 | /binary-extensions/2.2.0:
616 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
617 | engines: {node: '>=8'}
618 | dev: true
619 |
620 | /brace-expansion/1.1.11:
621 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
622 | dependencies:
623 | balanced-match: 1.0.2
624 | concat-map: 0.0.1
625 | dev: true
626 |
627 | /braces/3.0.2:
628 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
629 | engines: {node: '>=8'}
630 | dependencies:
631 | fill-range: 7.0.1
632 | dev: true
633 |
634 | /browserslist/4.21.1:
635 | resolution: {integrity: sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==}
636 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
637 | hasBin: true
638 | dependencies:
639 | caniuse-lite: 1.0.30001363
640 | electron-to-chromium: 1.4.182
641 | node-releases: 2.0.5
642 | update-browserslist-db: 1.0.4_browserslist@4.21.1
643 | dev: true
644 |
645 | /call-bind/1.0.2:
646 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
647 | dependencies:
648 | function-bind: 1.1.1
649 | get-intrinsic: 1.1.2
650 | dev: true
651 |
652 | /callsites/3.1.0:
653 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
654 | engines: {node: '>=6'}
655 | dev: true
656 |
657 | /camelcase-css/2.0.1:
658 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
659 | engines: {node: '>= 6'}
660 | dev: true
661 |
662 | /caniuse-lite/1.0.30001363:
663 | resolution: {integrity: sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==}
664 |
665 | /chalk/4.1.2:
666 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
667 | engines: {node: '>=10'}
668 | dependencies:
669 | ansi-styles: 4.3.0
670 | supports-color: 7.2.0
671 | dev: true
672 |
673 | /chokidar/3.5.3:
674 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
675 | engines: {node: '>= 8.10.0'}
676 | dependencies:
677 | anymatch: 3.1.2
678 | braces: 3.0.2
679 | glob-parent: 5.1.2
680 | is-binary-path: 2.1.0
681 | is-glob: 4.0.3
682 | normalize-path: 3.0.0
683 | readdirp: 3.6.0
684 | optionalDependencies:
685 | fsevents: 2.3.2
686 | dev: true
687 |
688 | /color-convert/2.0.1:
689 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
690 | engines: {node: '>=7.0.0'}
691 | dependencies:
692 | color-name: 1.1.4
693 | dev: true
694 |
695 | /color-name/1.1.4:
696 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
697 | dev: true
698 |
699 | /combined-stream/1.0.8:
700 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
701 | engines: {node: '>= 0.8'}
702 | dependencies:
703 | delayed-stream: 1.0.0
704 | dev: false
705 |
706 | /concat-map/0.0.1:
707 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
708 | dev: true
709 |
710 | /cookie/0.4.2:
711 | resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
712 | engines: {node: '>= 0.6'}
713 | dev: false
714 |
715 | /core-js-pure/3.23.3:
716 | resolution: {integrity: sha512-XpoouuqIj4P+GWtdyV8ZO3/u4KftkeDVMfvp+308eGMhCrA3lVDSmAxO0c6GGOcmgVlaKDrgWVMo49h2ab/TDA==}
717 | requiresBuild: true
718 | dev: true
719 |
720 | /cross-spawn/7.0.3:
721 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
722 | engines: {node: '>= 8'}
723 | dependencies:
724 | path-key: 3.1.1
725 | shebang-command: 2.0.0
726 | which: 2.0.2
727 | dev: true
728 |
729 | /cssesc/3.0.0:
730 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
731 | engines: {node: '>=4'}
732 | hasBin: true
733 | dev: true
734 |
735 | /csstype/3.1.0:
736 | resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==}
737 | dev: true
738 |
739 | /damerau-levenshtein/1.0.8:
740 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
741 | dev: true
742 |
743 | /debug/2.6.9:
744 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
745 | peerDependencies:
746 | supports-color: '*'
747 | peerDependenciesMeta:
748 | supports-color:
749 | optional: true
750 | dependencies:
751 | ms: 2.0.0
752 | dev: true
753 |
754 | /debug/3.2.7:
755 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
756 | peerDependencies:
757 | supports-color: '*'
758 | peerDependenciesMeta:
759 | supports-color:
760 | optional: true
761 | dependencies:
762 | ms: 2.1.3
763 | dev: true
764 |
765 | /debug/4.3.4:
766 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
767 | engines: {node: '>=6.0'}
768 | peerDependencies:
769 | supports-color: '*'
770 | peerDependenciesMeta:
771 | supports-color:
772 | optional: true
773 | dependencies:
774 | ms: 2.1.2
775 | dev: true
776 |
777 | /deep-is/0.1.4:
778 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
779 | dev: true
780 |
781 | /define-properties/1.1.4:
782 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==}
783 | engines: {node: '>= 0.4'}
784 | dependencies:
785 | has-property-descriptors: 1.0.0
786 | object-keys: 1.1.1
787 | dev: true
788 |
789 | /defined/1.0.0:
790 | resolution: {integrity: sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==}
791 | dev: true
792 |
793 | /delayed-stream/1.0.0:
794 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
795 | engines: {node: '>=0.4.0'}
796 | dev: false
797 |
798 | /detective/5.2.1:
799 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==}
800 | engines: {node: '>=0.8.0'}
801 | hasBin: true
802 | dependencies:
803 | acorn-node: 1.8.2
804 | defined: 1.0.0
805 | minimist: 1.2.6
806 | dev: true
807 |
808 | /didyoumean/1.2.2:
809 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
810 | dev: true
811 |
812 | /dir-glob/3.0.1:
813 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
814 | engines: {node: '>=8'}
815 | dependencies:
816 | path-type: 4.0.0
817 | dev: true
818 |
819 | /dlv/1.1.3:
820 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
821 | dev: true
822 |
823 | /doctrine/2.1.0:
824 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
825 | engines: {node: '>=0.10.0'}
826 | dependencies:
827 | esutils: 2.0.3
828 | dev: true
829 |
830 | /doctrine/3.0.0:
831 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
832 | engines: {node: '>=6.0.0'}
833 | dependencies:
834 | esutils: 2.0.3
835 | dev: true
836 |
837 | /electron-to-chromium/1.4.182:
838 | resolution: {integrity: sha512-OpEjTADzGoXABjqobGhpy0D2YsTncAax7IkER68ycc4adaq0dqEG9//9aenKPy7BGA90bqQdLac0dPp6uMkcSg==}
839 | dev: true
840 |
841 | /emoji-regex/9.2.2:
842 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
843 | dev: true
844 |
845 | /es-abstract/1.20.1:
846 | resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==}
847 | engines: {node: '>= 0.4'}
848 | dependencies:
849 | call-bind: 1.0.2
850 | es-to-primitive: 1.2.1
851 | function-bind: 1.1.1
852 | function.prototype.name: 1.1.5
853 | get-intrinsic: 1.1.2
854 | get-symbol-description: 1.0.0
855 | has: 1.0.3
856 | has-property-descriptors: 1.0.0
857 | has-symbols: 1.0.3
858 | internal-slot: 1.0.3
859 | is-callable: 1.2.4
860 | is-negative-zero: 2.0.2
861 | is-regex: 1.1.4
862 | is-shared-array-buffer: 1.0.2
863 | is-string: 1.0.7
864 | is-weakref: 1.0.2
865 | object-inspect: 1.12.2
866 | object-keys: 1.1.1
867 | object.assign: 4.1.2
868 | regexp.prototype.flags: 1.4.3
869 | string.prototype.trimend: 1.0.5
870 | string.prototype.trimstart: 1.0.5
871 | unbox-primitive: 1.0.2
872 | dev: true
873 |
874 | /es-shim-unscopables/1.0.0:
875 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
876 | dependencies:
877 | has: 1.0.3
878 | dev: true
879 |
880 | /es-to-primitive/1.2.1:
881 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
882 | engines: {node: '>= 0.4'}
883 | dependencies:
884 | is-callable: 1.2.4
885 | is-date-object: 1.0.5
886 | is-symbol: 1.0.4
887 | dev: true
888 |
889 | /escalade/3.1.1:
890 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
891 | engines: {node: '>=6'}
892 | dev: true
893 |
894 | /escape-string-regexp/4.0.0:
895 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
896 | engines: {node: '>=10'}
897 | dev: true
898 |
899 | /eslint-config-next/12.2.0_4x5o4skxv6sl53vpwefgt23khm:
900 | resolution: {integrity: sha512-QWzNegadFXjQ0h3hixnLacRM9Kot85vQefyNsA8IeOnERZMz0Gvays1W6DMCjSxJbnCwuWaMXj9DCpar5IahRA==}
901 | peerDependencies:
902 | eslint: ^7.23.0 || ^8.0.0
903 | typescript: '>=3.3.1'
904 | peerDependenciesMeta:
905 | typescript:
906 | optional: true
907 | dependencies:
908 | '@next/eslint-plugin-next': 12.2.0
909 | '@rushstack/eslint-patch': 1.1.4
910 | '@typescript-eslint/parser': 5.30.5_4x5o4skxv6sl53vpwefgt23khm
911 | eslint: 8.19.0
912 | eslint-import-resolver-node: 0.3.6
913 | eslint-import-resolver-typescript: 2.7.1_q2xwze32dd33a2fc2qubwr4ie4
914 | eslint-plugin-import: 2.26.0_6o2fuefo7gfpbr7nbqwgu7w4mq
915 | eslint-plugin-jsx-a11y: 6.6.0_eslint@8.19.0
916 | eslint-plugin-react: 7.30.1_eslint@8.19.0
917 | eslint-plugin-react-hooks: 4.6.0_eslint@8.19.0
918 | typescript: 4.7.4
919 | transitivePeerDependencies:
920 | - eslint-import-resolver-webpack
921 | - supports-color
922 | dev: true
923 |
924 | /eslint-import-resolver-node/0.3.6:
925 | resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==}
926 | dependencies:
927 | debug: 3.2.7
928 | resolve: 1.22.1
929 | transitivePeerDependencies:
930 | - supports-color
931 | dev: true
932 |
933 | /eslint-import-resolver-typescript/2.7.1_q2xwze32dd33a2fc2qubwr4ie4:
934 | resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==}
935 | engines: {node: '>=4'}
936 | peerDependencies:
937 | eslint: '*'
938 | eslint-plugin-import: '*'
939 | dependencies:
940 | debug: 4.3.4
941 | eslint: 8.19.0
942 | eslint-plugin-import: 2.26.0_6o2fuefo7gfpbr7nbqwgu7w4mq
943 | glob: 7.2.3
944 | is-glob: 4.0.3
945 | resolve: 1.22.1
946 | tsconfig-paths: 3.14.1
947 | transitivePeerDependencies:
948 | - supports-color
949 | dev: true
950 |
951 | /eslint-module-utils/2.7.3_ngc5pgxzrdnldt43xbcfncn6si:
952 | resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==}
953 | engines: {node: '>=4'}
954 | peerDependencies:
955 | '@typescript-eslint/parser': '*'
956 | eslint-import-resolver-node: '*'
957 | eslint-import-resolver-typescript: '*'
958 | eslint-import-resolver-webpack: '*'
959 | peerDependenciesMeta:
960 | '@typescript-eslint/parser':
961 | optional: true
962 | eslint-import-resolver-node:
963 | optional: true
964 | eslint-import-resolver-typescript:
965 | optional: true
966 | eslint-import-resolver-webpack:
967 | optional: true
968 | dependencies:
969 | '@typescript-eslint/parser': 5.30.5_4x5o4skxv6sl53vpwefgt23khm
970 | debug: 3.2.7
971 | eslint-import-resolver-node: 0.3.6
972 | eslint-import-resolver-typescript: 2.7.1_q2xwze32dd33a2fc2qubwr4ie4
973 | find-up: 2.1.0
974 | transitivePeerDependencies:
975 | - supports-color
976 | dev: true
977 |
978 | /eslint-plugin-import/2.26.0_6o2fuefo7gfpbr7nbqwgu7w4mq:
979 | resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==}
980 | engines: {node: '>=4'}
981 | peerDependencies:
982 | '@typescript-eslint/parser': '*'
983 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
984 | peerDependenciesMeta:
985 | '@typescript-eslint/parser':
986 | optional: true
987 | dependencies:
988 | '@typescript-eslint/parser': 5.30.5_4x5o4skxv6sl53vpwefgt23khm
989 | array-includes: 3.1.5
990 | array.prototype.flat: 1.3.0
991 | debug: 2.6.9
992 | doctrine: 2.1.0
993 | eslint: 8.19.0
994 | eslint-import-resolver-node: 0.3.6
995 | eslint-module-utils: 2.7.3_ngc5pgxzrdnldt43xbcfncn6si
996 | has: 1.0.3
997 | is-core-module: 2.9.0
998 | is-glob: 4.0.3
999 | minimatch: 3.1.2
1000 | object.values: 1.1.5
1001 | resolve: 1.22.1
1002 | tsconfig-paths: 3.14.1
1003 | transitivePeerDependencies:
1004 | - eslint-import-resolver-typescript
1005 | - eslint-import-resolver-webpack
1006 | - supports-color
1007 | dev: true
1008 |
1009 | /eslint-plugin-jsx-a11y/6.6.0_eslint@8.19.0:
1010 | resolution: {integrity: sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw==}
1011 | engines: {node: '>=4.0'}
1012 | peerDependencies:
1013 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
1014 | dependencies:
1015 | '@babel/runtime': 7.18.6
1016 | aria-query: 4.2.2
1017 | array-includes: 3.1.5
1018 | ast-types-flow: 0.0.7
1019 | axe-core: 4.4.2
1020 | axobject-query: 2.2.0
1021 | damerau-levenshtein: 1.0.8
1022 | emoji-regex: 9.2.2
1023 | eslint: 8.19.0
1024 | has: 1.0.3
1025 | jsx-ast-utils: 3.3.2
1026 | language-tags: 1.0.5
1027 | minimatch: 3.1.2
1028 | semver: 6.3.0
1029 | dev: true
1030 |
1031 | /eslint-plugin-react-hooks/4.6.0_eslint@8.19.0:
1032 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
1033 | engines: {node: '>=10'}
1034 | peerDependencies:
1035 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
1036 | dependencies:
1037 | eslint: 8.19.0
1038 | dev: true
1039 |
1040 | /eslint-plugin-react/7.30.1_eslint@8.19.0:
1041 | resolution: {integrity: sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==}
1042 | engines: {node: '>=4'}
1043 | peerDependencies:
1044 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
1045 | dependencies:
1046 | array-includes: 3.1.5
1047 | array.prototype.flatmap: 1.3.0
1048 | doctrine: 2.1.0
1049 | eslint: 8.19.0
1050 | estraverse: 5.3.0
1051 | jsx-ast-utils: 3.3.2
1052 | minimatch: 3.1.2
1053 | object.entries: 1.1.5
1054 | object.fromentries: 2.0.5
1055 | object.hasown: 1.1.1
1056 | object.values: 1.1.5
1057 | prop-types: 15.8.1
1058 | resolve: 2.0.0-next.4
1059 | semver: 6.3.0
1060 | string.prototype.matchall: 4.0.7
1061 | dev: true
1062 |
1063 | /eslint-scope/7.1.1:
1064 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==}
1065 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1066 | dependencies:
1067 | esrecurse: 4.3.0
1068 | estraverse: 5.3.0
1069 | dev: true
1070 |
1071 | /eslint-utils/3.0.0_eslint@8.19.0:
1072 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
1073 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
1074 | peerDependencies:
1075 | eslint: '>=5'
1076 | dependencies:
1077 | eslint: 8.19.0
1078 | eslint-visitor-keys: 2.1.0
1079 | dev: true
1080 |
1081 | /eslint-visitor-keys/2.1.0:
1082 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
1083 | engines: {node: '>=10'}
1084 | dev: true
1085 |
1086 | /eslint-visitor-keys/3.3.0:
1087 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
1088 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1089 | dev: true
1090 |
1091 | /eslint/8.19.0:
1092 | resolution: {integrity: sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==}
1093 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1094 | hasBin: true
1095 | dependencies:
1096 | '@eslint/eslintrc': 1.3.0
1097 | '@humanwhocodes/config-array': 0.9.5
1098 | ajv: 6.12.6
1099 | chalk: 4.1.2
1100 | cross-spawn: 7.0.3
1101 | debug: 4.3.4
1102 | doctrine: 3.0.0
1103 | escape-string-regexp: 4.0.0
1104 | eslint-scope: 7.1.1
1105 | eslint-utils: 3.0.0_eslint@8.19.0
1106 | eslint-visitor-keys: 3.3.0
1107 | espree: 9.3.2
1108 | esquery: 1.4.0
1109 | esutils: 2.0.3
1110 | fast-deep-equal: 3.1.3
1111 | file-entry-cache: 6.0.1
1112 | functional-red-black-tree: 1.0.1
1113 | glob-parent: 6.0.2
1114 | globals: 13.16.0
1115 | ignore: 5.2.0
1116 | import-fresh: 3.3.0
1117 | imurmurhash: 0.1.4
1118 | is-glob: 4.0.3
1119 | js-yaml: 4.1.0
1120 | json-stable-stringify-without-jsonify: 1.0.1
1121 | levn: 0.4.1
1122 | lodash.merge: 4.6.2
1123 | minimatch: 3.1.2
1124 | natural-compare: 1.4.0
1125 | optionator: 0.9.1
1126 | regexpp: 3.2.0
1127 | strip-ansi: 6.0.1
1128 | strip-json-comments: 3.1.1
1129 | text-table: 0.2.0
1130 | v8-compile-cache: 2.3.0
1131 | transitivePeerDependencies:
1132 | - supports-color
1133 | dev: true
1134 |
1135 | /espree/9.3.2:
1136 | resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==}
1137 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1138 | dependencies:
1139 | acorn: 8.7.1
1140 | acorn-jsx: 5.3.2_acorn@8.7.1
1141 | eslint-visitor-keys: 3.3.0
1142 | dev: true
1143 |
1144 | /esquery/1.4.0:
1145 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
1146 | engines: {node: '>=0.10'}
1147 | dependencies:
1148 | estraverse: 5.3.0
1149 | dev: true
1150 |
1151 | /esrecurse/4.3.0:
1152 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1153 | engines: {node: '>=4.0'}
1154 | dependencies:
1155 | estraverse: 5.3.0
1156 | dev: true
1157 |
1158 | /estraverse/5.3.0:
1159 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1160 | engines: {node: '>=4.0'}
1161 | dev: true
1162 |
1163 | /esutils/2.0.3:
1164 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1165 | engines: {node: '>=0.10.0'}
1166 | dev: true
1167 |
1168 | /fast-deep-equal/3.1.3:
1169 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1170 | dev: true
1171 |
1172 | /fast-glob/3.2.11:
1173 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
1174 | engines: {node: '>=8.6.0'}
1175 | dependencies:
1176 | '@nodelib/fs.stat': 2.0.5
1177 | '@nodelib/fs.walk': 1.2.8
1178 | glob-parent: 5.1.2
1179 | merge2: 1.4.1
1180 | micromatch: 4.0.5
1181 | dev: true
1182 |
1183 | /fast-json-stable-stringify/2.1.0:
1184 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1185 | dev: true
1186 |
1187 | /fast-levenshtein/2.0.6:
1188 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1189 | dev: true
1190 |
1191 | /fastq/1.13.0:
1192 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
1193 | dependencies:
1194 | reusify: 1.0.4
1195 | dev: true
1196 |
1197 | /file-entry-cache/6.0.1:
1198 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1199 | engines: {node: ^10.12.0 || >=12.0.0}
1200 | dependencies:
1201 | flat-cache: 3.0.4
1202 | dev: true
1203 |
1204 | /fill-range/7.0.1:
1205 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1206 | engines: {node: '>=8'}
1207 | dependencies:
1208 | to-regex-range: 5.0.1
1209 | dev: true
1210 |
1211 | /find-up/2.1.0:
1212 | resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==}
1213 | engines: {node: '>=4'}
1214 | dependencies:
1215 | locate-path: 2.0.0
1216 | dev: true
1217 |
1218 | /flat-cache/3.0.4:
1219 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
1220 | engines: {node: ^10.12.0 || >=12.0.0}
1221 | dependencies:
1222 | flatted: 3.2.6
1223 | rimraf: 3.0.2
1224 | dev: true
1225 |
1226 | /flatted/3.2.6:
1227 | resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==}
1228 | dev: true
1229 |
1230 | /follow-redirects/1.15.1:
1231 | resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==}
1232 | engines: {node: '>=4.0'}
1233 | peerDependencies:
1234 | debug: '*'
1235 | peerDependenciesMeta:
1236 | debug:
1237 | optional: true
1238 | dev: false
1239 |
1240 | /form-data/4.0.0:
1241 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
1242 | engines: {node: '>= 6'}
1243 | dependencies:
1244 | asynckit: 0.4.0
1245 | combined-stream: 1.0.8
1246 | mime-types: 2.1.35
1247 | dev: false
1248 |
1249 | /fraction.js/4.2.0:
1250 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
1251 | dev: true
1252 |
1253 | /framer-motion/6.5.1_biqbaboplfbrettd7655fr4n2y:
1254 | resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==}
1255 | peerDependencies:
1256 | react: '>=16.8 || ^17.0.0 || ^18.0.0'
1257 | react-dom: '>=16.8 || ^17.0.0 || ^18.0.0'
1258 | dependencies:
1259 | '@motionone/dom': 10.12.0
1260 | framesync: 6.0.1
1261 | hey-listen: 1.0.8
1262 | popmotion: 11.0.3
1263 | react: 18.2.0
1264 | react-dom: 18.2.0_react@18.2.0
1265 | style-value-types: 5.0.0
1266 | tslib: 2.4.0
1267 | optionalDependencies:
1268 | '@emotion/is-prop-valid': 0.8.8
1269 | dev: false
1270 |
1271 | /framesync/6.0.1:
1272 | resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==}
1273 | dependencies:
1274 | tslib: 2.4.0
1275 | dev: false
1276 |
1277 | /fs.realpath/1.0.0:
1278 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1279 | dev: true
1280 |
1281 | /fsevents/2.3.2:
1282 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
1283 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1284 | os: [darwin]
1285 | requiresBuild: true
1286 | dev: true
1287 | optional: true
1288 |
1289 | /function-bind/1.1.1:
1290 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1291 | dev: true
1292 |
1293 | /function.prototype.name/1.1.5:
1294 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
1295 | engines: {node: '>= 0.4'}
1296 | dependencies:
1297 | call-bind: 1.0.2
1298 | define-properties: 1.1.4
1299 | es-abstract: 1.20.1
1300 | functions-have-names: 1.2.3
1301 | dev: true
1302 |
1303 | /functional-red-black-tree/1.0.1:
1304 | resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
1305 | dev: true
1306 |
1307 | /functions-have-names/1.2.3:
1308 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
1309 | dev: true
1310 |
1311 | /get-intrinsic/1.1.2:
1312 | resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==}
1313 | dependencies:
1314 | function-bind: 1.1.1
1315 | has: 1.0.3
1316 | has-symbols: 1.0.3
1317 | dev: true
1318 |
1319 | /get-symbol-description/1.0.0:
1320 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
1321 | engines: {node: '>= 0.4'}
1322 | dependencies:
1323 | call-bind: 1.0.2
1324 | get-intrinsic: 1.1.2
1325 | dev: true
1326 |
1327 | /glob-parent/5.1.2:
1328 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1329 | engines: {node: '>= 6'}
1330 | dependencies:
1331 | is-glob: 4.0.3
1332 | dev: true
1333 |
1334 | /glob-parent/6.0.2:
1335 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1336 | engines: {node: '>=10.13.0'}
1337 | dependencies:
1338 | is-glob: 4.0.3
1339 | dev: true
1340 |
1341 | /glob/7.1.7:
1342 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
1343 | dependencies:
1344 | fs.realpath: 1.0.0
1345 | inflight: 1.0.6
1346 | inherits: 2.0.4
1347 | minimatch: 3.1.2
1348 | once: 1.4.0
1349 | path-is-absolute: 1.0.1
1350 | dev: true
1351 |
1352 | /glob/7.2.3:
1353 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1354 | dependencies:
1355 | fs.realpath: 1.0.0
1356 | inflight: 1.0.6
1357 | inherits: 2.0.4
1358 | minimatch: 3.1.2
1359 | once: 1.4.0
1360 | path-is-absolute: 1.0.1
1361 | dev: true
1362 |
1363 | /globals/13.16.0:
1364 | resolution: {integrity: sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==}
1365 | engines: {node: '>=8'}
1366 | dependencies:
1367 | type-fest: 0.20.2
1368 | dev: true
1369 |
1370 | /globby/11.1.0:
1371 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1372 | engines: {node: '>=10'}
1373 | dependencies:
1374 | array-union: 2.1.0
1375 | dir-glob: 3.0.1
1376 | fast-glob: 3.2.11
1377 | ignore: 5.2.0
1378 | merge2: 1.4.1
1379 | slash: 3.0.0
1380 | dev: true
1381 |
1382 | /goober/2.1.10:
1383 | resolution: {integrity: sha512-7PpuQMH10jaTWm33sQgBQvz45pHR8N4l3Cu3WMGEWmHShAcTuuP7I+5/DwKo39fwti5A80WAjvqgz6SSlgWmGA==}
1384 | peerDependencies:
1385 | csstype: ^3.0.10
1386 | dev: false
1387 |
1388 | /has-bigints/1.0.2:
1389 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
1390 | dev: true
1391 |
1392 | /has-flag/4.0.0:
1393 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1394 | engines: {node: '>=8'}
1395 | dev: true
1396 |
1397 | /has-property-descriptors/1.0.0:
1398 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
1399 | dependencies:
1400 | get-intrinsic: 1.1.2
1401 | dev: true
1402 |
1403 | /has-symbols/1.0.3:
1404 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1405 | engines: {node: '>= 0.4'}
1406 | dev: true
1407 |
1408 | /has-tostringtag/1.0.0:
1409 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
1410 | engines: {node: '>= 0.4'}
1411 | dependencies:
1412 | has-symbols: 1.0.3
1413 | dev: true
1414 |
1415 | /has/1.0.3:
1416 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1417 | engines: {node: '>= 0.4.0'}
1418 | dependencies:
1419 | function-bind: 1.1.1
1420 | dev: true
1421 |
1422 | /hey-listen/1.0.8:
1423 | resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==}
1424 | dev: false
1425 |
1426 | /ignore/5.2.0:
1427 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==}
1428 | engines: {node: '>= 4'}
1429 | dev: true
1430 |
1431 | /import-fresh/3.3.0:
1432 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1433 | engines: {node: '>=6'}
1434 | dependencies:
1435 | parent-module: 1.0.1
1436 | resolve-from: 4.0.0
1437 | dev: true
1438 |
1439 | /imurmurhash/0.1.4:
1440 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1441 | engines: {node: '>=0.8.19'}
1442 | dev: true
1443 |
1444 | /inflight/1.0.6:
1445 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1446 | dependencies:
1447 | once: 1.4.0
1448 | wrappy: 1.0.2
1449 | dev: true
1450 |
1451 | /inherits/2.0.4:
1452 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1453 | dev: true
1454 |
1455 | /internal-slot/1.0.3:
1456 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==}
1457 | engines: {node: '>= 0.4'}
1458 | dependencies:
1459 | get-intrinsic: 1.1.2
1460 | has: 1.0.3
1461 | side-channel: 1.0.4
1462 | dev: true
1463 |
1464 | /is-bigint/1.0.4:
1465 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
1466 | dependencies:
1467 | has-bigints: 1.0.2
1468 | dev: true
1469 |
1470 | /is-binary-path/2.1.0:
1471 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1472 | engines: {node: '>=8'}
1473 | dependencies:
1474 | binary-extensions: 2.2.0
1475 | dev: true
1476 |
1477 | /is-boolean-object/1.1.2:
1478 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
1479 | engines: {node: '>= 0.4'}
1480 | dependencies:
1481 | call-bind: 1.0.2
1482 | has-tostringtag: 1.0.0
1483 | dev: true
1484 |
1485 | /is-callable/1.2.4:
1486 | resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==}
1487 | engines: {node: '>= 0.4'}
1488 | dev: true
1489 |
1490 | /is-core-module/2.9.0:
1491 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
1492 | dependencies:
1493 | has: 1.0.3
1494 | dev: true
1495 |
1496 | /is-date-object/1.0.5:
1497 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
1498 | engines: {node: '>= 0.4'}
1499 | dependencies:
1500 | has-tostringtag: 1.0.0
1501 | dev: true
1502 |
1503 | /is-extglob/2.1.1:
1504 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1505 | engines: {node: '>=0.10.0'}
1506 | dev: true
1507 |
1508 | /is-glob/4.0.3:
1509 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1510 | engines: {node: '>=0.10.0'}
1511 | dependencies:
1512 | is-extglob: 2.1.1
1513 | dev: true
1514 |
1515 | /is-negative-zero/2.0.2:
1516 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
1517 | engines: {node: '>= 0.4'}
1518 | dev: true
1519 |
1520 | /is-number-object/1.0.7:
1521 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
1522 | engines: {node: '>= 0.4'}
1523 | dependencies:
1524 | has-tostringtag: 1.0.0
1525 | dev: true
1526 |
1527 | /is-number/7.0.0:
1528 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1529 | engines: {node: '>=0.12.0'}
1530 | dev: true
1531 |
1532 | /is-regex/1.1.4:
1533 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
1534 | engines: {node: '>= 0.4'}
1535 | dependencies:
1536 | call-bind: 1.0.2
1537 | has-tostringtag: 1.0.0
1538 | dev: true
1539 |
1540 | /is-shared-array-buffer/1.0.2:
1541 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
1542 | dependencies:
1543 | call-bind: 1.0.2
1544 | dev: true
1545 |
1546 | /is-string/1.0.7:
1547 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
1548 | engines: {node: '>= 0.4'}
1549 | dependencies:
1550 | has-tostringtag: 1.0.0
1551 | dev: true
1552 |
1553 | /is-symbol/1.0.4:
1554 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
1555 | engines: {node: '>= 0.4'}
1556 | dependencies:
1557 | has-symbols: 1.0.3
1558 | dev: true
1559 |
1560 | /is-weakref/1.0.2:
1561 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
1562 | dependencies:
1563 | call-bind: 1.0.2
1564 | dev: true
1565 |
1566 | /isexe/2.0.0:
1567 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1568 | dev: true
1569 |
1570 | /jose/4.8.3:
1571 | resolution: {integrity: sha512-7rySkpW78d8LBp4YU70Wb7+OTgE3OwAALNVZxhoIhp4Kscp+p/fBkdpxGAMKxvCAMV4QfXBU9m6l9nX/vGwd2g==}
1572 | dev: false
1573 |
1574 | /js-tokens/4.0.0:
1575 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1576 |
1577 | /js-yaml/4.1.0:
1578 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1579 | hasBin: true
1580 | dependencies:
1581 | argparse: 2.0.1
1582 | dev: true
1583 |
1584 | /json-schema-traverse/0.4.1:
1585 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1586 | dev: true
1587 |
1588 | /json-stable-stringify-without-jsonify/1.0.1:
1589 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1590 | dev: true
1591 |
1592 | /json5/1.0.1:
1593 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==}
1594 | hasBin: true
1595 | dependencies:
1596 | minimist: 1.2.6
1597 | dev: true
1598 |
1599 | /jsx-ast-utils/3.3.2:
1600 | resolution: {integrity: sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==}
1601 | engines: {node: '>=4.0'}
1602 | dependencies:
1603 | array-includes: 3.1.5
1604 | object.assign: 4.1.2
1605 | dev: true
1606 |
1607 | /language-subtag-registry/0.3.22:
1608 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
1609 | dev: true
1610 |
1611 | /language-tags/1.0.5:
1612 | resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==}
1613 | dependencies:
1614 | language-subtag-registry: 0.3.22
1615 | dev: true
1616 |
1617 | /levn/0.4.1:
1618 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1619 | engines: {node: '>= 0.8.0'}
1620 | dependencies:
1621 | prelude-ls: 1.2.1
1622 | type-check: 0.4.0
1623 | dev: true
1624 |
1625 | /lilconfig/2.0.5:
1626 | resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==}
1627 | engines: {node: '>=10'}
1628 | dev: true
1629 |
1630 | /locate-path/2.0.0:
1631 | resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==}
1632 | engines: {node: '>=4'}
1633 | dependencies:
1634 | p-locate: 2.0.0
1635 | path-exists: 3.0.0
1636 | dev: true
1637 |
1638 | /lodash.merge/4.6.2:
1639 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1640 | dev: true
1641 |
1642 | /loose-envify/1.4.0:
1643 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1644 | hasBin: true
1645 | dependencies:
1646 | js-tokens: 4.0.0
1647 |
1648 | /lru-cache/6.0.0:
1649 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1650 | engines: {node: '>=10'}
1651 | dependencies:
1652 | yallist: 4.0.0
1653 |
1654 | /merge2/1.4.1:
1655 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1656 | engines: {node: '>= 8'}
1657 | dev: true
1658 |
1659 | /micromatch/4.0.5:
1660 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1661 | engines: {node: '>=8.6'}
1662 | dependencies:
1663 | braces: 3.0.2
1664 | picomatch: 2.3.1
1665 | dev: true
1666 |
1667 | /mime-db/1.52.0:
1668 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
1669 | engines: {node: '>= 0.6'}
1670 | dev: false
1671 |
1672 | /mime-types/2.1.35:
1673 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
1674 | engines: {node: '>= 0.6'}
1675 | dependencies:
1676 | mime-db: 1.52.0
1677 | dev: false
1678 |
1679 | /minimatch/3.1.2:
1680 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1681 | dependencies:
1682 | brace-expansion: 1.1.11
1683 | dev: true
1684 |
1685 | /minimist/1.2.6:
1686 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==}
1687 | dev: true
1688 |
1689 | /ms/2.0.0:
1690 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
1691 | dev: true
1692 |
1693 | /ms/2.1.2:
1694 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1695 | dev: true
1696 |
1697 | /ms/2.1.3:
1698 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1699 | dev: true
1700 |
1701 | /nanoid/3.3.4:
1702 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
1703 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1704 | hasBin: true
1705 |
1706 | /natural-compare/1.4.0:
1707 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1708 | dev: true
1709 |
1710 | /next-auth/4.9.0_biqbaboplfbrettd7655fr4n2y:
1711 | resolution: {integrity: sha512-/4S5dFeyNg2nXlD7g/Sh5A4WZWnUMDpEf8x/x+gzmAf5cAY2SjDM6sLk9u4XRmsndsxQpIMWDw03sUTAD+Yzog==}
1712 | engines: {node: ^12.19.0 || ^14.15.0 || ^16.13.0}
1713 | peerDependencies:
1714 | nodemailer: ^6.6.5
1715 | react: ^17.0.2 || ^18
1716 | react-dom: ^17.0.2 || ^18
1717 | peerDependenciesMeta:
1718 | nodemailer:
1719 | optional: true
1720 | dependencies:
1721 | '@babel/runtime': 7.18.6
1722 | '@panva/hkdf': 1.0.2
1723 | cookie: 0.4.2
1724 | jose: 4.8.3
1725 | oauth: 0.9.15
1726 | openid-client: 5.1.8
1727 | preact: 10.9.0
1728 | preact-render-to-string: 5.2.0_preact@10.9.0
1729 | react: 18.2.0
1730 | react-dom: 18.2.0_react@18.2.0
1731 | uuid: 8.3.2
1732 | dev: false
1733 |
1734 | /next/12.2.0_biqbaboplfbrettd7655fr4n2y:
1735 | resolution: {integrity: sha512-B4j7D3SHYopLYx6/Ark0fenwIar9tEaZZFAaxmKjgcMMexhVJzB3jt7X+6wcdXPPMeUD6r09weUtnDpjox/vIA==}
1736 | engines: {node: '>=12.22.0'}
1737 | hasBin: true
1738 | peerDependencies:
1739 | fibers: '>= 3.1.0'
1740 | node-sass: ^6.0.0 || ^7.0.0
1741 | react: ^17.0.2 || ^18.0.0-0
1742 | react-dom: ^17.0.2 || ^18.0.0-0
1743 | sass: ^1.3.0
1744 | peerDependenciesMeta:
1745 | fibers:
1746 | optional: true
1747 | node-sass:
1748 | optional: true
1749 | sass:
1750 | optional: true
1751 | dependencies:
1752 | '@next/env': 12.2.0
1753 | '@swc/helpers': 0.4.2
1754 | caniuse-lite: 1.0.30001363
1755 | postcss: 8.4.5
1756 | react: 18.2.0
1757 | react-dom: 18.2.0_react@18.2.0
1758 | styled-jsx: 5.0.2_react@18.2.0
1759 | use-sync-external-store: 1.1.0_react@18.2.0
1760 | optionalDependencies:
1761 | '@next/swc-android-arm-eabi': 12.2.0
1762 | '@next/swc-android-arm64': 12.2.0
1763 | '@next/swc-darwin-arm64': 12.2.0
1764 | '@next/swc-darwin-x64': 12.2.0
1765 | '@next/swc-freebsd-x64': 12.2.0
1766 | '@next/swc-linux-arm-gnueabihf': 12.2.0
1767 | '@next/swc-linux-arm64-gnu': 12.2.0
1768 | '@next/swc-linux-arm64-musl': 12.2.0
1769 | '@next/swc-linux-x64-gnu': 12.2.0
1770 | '@next/swc-linux-x64-musl': 12.2.0
1771 | '@next/swc-win32-arm64-msvc': 12.2.0
1772 | '@next/swc-win32-ia32-msvc': 12.2.0
1773 | '@next/swc-win32-x64-msvc': 12.2.0
1774 | transitivePeerDependencies:
1775 | - '@babel/core'
1776 | - babel-plugin-macros
1777 | dev: false
1778 |
1779 | /node-releases/2.0.5:
1780 | resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==}
1781 | dev: true
1782 |
1783 | /normalize-path/3.0.0:
1784 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1785 | engines: {node: '>=0.10.0'}
1786 | dev: true
1787 |
1788 | /normalize-range/0.1.2:
1789 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
1790 | engines: {node: '>=0.10.0'}
1791 | dev: true
1792 |
1793 | /nprogress/0.2.0:
1794 | resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
1795 | dev: false
1796 |
1797 | /oauth/0.9.15:
1798 | resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==}
1799 | dev: false
1800 |
1801 | /object-assign/4.1.1:
1802 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1803 | engines: {node: '>=0.10.0'}
1804 | dev: true
1805 |
1806 | /object-hash/2.2.0:
1807 | resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
1808 | engines: {node: '>= 6'}
1809 | dev: false
1810 |
1811 | /object-hash/3.0.0:
1812 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
1813 | engines: {node: '>= 6'}
1814 | dev: true
1815 |
1816 | /object-inspect/1.12.2:
1817 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==}
1818 | dev: true
1819 |
1820 | /object-keys/1.1.1:
1821 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1822 | engines: {node: '>= 0.4'}
1823 | dev: true
1824 |
1825 | /object.assign/4.1.2:
1826 | resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==}
1827 | engines: {node: '>= 0.4'}
1828 | dependencies:
1829 | call-bind: 1.0.2
1830 | define-properties: 1.1.4
1831 | has-symbols: 1.0.3
1832 | object-keys: 1.1.1
1833 | dev: true
1834 |
1835 | /object.entries/1.1.5:
1836 | resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==}
1837 | engines: {node: '>= 0.4'}
1838 | dependencies:
1839 | call-bind: 1.0.2
1840 | define-properties: 1.1.4
1841 | es-abstract: 1.20.1
1842 | dev: true
1843 |
1844 | /object.fromentries/2.0.5:
1845 | resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==}
1846 | engines: {node: '>= 0.4'}
1847 | dependencies:
1848 | call-bind: 1.0.2
1849 | define-properties: 1.1.4
1850 | es-abstract: 1.20.1
1851 | dev: true
1852 |
1853 | /object.hasown/1.1.1:
1854 | resolution: {integrity: sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==}
1855 | dependencies:
1856 | define-properties: 1.1.4
1857 | es-abstract: 1.20.1
1858 | dev: true
1859 |
1860 | /object.values/1.1.5:
1861 | resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==}
1862 | engines: {node: '>= 0.4'}
1863 | dependencies:
1864 | call-bind: 1.0.2
1865 | define-properties: 1.1.4
1866 | es-abstract: 1.20.1
1867 | dev: true
1868 |
1869 | /oidc-token-hash/5.0.1:
1870 | resolution: {integrity: sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ==}
1871 | engines: {node: ^10.13.0 || >=12.0.0}
1872 | dev: false
1873 |
1874 | /once/1.4.0:
1875 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1876 | dependencies:
1877 | wrappy: 1.0.2
1878 | dev: true
1879 |
1880 | /openid-client/5.1.8:
1881 | resolution: {integrity: sha512-EPxJY6bT7YIYQEXSGxRC5flQ3GUhLy98ufdto6+BVBrFGPmwjUpy4xBcYuU/Wt9nPkO/3EgljBrr6Ezx4lp1RQ==}
1882 | engines: {node: ^12.19.0 || ^14.15.0 || ^16.13.0}
1883 | dependencies:
1884 | jose: 4.8.3
1885 | lru-cache: 6.0.0
1886 | object-hash: 2.2.0
1887 | oidc-token-hash: 5.0.1
1888 | dev: false
1889 |
1890 | /optionator/0.9.1:
1891 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
1892 | engines: {node: '>= 0.8.0'}
1893 | dependencies:
1894 | deep-is: 0.1.4
1895 | fast-levenshtein: 2.0.6
1896 | levn: 0.4.1
1897 | prelude-ls: 1.2.1
1898 | type-check: 0.4.0
1899 | word-wrap: 1.2.3
1900 | dev: true
1901 |
1902 | /p-limit/1.3.0:
1903 | resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==}
1904 | engines: {node: '>=4'}
1905 | dependencies:
1906 | p-try: 1.0.0
1907 | dev: true
1908 |
1909 | /p-locate/2.0.0:
1910 | resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==}
1911 | engines: {node: '>=4'}
1912 | dependencies:
1913 | p-limit: 1.3.0
1914 | dev: true
1915 |
1916 | /p-try/1.0.0:
1917 | resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==}
1918 | engines: {node: '>=4'}
1919 | dev: true
1920 |
1921 | /parent-module/1.0.1:
1922 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1923 | engines: {node: '>=6'}
1924 | dependencies:
1925 | callsites: 3.1.0
1926 | dev: true
1927 |
1928 | /path-exists/3.0.0:
1929 | resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
1930 | engines: {node: '>=4'}
1931 | dev: true
1932 |
1933 | /path-is-absolute/1.0.1:
1934 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1935 | engines: {node: '>=0.10.0'}
1936 | dev: true
1937 |
1938 | /path-key/3.1.1:
1939 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1940 | engines: {node: '>=8'}
1941 | dev: true
1942 |
1943 | /path-parse/1.0.7:
1944 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1945 | dev: true
1946 |
1947 | /path-type/4.0.0:
1948 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1949 | engines: {node: '>=8'}
1950 | dev: true
1951 |
1952 | /picocolors/1.0.0:
1953 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1954 |
1955 | /picomatch/2.3.1:
1956 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1957 | engines: {node: '>=8.6'}
1958 | dev: true
1959 |
1960 | /pify/2.3.0:
1961 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
1962 | engines: {node: '>=0.10.0'}
1963 | dev: true
1964 |
1965 | /popmotion/11.0.3:
1966 | resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==}
1967 | dependencies:
1968 | framesync: 6.0.1
1969 | hey-listen: 1.0.8
1970 | style-value-types: 5.0.0
1971 | tslib: 2.4.0
1972 | dev: false
1973 |
1974 | /postcss-import/14.1.0_postcss@8.4.14:
1975 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==}
1976 | engines: {node: '>=10.0.0'}
1977 | peerDependencies:
1978 | postcss: ^8.0.0
1979 | dependencies:
1980 | postcss: 8.4.14
1981 | postcss-value-parser: 4.2.0
1982 | read-cache: 1.0.0
1983 | resolve: 1.22.1
1984 | dev: true
1985 |
1986 | /postcss-js/4.0.0_postcss@8.4.14:
1987 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
1988 | engines: {node: ^12 || ^14 || >= 16}
1989 | peerDependencies:
1990 | postcss: ^8.3.3
1991 | dependencies:
1992 | camelcase-css: 2.0.1
1993 | postcss: 8.4.14
1994 | dev: true
1995 |
1996 | /postcss-load-config/3.1.4_postcss@8.4.14:
1997 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
1998 | engines: {node: '>= 10'}
1999 | peerDependencies:
2000 | postcss: '>=8.0.9'
2001 | ts-node: '>=9.0.0'
2002 | peerDependenciesMeta:
2003 | postcss:
2004 | optional: true
2005 | ts-node:
2006 | optional: true
2007 | dependencies:
2008 | lilconfig: 2.0.5
2009 | postcss: 8.4.14
2010 | yaml: 1.10.2
2011 | dev: true
2012 |
2013 | /postcss-nested/5.0.6_postcss@8.4.14:
2014 | resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==}
2015 | engines: {node: '>=12.0'}
2016 | peerDependencies:
2017 | postcss: ^8.2.14
2018 | dependencies:
2019 | postcss: 8.4.14
2020 | postcss-selector-parser: 6.0.10
2021 | dev: true
2022 |
2023 | /postcss-selector-parser/6.0.10:
2024 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
2025 | engines: {node: '>=4'}
2026 | dependencies:
2027 | cssesc: 3.0.0
2028 | util-deprecate: 1.0.2
2029 | dev: true
2030 |
2031 | /postcss-value-parser/4.2.0:
2032 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
2033 | dev: true
2034 |
2035 | /postcss/8.4.14:
2036 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==}
2037 | engines: {node: ^10 || ^12 || >=14}
2038 | dependencies:
2039 | nanoid: 3.3.4
2040 | picocolors: 1.0.0
2041 | source-map-js: 1.0.2
2042 | dev: true
2043 |
2044 | /postcss/8.4.5:
2045 | resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==}
2046 | engines: {node: ^10 || ^12 || >=14}
2047 | dependencies:
2048 | nanoid: 3.3.4
2049 | picocolors: 1.0.0
2050 | source-map-js: 1.0.2
2051 | dev: false
2052 |
2053 | /preact-render-to-string/5.2.0_preact@10.9.0:
2054 | resolution: {integrity: sha512-+RGwSW78Cl+NsZRUbFW1MGB++didsfqRk+IyRVTaqy+3OjtpKK/6HgBtfszUX0YXMfo41k2iaQSseAHGKEwrbg==}
2055 | peerDependencies:
2056 | preact: '>=10'
2057 | dependencies:
2058 | preact: 10.9.0
2059 | pretty-format: 3.8.0
2060 | dev: false
2061 |
2062 | /preact/10.9.0:
2063 | resolution: {integrity: sha512-jO6/OvCRL+OT8gst/+Q2ir7dMybZAX8ioP02Zmzh3BkQMHLyqZSujvxbUriXvHi8qmhcHKC2Gwbog6Kt+YTh+Q==}
2064 | dev: false
2065 |
2066 | /prelude-ls/1.2.1:
2067 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
2068 | engines: {node: '>= 0.8.0'}
2069 | dev: true
2070 |
2071 | /pretty-format/3.8.0:
2072 | resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==}
2073 | dev: false
2074 |
2075 | /prisma/4.0.0:
2076 | resolution: {integrity: sha512-Dtsar03XpCBkcEb2ooGWO/WcgblDTLzGhPcustbehwlFXuTMliMDRzXsfygsgYwQoZnAUKRd1rhpvBNEUziOVw==}
2077 | engines: {node: '>=14.17'}
2078 | hasBin: true
2079 | requiresBuild: true
2080 | dependencies:
2081 | '@prisma/engines': 3.16.0-49.da41d2bb3406da22087b849f0e911199ba4fbf11
2082 |
2083 | /prop-types/15.8.1:
2084 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
2085 | dependencies:
2086 | loose-envify: 1.4.0
2087 | object-assign: 4.1.1
2088 | react-is: 16.13.1
2089 | dev: true
2090 |
2091 | /punycode/2.1.1:
2092 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
2093 | engines: {node: '>=6'}
2094 | dev: true
2095 |
2096 | /queue-microtask/1.2.3:
2097 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2098 | dev: true
2099 |
2100 | /quick-lru/5.1.1:
2101 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
2102 | engines: {node: '>=10'}
2103 | dev: true
2104 |
2105 | /react-dom/18.2.0_react@18.2.0:
2106 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
2107 | peerDependencies:
2108 | react: ^18.2.0
2109 | dependencies:
2110 | loose-envify: 1.4.0
2111 | react: 18.2.0
2112 | scheduler: 0.23.0
2113 | dev: false
2114 |
2115 | /react-hook-form/7.33.1_react@18.2.0:
2116 | resolution: {integrity: sha512-ydTfTxEJdvgjCZBj5DDXRc58oTEfnFupEwwTAQ9FSKzykEJkX+3CiAkGtAMiZG7IPWHuzgT6AOBfogiKhUvKgg==}
2117 | engines: {node: '>=12.22.0'}
2118 | peerDependencies:
2119 | react: ^16.8.0 || ^17 || ^18
2120 | dependencies:
2121 | react: 18.2.0
2122 | dev: false
2123 |
2124 | /react-hot-toast/2.2.0_biqbaboplfbrettd7655fr4n2y:
2125 | resolution: {integrity: sha512-248rXw13uhf/6TNDVzagX+y7R8J183rp7MwUMNkcrBRyHj/jWOggfXTGlM8zAOuh701WyVW+eUaWG2LeSufX9g==}
2126 | engines: {node: '>=10'}
2127 | peerDependencies:
2128 | react: '>=16'
2129 | react-dom: '>=16'
2130 | dependencies:
2131 | goober: 2.1.10
2132 | react: 18.2.0
2133 | react-dom: 18.2.0_react@18.2.0
2134 | transitivePeerDependencies:
2135 | - csstype
2136 | dev: false
2137 |
2138 | /react-icons/4.4.0_react@18.2.0:
2139 | resolution: {integrity: sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg==}
2140 | peerDependencies:
2141 | react: '*'
2142 | dependencies:
2143 | react: 18.2.0
2144 | dev: false
2145 |
2146 | /react-is/16.13.1:
2147 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
2148 | dev: true
2149 |
2150 | /react/18.2.0:
2151 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
2152 | engines: {node: '>=0.10.0'}
2153 | dependencies:
2154 | loose-envify: 1.4.0
2155 | dev: false
2156 |
2157 | /read-cache/1.0.0:
2158 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
2159 | dependencies:
2160 | pify: 2.3.0
2161 | dev: true
2162 |
2163 | /readdirp/3.6.0:
2164 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
2165 | engines: {node: '>=8.10.0'}
2166 | dependencies:
2167 | picomatch: 2.3.1
2168 | dev: true
2169 |
2170 | /regenerator-runtime/0.13.9:
2171 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==}
2172 |
2173 | /regexp.prototype.flags/1.4.3:
2174 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
2175 | engines: {node: '>= 0.4'}
2176 | dependencies:
2177 | call-bind: 1.0.2
2178 | define-properties: 1.1.4
2179 | functions-have-names: 1.2.3
2180 | dev: true
2181 |
2182 | /regexpp/3.2.0:
2183 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
2184 | engines: {node: '>=8'}
2185 | dev: true
2186 |
2187 | /resolve-from/4.0.0:
2188 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
2189 | engines: {node: '>=4'}
2190 | dev: true
2191 |
2192 | /resolve/1.22.1:
2193 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
2194 | hasBin: true
2195 | dependencies:
2196 | is-core-module: 2.9.0
2197 | path-parse: 1.0.7
2198 | supports-preserve-symlinks-flag: 1.0.0
2199 | dev: true
2200 |
2201 | /resolve/2.0.0-next.4:
2202 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
2203 | hasBin: true
2204 | dependencies:
2205 | is-core-module: 2.9.0
2206 | path-parse: 1.0.7
2207 | supports-preserve-symlinks-flag: 1.0.0
2208 | dev: true
2209 |
2210 | /reusify/1.0.4:
2211 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2212 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2213 | dev: true
2214 |
2215 | /rimraf/3.0.2:
2216 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2217 | hasBin: true
2218 | dependencies:
2219 | glob: 7.2.3
2220 | dev: true
2221 |
2222 | /run-parallel/1.2.0:
2223 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2224 | dependencies:
2225 | queue-microtask: 1.2.3
2226 | dev: true
2227 |
2228 | /scheduler/0.23.0:
2229 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
2230 | dependencies:
2231 | loose-envify: 1.4.0
2232 | dev: false
2233 |
2234 | /semver/6.3.0:
2235 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
2236 | hasBin: true
2237 | dev: true
2238 |
2239 | /semver/7.3.7:
2240 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==}
2241 | engines: {node: '>=10'}
2242 | hasBin: true
2243 | dependencies:
2244 | lru-cache: 6.0.0
2245 | dev: true
2246 |
2247 | /shebang-command/2.0.0:
2248 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2249 | engines: {node: '>=8'}
2250 | dependencies:
2251 | shebang-regex: 3.0.0
2252 | dev: true
2253 |
2254 | /shebang-regex/3.0.0:
2255 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2256 | engines: {node: '>=8'}
2257 | dev: true
2258 |
2259 | /side-channel/1.0.4:
2260 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
2261 | dependencies:
2262 | call-bind: 1.0.2
2263 | get-intrinsic: 1.1.2
2264 | object-inspect: 1.12.2
2265 | dev: true
2266 |
2267 | /slash/3.0.0:
2268 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2269 | engines: {node: '>=8'}
2270 | dev: true
2271 |
2272 | /source-map-js/1.0.2:
2273 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2274 | engines: {node: '>=0.10.0'}
2275 |
2276 | /string.prototype.matchall/4.0.7:
2277 | resolution: {integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==}
2278 | dependencies:
2279 | call-bind: 1.0.2
2280 | define-properties: 1.1.4
2281 | es-abstract: 1.20.1
2282 | get-intrinsic: 1.1.2
2283 | has-symbols: 1.0.3
2284 | internal-slot: 1.0.3
2285 | regexp.prototype.flags: 1.4.3
2286 | side-channel: 1.0.4
2287 | dev: true
2288 |
2289 | /string.prototype.trimend/1.0.5:
2290 | resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==}
2291 | dependencies:
2292 | call-bind: 1.0.2
2293 | define-properties: 1.1.4
2294 | es-abstract: 1.20.1
2295 | dev: true
2296 |
2297 | /string.prototype.trimstart/1.0.5:
2298 | resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==}
2299 | dependencies:
2300 | call-bind: 1.0.2
2301 | define-properties: 1.1.4
2302 | es-abstract: 1.20.1
2303 | dev: true
2304 |
2305 | /strip-ansi/6.0.1:
2306 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2307 | engines: {node: '>=8'}
2308 | dependencies:
2309 | ansi-regex: 5.0.1
2310 | dev: true
2311 |
2312 | /strip-bom/3.0.0:
2313 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
2314 | engines: {node: '>=4'}
2315 | dev: true
2316 |
2317 | /strip-json-comments/3.1.1:
2318 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2319 | engines: {node: '>=8'}
2320 | dev: true
2321 |
2322 | /style-value-types/5.0.0:
2323 | resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==}
2324 | dependencies:
2325 | hey-listen: 1.0.8
2326 | tslib: 2.4.0
2327 | dev: false
2328 |
2329 | /styled-jsx/5.0.2_react@18.2.0:
2330 | resolution: {integrity: sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==}
2331 | engines: {node: '>= 12.0.0'}
2332 | peerDependencies:
2333 | '@babel/core': '*'
2334 | babel-plugin-macros: '*'
2335 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
2336 | peerDependenciesMeta:
2337 | '@babel/core':
2338 | optional: true
2339 | babel-plugin-macros:
2340 | optional: true
2341 | dependencies:
2342 | react: 18.2.0
2343 | dev: false
2344 |
2345 | /supports-color/7.2.0:
2346 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2347 | engines: {node: '>=8'}
2348 | dependencies:
2349 | has-flag: 4.0.0
2350 | dev: true
2351 |
2352 | /supports-preserve-symlinks-flag/1.0.0:
2353 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2354 | engines: {node: '>= 0.4'}
2355 | dev: true
2356 |
2357 | /tailwindcss/3.1.4:
2358 | resolution: {integrity: sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==}
2359 | engines: {node: '>=12.13.0'}
2360 | hasBin: true
2361 | dependencies:
2362 | arg: 5.0.2
2363 | chokidar: 3.5.3
2364 | color-name: 1.1.4
2365 | detective: 5.2.1
2366 | didyoumean: 1.2.2
2367 | dlv: 1.1.3
2368 | fast-glob: 3.2.11
2369 | glob-parent: 6.0.2
2370 | is-glob: 4.0.3
2371 | lilconfig: 2.0.5
2372 | normalize-path: 3.0.0
2373 | object-hash: 3.0.0
2374 | picocolors: 1.0.0
2375 | postcss: 8.4.14
2376 | postcss-import: 14.1.0_postcss@8.4.14
2377 | postcss-js: 4.0.0_postcss@8.4.14
2378 | postcss-load-config: 3.1.4_postcss@8.4.14
2379 | postcss-nested: 5.0.6_postcss@8.4.14
2380 | postcss-selector-parser: 6.0.10
2381 | postcss-value-parser: 4.2.0
2382 | quick-lru: 5.1.1
2383 | resolve: 1.22.1
2384 | transitivePeerDependencies:
2385 | - ts-node
2386 | dev: true
2387 |
2388 | /text-table/0.2.0:
2389 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2390 | dev: true
2391 |
2392 | /to-regex-range/5.0.1:
2393 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2394 | engines: {node: '>=8.0'}
2395 | dependencies:
2396 | is-number: 7.0.0
2397 | dev: true
2398 |
2399 | /tsconfig-paths/3.14.1:
2400 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==}
2401 | dependencies:
2402 | '@types/json5': 0.0.29
2403 | json5: 1.0.1
2404 | minimist: 1.2.6
2405 | strip-bom: 3.0.0
2406 | dev: true
2407 |
2408 | /tslib/1.14.1:
2409 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
2410 | dev: true
2411 |
2412 | /tslib/2.4.0:
2413 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
2414 | dev: false
2415 |
2416 | /tsutils/3.21.0_typescript@4.7.4:
2417 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
2418 | engines: {node: '>= 6'}
2419 | peerDependencies:
2420 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
2421 | dependencies:
2422 | tslib: 1.14.1
2423 | typescript: 4.7.4
2424 | dev: true
2425 |
2426 | /type-check/0.4.0:
2427 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2428 | engines: {node: '>= 0.8.0'}
2429 | dependencies:
2430 | prelude-ls: 1.2.1
2431 | dev: true
2432 |
2433 | /type-fest/0.20.2:
2434 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2435 | engines: {node: '>=10'}
2436 | dev: true
2437 |
2438 | /typescript/4.7.4:
2439 | resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
2440 | engines: {node: '>=4.2.0'}
2441 | hasBin: true
2442 | dev: true
2443 |
2444 | /uglify-js/3.16.3:
2445 | resolution: {integrity: sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==}
2446 | engines: {node: '>=0.8.0'}
2447 | hasBin: true
2448 | dev: false
2449 |
2450 | /unbox-primitive/1.0.2:
2451 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
2452 | dependencies:
2453 | call-bind: 1.0.2
2454 | has-bigints: 1.0.2
2455 | has-symbols: 1.0.3
2456 | which-boxed-primitive: 1.0.2
2457 | dev: true
2458 |
2459 | /update-browserslist-db/1.0.4_browserslist@4.21.1:
2460 | resolution: {integrity: sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==}
2461 | hasBin: true
2462 | peerDependencies:
2463 | browserslist: '>= 4.21.0'
2464 | dependencies:
2465 | browserslist: 4.21.1
2466 | escalade: 3.1.1
2467 | picocolors: 1.0.0
2468 | dev: true
2469 |
2470 | /uri-js/4.4.1:
2471 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2472 | dependencies:
2473 | punycode: 2.1.1
2474 | dev: true
2475 |
2476 | /use-sync-external-store/1.1.0_react@18.2.0:
2477 | resolution: {integrity: sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ==}
2478 | peerDependencies:
2479 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
2480 | dependencies:
2481 | react: 18.2.0
2482 | dev: false
2483 |
2484 | /util-deprecate/1.0.2:
2485 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2486 | dev: true
2487 |
2488 | /uuid/8.3.2:
2489 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
2490 | hasBin: true
2491 | dev: false
2492 |
2493 | /v8-compile-cache/2.3.0:
2494 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
2495 | dev: true
2496 |
2497 | /which-boxed-primitive/1.0.2:
2498 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
2499 | dependencies:
2500 | is-bigint: 1.0.4
2501 | is-boolean-object: 1.1.2
2502 | is-number-object: 1.0.7
2503 | is-string: 1.0.7
2504 | is-symbol: 1.0.4
2505 | dev: true
2506 |
2507 | /which/2.0.2:
2508 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2509 | engines: {node: '>= 8'}
2510 | hasBin: true
2511 | dependencies:
2512 | isexe: 2.0.0
2513 | dev: true
2514 |
2515 | /word-wrap/1.2.3:
2516 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
2517 | engines: {node: '>=0.10.0'}
2518 | dev: true
2519 |
2520 | /wrappy/1.0.2:
2521 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2522 | dev: true
2523 |
2524 | /xtend/4.0.2:
2525 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
2526 | engines: {node: '>=0.4'}
2527 | dev: true
2528 |
2529 | /yallist/4.0.0:
2530 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2531 |
2532 | /yaml/1.10.2:
2533 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
2534 | engines: {node: '>= 6'}
2535 | dev: true
2536 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/prisma/schema.prisma:
--------------------------------------------------------------------------------
1 | generator client {
2 | provider = "prisma-client-js"
3 | previewFeatures = ["referentialIntegrity"]
4 | }
5 |
6 | datasource db {
7 | provider = "mysql"
8 | url = env("DATABASE_URL")
9 | referentialIntegrity = "prisma"
10 | }
11 |
12 | model Link {
13 | id Int @id @default(autoincrement())
14 | url String
15 | title String
16 | type String
17 | Widget Widget? @relation(fields: [widgetId], references: [id])
18 | widgetId Int?
19 | }
20 |
21 | model Widget {
22 | id Int @id @default(autoincrement())
23 | name String
24 | heading String
25 | avatar String
26 | User User? @relation(fields: [userId], references: [id])
27 | userId String? @unique
28 | links Link[]
29 | }
30 |
31 | model Account {
32 | id String @id @default(cuid())
33 | userId String
34 | type String
35 | provider String
36 | providerAccountId String
37 | refresh_token String? @db.Text
38 | access_token String? @db.Text
39 | expires_at Int?
40 | token_type String?
41 | scope String?
42 | id_token String? @db.Text
43 | session_state String?
44 |
45 | user User @relation(fields: [userId], references: [id], onDelete: Cascade)
46 |
47 | @@unique([provider, providerAccountId])
48 | }
49 |
50 | model Session {
51 | id String @id @default(cuid())
52 | sessionToken String @unique
53 | userId String
54 | expires DateTime
55 | user User @relation(fields: [userId], references: [id], onDelete: Cascade)
56 | }
57 |
58 | model User {
59 | id String @id @default(cuid())
60 | name String?
61 | email String? @unique
62 | emailVerified DateTime?
63 | image String?
64 | accounts Account[]
65 | sessions Session[]
66 | widget Widget?
67 | }
68 |
69 | model VerificationToken {
70 | identifier String
71 | token String @unique
72 | expires DateTime
73 |
74 | @@unique([identifier, token])
75 | }
76 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/asrvd/ponsor/088b4e69c8949beb62ea23774ae09471318d8088/public/favicon.ico
--------------------------------------------------------------------------------
/public/scripts/embed.min.js:
--------------------------------------------------------------------------------
1 | (function(){const url=window.location.hostname==="localhost"?"http://localhost:3000":"https://ponsor.vercel.app";const payload=document.querySelector("script[data-widget-id]");const{widgetId,placement}=payload.dataset;if(!widgetId)return;const attr=payload.getAttribute.bind(payload);const searchParams=attr("data-widget-id");const constructIframe=src=>{let iframe=document.createElement("iframe");iframe.width="100%";iframe.height="100%";iframe.src=src;return iframe};const style=document.createElement("style");style.innerHTML=`.embed, .embed-btn {
2 | border-radius: 10.5px;
3 | box-shadow: var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);
4 | left: 14px;
5 | position: fixed;
6 | overflow: hidden;
7 | z-index: 99999999;
8 | }
9 | .embed {
10 | --tw-shadow: 0 20px 25px -5px rgb(0 0 0/0.1),0 8px 10px 6px rgb(0 0 0/0.1);
11 | --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);
12 | bottom: 70px;
13 | height: 400px;
14 | max-height: 600px;
15 | background: white;
16 | overflow-x: hidden;
17 | width: 294px;
18 | transition: opacity 0.15s ease-in-out, transform 0.15s ease-in-out;
19 | }
20 | .embed > div {
21 | width: 100%;
22 | height: 100%;
23 | position: relative;
24 | }
25 | .embed > div > button {
26 | position: absolute;
27 | top: 14px;
28 | right: 14px;
29 | opacity: 50%;
30 | transition: opacity 0.15s ease-in-out;
31 | }
32 | .embed > div > button:hover {
33 | opacity: 100%;
34 | }
35 | .embed-btn {
36 | --tw-shadow: 0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);
37 | --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);
38 | bottom: 14px;
39 | cursor: pointer;
40 | height: 42px;
41 | overflow: hidden;
42 | width: 168px;
43 | background: white;
44 | }
45 | .bounce {
46 | animation: bounce 1s infinite;
47 | }
48 | .embed-btn button {
49 | width: 100%;
50 | overflow: hidden;
51 | height: 100%;
52 | position: absolute;
53 | top:0;
54 | left:0;
55 | }
56 | @media screen and (max-width: 426px) {
57 | .embed-btn {
58 | bottom: 7px;
59 | left: 7px;
60 | overflow: hidden;
61 | }
62 | .embed {
63 | bottom: 0;
64 | left: 0;
65 | width: 100vw;
66 | min-height: max-content;
67 | max-height: --webkit-fill-available;
68 | z-index: 100000000;
69 | }
70 | }
71 | @keyframes bounce {
72 | 0%, 100% {
73 | transform: translateY(-25%);
74 | animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
75 | }
76 | 50% {
77 | transform: translateY(0);
78 | animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
79 | }
80 | }`;const container=document.createElement("div");container.classList.add("himaker-container");const containerButton=document.createElement("div");const containerButtonTrigger=document.createElement("button");containerButton.classList.add("embed-btn");containerButton.classList.add("bounce");containerButton.append(constructIframe(`${url}/widget/trigger`));containerButton.append(containerButtonTrigger);const containerCloseButton=document.createElement("button");containerCloseButton.innerHTML=``;containerCloseButton.onclick=()=>{closePanel()};const containerPanel=document.createElement("div");containerPanel.style.display="none";containerPanel.style.transform="translateY(50px)";containerPanel.classList.add("embed");const containerPanelIframe=constructIframe(`${url}/widget/panel/${searchParams}`);const wrapper=document.createElement("div");wrapper.append(containerCloseButton);wrapper.append(containerPanelIframe);containerPanel.append(wrapper);container.append(style);container.append(containerPanel);container.append(containerButton);document.body.append(container);let isOpen=false;containerButtonTrigger.onclick=()=>{if(isOpen){closePanel();containerButton.classList.add("bounce")}else{openPanel();containerButton.classList.remove("bounce")}};document.onclick=event=>{let el=event.target;if(el!==containerButtonTrigger){closePanel();containerButton.classList.add("bounce")}};var s={insideIframe:false,scrollX:0,scrollY:0};containerPanelIframe.addEventListener("mouseenter",function(){s.insideIframe=true;s.scrollX=window.scrollX;s.scrollY=window.scrollY});containerPanelIframe.addEventListener("mouseleave",function(){s.insideIframe=false});document.addEventListener("scroll",function(){if(s.insideIframe)window.scrollTo(s.scrollX,s.scrollY)});const openPanel=()=>{isOpen=true;containerPanel.style.display="block";setTimeout(()=>{containerPanel.style.opacity="1";containerPanel.style.transform="translateY(0px)"},0)};const closePanel=()=>{isOpen=false;containerPanel.style.opacity="0";containerPanel.style.transform="translateY(50px)";setTimeout(()=>{containerPanel.style.display="none"},150)}})();
--------------------------------------------------------------------------------
/public/vercel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/scripts/embed.js:
--------------------------------------------------------------------------------
1 | (function () {
2 | const url =
3 | window.location.hostname === "localhost"
4 | ? "http://localhost:3000"
5 | : "https://ponsor.vercel.app";
6 | const payload = document.querySelector("script[data-widget-id]");
7 | //@ts-ignore
8 | const { widgetId, placement } = payload.dataset;
9 | if (!widgetId) return;
10 | //@ts-ignore
11 | const attr = payload.getAttribute.bind(payload);
12 | const searchParams = attr("data-widget-id");
13 | const constructIframe = (src) => {
14 | let iframe = document.createElement("iframe");
15 | iframe.width = "100%";
16 | iframe.height = "100%";
17 | iframe.src = src;
18 |
19 | return iframe;
20 | };
21 |
22 | const style = document.createElement("style");
23 | style.innerHTML = `.embed, .embed-btn {
24 | border-radius: 10.5px;
25 | box-shadow: var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);
26 | left: 14px;
27 | position: fixed;
28 | overflow: hidden;
29 | z-index: 99999999;
30 | }
31 | .embed {
32 | --tw-shadow: 0 20px 25px -5px rgb(0 0 0/0.1),0 8px 10px 6px rgb(0 0 0/0.1);
33 | --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);
34 | bottom: 70px;
35 | height: 400px;
36 | max-height: 600px;
37 | background: white;
38 | overflow-x: hidden;
39 | width: 294px;
40 | transition: opacity 0.15s ease-in-out, transform 0.15s ease-in-out;
41 | }
42 | .embed > div {
43 | width: 100%;
44 | height: 100%;
45 | position: relative;
46 | }
47 | .embed > div > button {
48 | position: absolute;
49 | top: 14px;
50 | right: 14px;
51 | opacity: 50%;
52 | transition: opacity 0.15s ease-in-out;
53 | }
54 | .embed > div > button:hover {
55 | opacity: 100%;
56 | }
57 | .embed-btn {
58 | --tw-shadow: 0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);
59 | --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);
60 | bottom: 14px;
61 | cursor: pointer;
62 | height: 42px;
63 | overflow: hidden;
64 | width: 168px;
65 | background: white;
66 | }
67 | .bounce {
68 | animation: bounce 1s infinite;
69 | }
70 | .embed-btn button {
71 | width: 100%;
72 | overflow: hidden;
73 | height: 100%;
74 | position: absolute;
75 | top:0;
76 | left:0;
77 | }
78 | @media screen and (max-width: 426px) {
79 | .embed-btn {
80 | bottom: 7px;
81 | left: 7px;
82 | overflow: hidden;
83 | }
84 | .embed {
85 | bottom: 0;
86 | left: 0;
87 | width: 100vw;
88 | min-height: max-content;
89 | max-height: --webkit-fill-available;
90 | z-index: 100000000;
91 | }
92 | }
93 | @keyframes bounce {
94 | 0%, 100% {
95 | transform: translateY(-25%);
96 | animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
97 | }
98 | 50% {
99 | transform: translateY(0);
100 | animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
101 | }
102 | }`;
103 |
104 | // Setup DOM
105 | const container = document.createElement("div");
106 | container.classList.add("himaker-container");
107 |
108 | const containerButton = document.createElement("div");
109 | const containerButtonTrigger = document.createElement("button");
110 | containerButton.classList.add("embed-btn");
111 | containerButton.classList.add("bounce");
112 | containerButton.append(constructIframe(`${url}/widget/trigger`));
113 | containerButton.append(containerButtonTrigger);
114 |
115 | const containerCloseButton = document.createElement("button");
116 | containerCloseButton.innerHTML = ``;
117 | containerCloseButton.onclick = () => {
118 | closePanel();
119 | };
120 |
121 | const containerPanel = document.createElement("div");
122 | containerPanel.style.display = "none";
123 | containerPanel.style.transform = "translateY(50px)";
124 | containerPanel.classList.add("embed");
125 | const containerPanelIframe = constructIframe(
126 | `${url}/widget/panel/${searchParams}`
127 | );
128 | const wrapper = document.createElement("div");
129 | wrapper.append(containerCloseButton);
130 | wrapper.append(containerPanelIframe);
131 | containerPanel.append(wrapper);
132 |
133 | container.append(style);
134 | container.append(containerPanel);
135 | container.append(containerButton);
136 |
137 | document.body.append(container);
138 |
139 | let isOpen = false;
140 | containerButtonTrigger.onclick = () => {
141 | if (isOpen) {
142 | closePanel();
143 | containerButton.classList.add("bounce");
144 | } else {
145 | openPanel();
146 | containerButton.classList.remove("bounce");
147 | }
148 | };
149 |
150 | document.onclick = (event) => {
151 | let el = event.target;
152 | if (el !== containerButtonTrigger) {
153 | closePanel();
154 | containerButton.classList.add("bounce");
155 | }
156 | };
157 |
158 | var s = { insideIframe: false, scrollX: 0, scrollY: 0 };
159 |
160 | containerPanelIframe.addEventListener("mouseenter", function () {
161 | s.insideIframe = true;
162 | s.scrollX = window.scrollX;
163 | s.scrollY = window.scrollY;
164 | });
165 |
166 | containerPanelIframe.addEventListener("mouseleave", function () {
167 | s.insideIframe = false;
168 | });
169 |
170 | document.addEventListener("scroll", function () {
171 | if (s.insideIframe) window.scrollTo(s.scrollX, s.scrollY);
172 | });
173 |
174 | const openPanel = () => {
175 | isOpen = true;
176 | containerPanel.style.display = "block";
177 | setTimeout(() => {
178 | containerPanel.style.opacity = "1";
179 | containerPanel.style.transform = "translateY(0px)";
180 | }, 0);
181 | };
182 | const closePanel = () => {
183 | isOpen = false;
184 | containerPanel.style.opacity = "0";
185 | containerPanel.style.transform = "translateY(50px)";
186 | setTimeout(() => {
187 | containerPanel.style.display = "none";
188 | }, 150);
189 | };
190 | })();
191 |
--------------------------------------------------------------------------------
/styles/globals.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.bunny.net/css?family=work-sans:900,800,700,600,500,400,900i,800i,700i,600i,500i);
2 |
3 | @tailwind base;
4 | @tailwind components;
5 | @tailwind utilities;
6 |
--------------------------------------------------------------------------------
/styles/nprogress.css:
--------------------------------------------------------------------------------
1 | #nprogress {
2 | pointer-events: none;
3 | }
4 |
5 | #nprogress .bar {
6 | background: #91f2ed;
7 |
8 | position: fixed;
9 | z-index: 1031;
10 | top: 0;
11 | left: 0;
12 |
13 | width: 100%;
14 | height: 2px;
15 | }
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: [
4 | "./pages/**/*.{js,ts,jsx,tsx}",
5 | "./components/**/*.{js,ts,jsx,tsx}",
6 | ],
7 | theme: {
8 | extend: {
9 | fontFamily: {
10 | sans: ["Work Sans", "sans-serif"],
11 | },
12 | screens: {
13 | "xs": "425px",
14 | }
15 | },
16 | },
17 | plugins: [],
18 | };
19 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "forceConsistentCasingInFileNames": true,
9 | "noEmit": true,
10 | "esModuleInterop": true,
11 | "module": "esnext",
12 | "moduleResolution": "node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "jsx": "preserve",
16 | "incremental": true
17 | },
18 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "pages/api/auth/[...nextauth].js", "pages/api/uploadimg.js", "scripts/embed.js"],
19 | "exclude": ["node_modules"]
20 | }
21 |
--------------------------------------------------------------------------------
/types/next-auth.d.ts:
--------------------------------------------------------------------------------
1 | import NextAuth, { DefaultSession } from "next-auth";
2 |
3 | declare module "next-auth" {
4 | interface Session {
5 | user: {
6 | id: string;
7 | } & DefaultSession["user"];
8 | }
9 | }
10 |
--------------------------------------------------------------------------------