├── .eslintrc.json ├── sanity-backend ├── plugins │ └── .gitkeep ├── config │ ├── @sanity │ │ ├── data-aspects.json │ │ ├── vision.json │ │ ├── form-builder.json │ │ ├── default-layout.json │ │ └── default-login.json │ └── .checksums ├── .eslintrc ├── static │ ├── .gitkeep │ └── favicon.ico ├── schemas │ ├── postedBy.js │ ├── user.js │ ├── comment.js │ ├── schema.js │ └── post.js ├── .npmignore ├── tsconfig.json ├── README.md ├── sanity.json └── package.json ├── public ├── favicon.ico └── vercel.svg ├── utils ├── tiktik-logo.png ├── client.ts ├── index.ts ├── constants.tsx └── queries.ts ├── postcss.config.js ├── next-env.d.ts ├── next.config.js ├── .env.development ├── pages ├── api │ ├── auth.ts │ ├── users.ts │ ├── discover │ │ └── [topic].ts │ ├── search │ │ └── [searchTerm].ts │ ├── post │ │ ├── index.ts │ │ └── [id].ts │ ├── like.ts │ └── profile │ │ └── [id].ts ├── index.tsx ├── _app.tsx ├── profile │ └── [id].tsx ├── search │ └── [searchTerm].tsx ├── detail │ └── [id].tsx └── upload.tsx ├── .gitignore ├── tsconfig.json ├── styles └── globals.css ├── components ├── NoResults.tsx ├── Footer.tsx ├── LikeButton.tsx ├── Discover.tsx ├── Sidebar.tsx ├── SuggestedAccounts.tsx ├── Comments.tsx ├── Navbar.tsx └── VideoCard.tsx ├── store └── authStore.ts ├── types.d.ts ├── package.json ├── tailwind.config.js ├── README.md └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /sanity-backend/plugins/.gitkeep: -------------------------------------------------------------------------------- 1 | User-specific packages can be placed here 2 | -------------------------------------------------------------------------------- /sanity-backend/config/@sanity/data-aspects.json: -------------------------------------------------------------------------------- 1 | { 2 | "listOptions": {} 3 | } 4 | -------------------------------------------------------------------------------- /sanity-backend/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@sanity/eslint-config-studio" 3 | } 4 | -------------------------------------------------------------------------------- /sanity-backend/config/@sanity/vision.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultApiVersion": "2021-10-21" 3 | } 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrianhajdin/tiktik_clone/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /utils/tiktik-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrianhajdin/tiktik_clone/HEAD/utils/tiktik-logo.png -------------------------------------------------------------------------------- /sanity-backend/config/@sanity/form-builder.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": { 3 | "directUploads": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /sanity-backend/static/.gitkeep: -------------------------------------------------------------------------------- 1 | Files placed here will be served by the Sanity server under the `/static`-prefix 2 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /sanity-backend/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrianhajdin/tiktik_clone/HEAD/sanity-backend/static/favicon.ico -------------------------------------------------------------------------------- /sanity-backend/config/@sanity/default-layout.json: -------------------------------------------------------------------------------- 1 | { 2 | "toolSwitcher": { 3 | "order": [], 4 | "hidden": [] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sanity-backend/schemas/postedBy.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'postedBy', 3 | title: 'Posted By', 4 | type: 'reference', 5 | to: [{type: 'user'}] 6 | } -------------------------------------------------------------------------------- /sanity-backend/config/@sanity/default-login.json: -------------------------------------------------------------------------------- 1 | { 2 | "providers": { 3 | "mode": "append", 4 | "redirectOnSingle": false, 5 | "entries": [] 6 | }, 7 | "loginMethod": "dual" 8 | } 9 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /sanity-backend/.npmignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | /logs 3 | *.log 4 | 5 | # Coverage directory used by tools like istanbul 6 | /coverage 7 | 8 | # Dependency directories 9 | node_modules 10 | 11 | # Compiled sanity studio 12 | /dist 13 | -------------------------------------------------------------------------------- /utils/client.ts: -------------------------------------------------------------------------------- 1 | import sanityClient from '@sanity/client'; 2 | 3 | export const client = sanityClient({ 4 | projectId: 'dtveib2y', 5 | dataset: 'production', 6 | apiVersion: '2022-03-10', 7 | useCdn: false, 8 | token: process.env.NEXT_PUBLIC_SANITY_TOKEN, 9 | }); 10 | -------------------------------------------------------------------------------- /sanity-backend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // Note: This config is only used to help editors like VS Code understand/resolve 3 | // parts, the actual transpilation is done by babel. Any compiler configuration in 4 | // here will be ignored. 5 | "include": ["./node_modules/@sanity/base/types/**/*.ts", "./**/*.ts", "./**/*.tsx"] 6 | } 7 | -------------------------------------------------------------------------------- /sanity-backend/schemas/user.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'user', 3 | title: 'User', 4 | type: 'document', 5 | fields: [ 6 | { 7 | name: 'userName', 8 | title: 'User Name', 9 | type: 'string' 10 | }, 11 | { 12 | name: 'image', 13 | title: 'Image', 14 | type: 'string', 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | typescript: { 4 | ignoreBuildErrors: true, 5 | }, 6 | 7 | reactStrictMode: true, 8 | images: { 9 | domains: [ 10 | 'yt3.ggpht.com', 11 | 'lh3.googleusercontent.com' 12 | ], 13 | } 14 | } 15 | 16 | module.exports = nextConfig 17 | -------------------------------------------------------------------------------- /sanity-backend/schemas/comment.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'comment', 3 | title: 'Comment', 4 | type: 'document', 5 | fields: [ 6 | { 7 | name: 'postedBy', 8 | title: 'Posted By', 9 | type: 'postedBy' 10 | }, 11 | { 12 | name: 'comment', 13 | title: 'Comment', 14 | type: 'string', 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /.env.development: -------------------------------------------------------------------------------- 1 | NEXT_PUBLIC_SANITY_TOKEN = skjuMEMXj6VjArEo9RufQXqhLD7ft7G6weSVxODBTySNetWiQWUWXU3kO5n3YTVEqMCf8SlAuGAuNWzQkcnLTSiexq1RBDVg9uHvjTP5yG0Ch1Hh1XqKi1NrJcPJwVMQB8xhFl8l2JtghNjVHYqgGTvi7tQVoqt1JCXJGBuIDE2m5topULr7 2 | 3 | NEXT_PUBLIC_GOOGLE_API_TOKEN = 936679625426-fq1dme9fjg6ude38emqa4f8eh4dvomqc.apps.googleusercontent.com 4 | 5 | NEXT_PUBLIC_BASE_URL = http://localhost:3000 -------------------------------------------------------------------------------- /pages/api/auth.ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next' 2 | 3 | import { client } from '../../utils/client'; 4 | 5 | export default async function handler(req: NextApiRequest, res: NextApiResponse) { 6 | if(req.method === 'POST') { 7 | const user = req.body; 8 | 9 | client.createIfNotExists(user) 10 | .then(() => res.status(200).json('Login success')) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /pages/api/users.ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next' 2 | 3 | import { allUsersQuery } from '../../utils/queries'; 4 | import { client } from '../../utils/client'; 5 | 6 | export default async function handler(req: NextApiRequest, res: NextApiResponse) { 7 | if(req.method === 'GET') { 8 | const data = await client.fetch(allUsersQuery()); 9 | 10 | if(data) { 11 | res.status(200).json(data); 12 | } else { 13 | res.json([]); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.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 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | -------------------------------------------------------------------------------- /pages/api/discover/[topic].ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next' 2 | 3 | import { topicPostsQuery } from '../../../utils/queries'; 4 | import { client } from '../../../utils/client'; 5 | 6 | export default async function handler(req: NextApiRequest, res: NextApiResponse) { 7 | if(req.method === 'GET') { 8 | const { topic } = req.query; 9 | 10 | const videosQuery = topicPostsQuery(topic); 11 | 12 | const videos = await client.fetch(videosQuery); 13 | 14 | res.status(200).json(videos); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /pages/api/search/[searchTerm].ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next' 2 | 3 | import { searchPostsQuery } from '../../../utils/queries'; 4 | import { client } from '../../../utils/client'; 5 | 6 | export default async function handler(req: NextApiRequest, res: NextApiResponse) { 7 | if(req.method === 'GET') { 8 | const { searchTerm } = req.query; 9 | 10 | const videosQuery = searchPostsQuery(searchTerm); 11 | 12 | const videos = await client.fetch(videosQuery); 13 | 14 | res.status(200).json(videos); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /sanity-backend/README.md: -------------------------------------------------------------------------------- 1 | # Sanity Clean Content Studio 2 | 3 | Congratulations, you have now installed the Sanity Content Studio, an open source real-time content editing environment connected to the Sanity backend. 4 | 5 | Now you can do the following things: 6 | 7 | - [Read “getting started” in the docs](https://www.sanity.io/docs/introduction/getting-started?utm_source=readme) 8 | - [Join the community Slack](https://slack.sanity.io/?utm_source=readme) 9 | - [Extend and build plugins](https://www.sanity.io/docs/content-studio/extending?utm_source=readme) 10 | -------------------------------------------------------------------------------- /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"], 19 | "exclude": ["node_modules"] 20 | } 21 | -------------------------------------------------------------------------------- /utils/index.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import jwt_decode from 'jwt-decode'; 3 | 4 | export const BASE_URL = process.env.NEXT_PUBLIC_BASE_URL; 5 | 6 | export const createOrGetUser = async (response: any, addUser: any) => { 7 | const decoded: { name: string, picture: string, sub: string } = jwt_decode(response.credential); 8 | 9 | const { name, picture, sub } = decoded; 10 | 11 | const user = { 12 | _id: sub, 13 | _type: 'user', 14 | userName: name, 15 | image: picture 16 | } 17 | 18 | addUser(user); 19 | 20 | await axios.post(`${BASE_URL}/api/auth`, user); 21 | }; 22 | -------------------------------------------------------------------------------- /sanity-backend/config/.checksums: -------------------------------------------------------------------------------- 1 | { 2 | "#": "Used by Sanity to keep track of configuration file checksums, do not delete or modify!", 3 | "@sanity/default-layout": "bb034f391ba508a6ca8cd971967cbedeb131c4d19b17b28a0895f32db5d568ea", 4 | "@sanity/default-login": "e2ed4e51e97331c0699ba7cf9f67cbf76f1c6a5f806d6eabf8259b2bcb5f1002", 5 | "@sanity/form-builder": "b38478227ba5e22c91981da4b53436df22e48ff25238a55a973ed620be5068aa", 6 | "@sanity/data-aspects": "d199e2c199b3e26cd28b68dc84d7fc01c9186bf5089580f2e2446994d36b3cb6", 7 | "@sanity/vision": "da5b6ed712703ecd04bf4df560570c668aa95252c6bc1c41d6df1bda9b8b8f60" 8 | } 9 | -------------------------------------------------------------------------------- /sanity-backend/sanity.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "project": { 4 | "name": "sanity-backend" 5 | }, 6 | "api": { 7 | "projectId": "dtveib2y", 8 | "dataset": "production" 9 | }, 10 | "plugins": [ 11 | "@sanity/base", 12 | "@sanity/default-layout", 13 | "@sanity/default-login", 14 | "@sanity/desk-tool" 15 | ], 16 | "env": { 17 | "development": { 18 | "plugins": [ 19 | "@sanity/vision" 20 | ] 21 | } 22 | }, 23 | "parts": [ 24 | { 25 | "name": "part:@sanity/base/schema", 26 | "path": "./schemas/schema" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /styles/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | html, 6 | body { 7 | padding: 0; 8 | margin: 0; 9 | box-sizing: border-box; 10 | } 11 | 12 | a { 13 | color: inherit; 14 | text-decoration: none; 15 | } 16 | 17 | * { 18 | box-sizing: border-box; 19 | } 20 | 21 | .videos::-webkit-scrollbar { 22 | width: 0px; 23 | } 24 | 25 | ::-webkit-scrollbar { 26 | width: 4px; 27 | } 28 | 29 | ::-webkit-scrollbar-thumb { 30 | background-color: rgb(237, 237, 237); 31 | border-radius: 40px; 32 | } 33 | 34 | ::-webkit-scrollbar-track { 35 | background-color: transparent; 36 | } -------------------------------------------------------------------------------- /pages/api/post/index.ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next' 2 | import { client } from '../../../utils/client'; 3 | import { allPostsQuery } from '../../../utils/queries'; 4 | 5 | export default async function handler(req: NextApiRequest, res: NextApiResponse) { 6 | if(req.method === 'GET') { 7 | const query = allPostsQuery(); 8 | 9 | const data = await client.fetch(query); 10 | 11 | res.status(200).json(data); 12 | } else if(req.method === 'POST') { 13 | const document = req.body; 14 | 15 | client.create(document) 16 | .then(() => res.status(201).json('Video Created')) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /components/NoResults.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { MdOutlineVideocamOff } from 'react-icons/md'; 3 | import { BiCommentX } from 'react-icons/bi'; 4 | 5 | interface IProps { 6 | text: string; 7 | } 8 | 9 | const NoResults = ({ text }: IProps) => { 10 | return ( 11 |
12 |

13 | {text === 'No comments yet' 14 | ? 15 | : 16 | } 17 |

18 |

{text}

19 |
20 | ) 21 | } 22 | 23 | export default NoResults -------------------------------------------------------------------------------- /store/authStore.ts: -------------------------------------------------------------------------------- 1 | import create from 'zustand'; 2 | import { persist } from 'zustand/middleware'; 3 | import axios from 'axios'; 4 | 5 | import { BASE_URL } from '../utils'; 6 | 7 | const authStore = (set: any) => ({ 8 | userProfile: null, 9 | allUsers: [], 10 | 11 | addUser: (user: any) => set({ userProfile: user }), 12 | removeUser: () => set({ userProfile : null}), 13 | 14 | fetchAllUsers: async () => { 15 | const response = await axios.get(`${BASE_URL}/api/users`); 16 | 17 | set({ allUsers: response.data }) 18 | } 19 | }); 20 | 21 | const useAuthStore = create( 22 | persist(authStore, { 23 | name: 'auth' 24 | }) 25 | ) 26 | 27 | export default useAuthStore; -------------------------------------------------------------------------------- /types.d.ts: -------------------------------------------------------------------------------- 1 | export interface Video { 2 | caption: string; 3 | video: { 4 | asset: { 5 | _id: string; 6 | url: string; 7 | }; 8 | }; 9 | _id: string; 10 | postedBy: { 11 | _id: string; 12 | userName: string; 13 | image: string; 14 | }; 15 | likes: { 16 | postedBy: { 17 | _id: string; 18 | userName: string; 19 | image: string; 20 | }; 21 | }[]; 22 | comments: { 23 | comment: string; 24 | _key: string; 25 | postedBy: { 26 | _ref: string; 27 | }; 28 | }[]; 29 | userId: string; 30 | } 31 | 32 | export interface IUser { 33 | _id: string; 34 | _type: string; 35 | userName: string; 36 | image: string; 37 | } 38 | -------------------------------------------------------------------------------- /components/Footer.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { footerList1, footerList2, footerList3 } from '../utils/constants'; 4 | 5 | const List = ({ items, mt }: { items: string[], mt: boolean }) => ( 6 |
7 | {items.map((item) => ( 8 |

9 | {item} 10 |

11 | ))} 12 |
13 | ) 14 | 15 | const Footer = () => { 16 | return ( 17 |
18 | 19 | 20 | 21 |

2022 JSM TikTik

22 |
23 | ) 24 | } 25 | 26 | export default Footer -------------------------------------------------------------------------------- /sanity-backend/schemas/schema.js: -------------------------------------------------------------------------------- 1 | // First, we must import the schema creator 2 | import createSchema from 'part:@sanity/base/schema-creator' 3 | 4 | // Then import schema types from any plugins that might expose them 5 | import schemaTypes from 'all:part:@sanity/base/schema-type' 6 | import post from './post'; 7 | import user from './user'; 8 | import comment from './comment'; 9 | import postedBy from './postedBy'; 10 | 11 | // Then we give our schema to the builder and provide the result to Sanity 12 | export default createSchema({ 13 | // We name our schema 14 | name: 'default', 15 | // Then proceed to concatenate our document type 16 | // to the ones provided by any plugins that are installed 17 | types: schemaTypes.concat([ 18 | /* Your types here! */ 19 | post, user, comment, postedBy 20 | ]), 21 | }) 22 | -------------------------------------------------------------------------------- /pages/api/like.ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next' 2 | import { uuid } from 'uuidv4'; 3 | 4 | import { client } from '../../utils/client'; 5 | 6 | export default async function handler(req: NextApiRequest, res: NextApiResponse) { 7 | if(req.method === 'PUT') { 8 | const { userId, postId, like } = req.body; 9 | 10 | const data = 11 | like ? await client 12 | .patch(postId) 13 | .setIfMissing({ likes: [] }) 14 | .insert('after', 'likes[-1]', [ 15 | { 16 | _key: uuid(), 17 | _ref: userId 18 | } 19 | ]) 20 | .commit() 21 | : await client 22 | .patch(postId) 23 | .unset([`likes[_ref=="${userId}"]`]) 24 | .commit(); 25 | 26 | res.status(200).json(data); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /sanity-backend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sanity-backend", 3 | "private": true, 4 | "version": "1.0.0", 5 | "description": "", 6 | "main": "package.json", 7 | "author": "JavaScript Mastery ", 8 | "license": "UNLICENSED", 9 | "scripts": { 10 | "start": "sanity start", 11 | "build": "sanity build" 12 | }, 13 | "keywords": [ 14 | "sanity" 15 | ], 16 | "dependencies": { 17 | "@sanity/base": "^2.30.1", 18 | "@sanity/core": "^2.30.2", 19 | "@sanity/default-layout": "^2.30.1", 20 | "@sanity/default-login": "^2.30.1", 21 | "@sanity/desk-tool": "^2.30.1", 22 | "@sanity/eslint-config-studio": "^2.0.0", 23 | "@sanity/vision": "^2.30.1", 24 | "eslint": "^8.6.0", 25 | "prop-types": "^15.7", 26 | "react": "^17.0", 27 | "react-dom": "^17.0", 28 | "styled-components": "^5.2.0" 29 | }, 30 | "devDependencies": {} 31 | } 32 | -------------------------------------------------------------------------------- /pages/api/profile/[id].ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next' 2 | 3 | import { singleUserQuery, userCreatedPostsQuery, userLikedPostsQuery } from '../../../utils/queries'; 4 | import { client } from '../../../utils/client'; 5 | 6 | export default async function handler(req: NextApiRequest, res: NextApiResponse) { 7 | if(req.method === 'GET') { 8 | const { id } = req.query; 9 | 10 | const query = singleUserQuery(id); 11 | const userVideosQuery = userCreatedPostsQuery(id); 12 | const userLikedVideosQuery = userLikedPostsQuery(id); 13 | 14 | try { 15 | const user = await client.fetch(query); 16 | const userVideos = await client.fetch(userVideosQuery); 17 | const userLikedVideos = await client.fetch(userLikedVideosQuery) 18 | 19 | res.status(200).json({ user: user[0], userVideos, userLikedVideos }) 20 | } catch (error) { 21 | console.log(error); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tiktik_app", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@react-oauth/google": "^0.2.6", 13 | "jwt-decode": "^3.1.2", 14 | "@sanity/client": "^3.3.0", 15 | "axios": "^0.27.2", 16 | "next": "12.1.6", 17 | "react": "18.1.0", 18 | "react-dom": "18.1.0", 19 | "react-google-login": "^5.2.2", 20 | "react-icons": "^4.3.1", 21 | "uuidv4": "^6.2.13", 22 | "zustand": "^4.0.0-rc.1" 23 | }, 24 | "devDependencies": { 25 | "@types/node": "18.0.0", 26 | "@types/react": "18.0.14", 27 | "@types/react-dom": "18.0.5", 28 | "autoprefixer": "^10.4.7", 29 | "eslint": "8.18.0", 30 | "eslint-config-next": "12.1.6", 31 | "postcss": "^8.4.14", 32 | "tailwindcss": "^3.1.4", 33 | "typescript": "4.7.4" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /pages/api/post/[id].ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next' 2 | import { uuid } from 'uuidv4'; 3 | 4 | import { client } from '../../../utils/client'; 5 | import { postDetailQuery } from '../../../utils/queries'; 6 | 7 | export default async function handler(req: NextApiRequest, res: NextApiResponse) { 8 | if(req.method === 'GET') { 9 | const { id } = req.query; 10 | const query = postDetailQuery(id); 11 | 12 | const data = await client.fetch(query); 13 | 14 | res.status(200).json(data[0]); 15 | } else if (req.method === 'PUT') { 16 | const { comment, userId } = req.body; 17 | const { id }:any = req.query; 18 | 19 | const data = await client 20 | .patch(id) 21 | .setIfMissing({ comments: [] }) 22 | .insert('after', 'comments[-1]', [ 23 | { 24 | comment, 25 | _key: uuid(), 26 | postedBy: { _type: 'postedBy', _ref: userId } 27 | } 28 | ]) 29 | .commit() 30 | 31 | res.status(200).json(data); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /sanity-backend/schemas/post.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'post', 3 | title: 'Post', 4 | type: 'document', 5 | fields: [ 6 | { 7 | name: 'caption', 8 | title: 'Caption', 9 | type: 'string', 10 | }, 11 | { 12 | name: 'video', 13 | title: 'Video', 14 | type: 'file', 15 | options: { 16 | hotspot: true, 17 | }, 18 | }, 19 | { 20 | name: 'userId', 21 | title: 'UserId', 22 | type: 'string', 23 | }, 24 | { 25 | name: 'postedBy', 26 | title: 'PostedBy', 27 | type: 'postedBy', 28 | }, 29 | { 30 | name: 'likes', 31 | title: 'Likes', 32 | type: 'array', 33 | of: [ 34 | { 35 | type: 'reference', 36 | to: [{ type: 'user' }], 37 | }, 38 | ], 39 | }, 40 | { 41 | name: 'comments', 42 | title: 'Comments', 43 | type: 'array', 44 | of: [{ type: 'comment' }], 45 | }, 46 | { 47 | name: 'topic', 48 | title: 'Topic', 49 | type: 'string', 50 | }, 51 | ], 52 | }; 53 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [ 3 | './pages/**/*.{js,ts,jsx,tsx}', 4 | './components/**/*.{js,ts,jsx,tsx}', 5 | ], 6 | theme: { 7 | extend: { 8 | width: { 9 | 1600: '1600px', 10 | 400: '400px', 11 | 450: '450px', 12 | 210: '210px', 13 | 550: '550px', 14 | 260: '260px', 15 | 650: '650px', 16 | }, 17 | height: { 18 | 600: '600px', 19 | 280: '280px', 20 | 900: '900px', 21 | 458: '458px', 22 | }, 23 | top: { 24 | ' 50%': '50%', 25 | }, 26 | backgroundColor: { 27 | primary: '#F1F1F2', 28 | blur: '#030303', 29 | }, 30 | colors: { 31 | primary: 'rgb(22, 24, 35)', 32 | }, 33 | height: { 34 | '88vh': '88vh', 35 | }, 36 | backgroundImage: { 37 | 'blurred-img': 38 | "url('https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSsaaJ7s4lqcBF4IDROVPzrlL5fexcwRmDlnuEYQenWTt1DejFY5kmYDref2a0Hp2eE4aw&usqp=CAU')", 39 | }, 40 | }, 41 | }, 42 | plugins: [], 43 | }; 44 | -------------------------------------------------------------------------------- /pages/index.tsx: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | import NoResults from '../components/NoResults'; 4 | import VideoCard from '../components/VideoCard'; 5 | import { Video } from '../types'; 6 | import { BASE_URL } from '../utils'; 7 | 8 | interface IProps { 9 | videos: Video[] 10 | } 11 | 12 | const Home = ({ videos }: IProps) => { 13 | return ( 14 |
15 | {videos.length ? ( 16 | videos.map((video: Video) => ( 17 | 18 | )) 19 | ) : ( 20 | 21 | )} 22 |
23 | ) 24 | } 25 | 26 | export const getServerSideProps = async ({ 27 | query: { topic } 28 | }: { 29 | query: { topic: string } 30 | }) => { 31 | let response = null; 32 | 33 | if(topic) { 34 | response = await axios.get(`${BASE_URL}/api/discover/${topic}`); 35 | } else { 36 | response = await axios.get(`${BASE_URL}/api/post`); 37 | } 38 | 39 | return { 40 | props: { 41 | videos: response.data 42 | } 43 | } 44 | } 45 | 46 | export default Home 47 | -------------------------------------------------------------------------------- /utils/constants.tsx: -------------------------------------------------------------------------------- 1 | import { BsCode, BsEmojiSunglasses } from 'react-icons/bs'; 2 | import { GiCakeSlice, GiGalaxy, GiLipstick } from 'react-icons/gi'; 3 | import { FaPaw, FaMedal, FaGamepad } from 'react-icons/fa'; 4 | 5 | export const topics = [ 6 | { 7 | name: 'coding', 8 | icon: , 9 | }, 10 | { 11 | name: 'comedy', 12 | icon: , 13 | }, 14 | { 15 | name: 'gaming', 16 | icon: , 17 | }, 18 | { 19 | name: 'food', 20 | icon: , 21 | }, 22 | { 23 | name: 'dance', 24 | icon: , 25 | }, 26 | { 27 | name: 'beauty', 28 | icon: , 29 | }, 30 | { 31 | name: 'animals', 32 | icon: , 33 | }, 34 | { 35 | name: 'sports', 36 | icon: , 37 | }, 38 | ]; 39 | 40 | export const footerList1 = ['About', 'Newsroom', 'Store', 'Contact', 'Carrers', 'ByteDance', 'Creator Directory'] 41 | export const footerList2 = [ 'TikTok for Good','Advertise','Developers','Transparency','TikTok Rewards' ] 42 | export const footerList3 = [ 'Help', 'Safety', 'Terms', 'Privacy', 'Creator Portal', 'Community Guidelines' ] -------------------------------------------------------------------------------- /pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import type { AppProps } from 'next/app'; 2 | import { useState, useEffect } from 'react'; 3 | import { GoogleOAuthProvider } from '@react-oauth/google'; 4 | 5 | import Navbar from '../components/Navbar'; 6 | import Sidebar from '../components/Sidebar'; 7 | import '../styles/globals.css' 8 | 9 | const MyApp = ({ Component, pageProps }: AppProps) => { 10 | const [isSSR, setIsSSR] = useState(true); 11 | 12 | useEffect(() => { 13 | setIsSSR(false); 14 | }, []); 15 | 16 | if(isSSR) return null; 17 | 18 | return ( 19 | 20 |
21 | 22 |
23 |
24 | 25 |
26 |
27 | 28 |
29 |
30 |
31 |
32 | ); 33 | } 34 | 35 | export default MyApp 36 | -------------------------------------------------------------------------------- /components/LikeButton.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react'; 2 | import { MdFavorite } from 'react-icons/md'; 3 | 4 | import useAuthStore from '../store/authStore'; 5 | 6 | interface IProps { 7 | handleLike: () => void; 8 | handleDislike: () => void; 9 | likes: any[]; 10 | } 11 | 12 | const LikeButton = ({ likes, handleLike, handleDislike }: IProps) => { 13 | const [alreadyLiked, setAlreadyLiked] = useState(false); 14 | const { userProfile }: any = useAuthStore(); 15 | const filterLikes = likes?.filter((item) => item._ref === userProfile?._id) 16 | 17 | useEffect(() => { 18 | if(filterLikes?.length > 0) { 19 | setAlreadyLiked(true); 20 | } else { 21 | setAlreadyLiked(false) 22 | } 23 | }, [filterLikes, likes]) 24 | 25 | return ( 26 |
27 |
28 | {alreadyLiked ? ( 29 |
30 | 31 |
32 | ) : ( 33 |
34 | 35 |
36 | )} 37 |

{likes?.length || 0 }

38 |
39 |
40 | ) 41 | } 42 | 43 | export default LikeButton -------------------------------------------------------------------------------- /components/Discover.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Link from 'next/link'; 3 | import { useRouter } from 'next/router'; 4 | 5 | import { topics } from '../utils/constants'; 6 | 7 | const Discover = () => { 8 | const router = useRouter(); 9 | const { topic } = router.query; 10 | 11 | const activeTopicStyle = "xl:border-2 hover:bg-primary xl:border-[#F51997] px-3 py-2 rounded xl:rounded-full flex items-center gap-2 justify-center cursor-pointer text-[#FF1997]" 12 | 13 | const topicStyle = "xl:border-2 hover:bg-primary xl:border-gray-300 px-3 py-2 rounded xl:rounded-full flex items-center gap-2 justify-center cursor-pointer text-black" 14 | 15 | return ( 16 |
17 |

18 | Popular Topics 19 |

20 |
21 | {topics.map((item) => ( 22 | 23 |
24 | 25 | {item.icon} 26 | 27 | 28 | {item.name} 29 | 30 |
31 | 32 | ))} 33 |
34 |
35 | ) 36 | } 37 | 38 | export default Discover -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | ``` 12 | 13 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 14 | 15 | You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. 16 | 17 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. 18 | 19 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. 20 | 21 | ## Learn More 22 | 23 | To learn more about Next.js, take a look at the following resources: 24 | 25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 27 | 28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 29 | 30 | ## Deploy on Vercel 31 | 32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 33 | 34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 35 | -------------------------------------------------------------------------------- /components/Sidebar.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { NextPage } from 'next'; 3 | import { useRouter } from 'next/router'; 4 | import Link from 'next/link'; 5 | import GoogleLogin from 'react-google-login'; 6 | import { AiFillHome, AiOutlineMenu } from 'react-icons/ai'; 7 | import { ImCancelCircle } from 'react-icons/im'; 8 | import Discover from './Discover'; 9 | import SuggestedAccounts from './SuggestedAccounts'; 10 | import Footer from './Footer'; 11 | 12 | const Sidebar = () => { 13 | const [showSidebar, setShowSidebar] = useState(true); 14 | 15 | const userProfile = false; 16 | 17 | const normalLink = 'flex items-center gap-3 hover:bg-primary p-3 justify-center xl:justify-start cursor-pointer font-semibold text-[#F51997] rounded'; 18 | 19 | return ( 20 |
21 |
setShowSidebar((prev) => !prev)} 24 | > 25 | {showSidebar ? : } 26 |
27 | {showSidebar && ( 28 |
29 |
30 | 31 |
32 |

33 | 34 |

35 | 36 | For You 37 | 38 |
39 | 40 |
41 | 42 | 43 |
44 |
45 | )} 46 |
47 | ) 48 | } 49 | 50 | export default Sidebar -------------------------------------------------------------------------------- /components/SuggestedAccounts.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect } from 'react' 2 | import Image from 'next/image'; 3 | import Link from 'next/link'; 4 | import { GoVerified } from 'react-icons/go'; 5 | 6 | import useAuthStore from '../store/authStore'; 7 | import { IUser } from '../types'; 8 | 9 | const SuggestedAccounts = () => { 10 | const { fetchAllUsers, allUsers } = useAuthStore(); 11 | 12 | useEffect(() => { 13 | fetchAllUsers(); 14 | }, [fetchAllUsers]); 15 | 16 | return ( 17 |
18 |

Suggested Accounts

19 | 20 |
21 | {allUsers.slice(0, 6).map((user: IUser) => ( 22 | 23 |
24 |
25 | user profile 33 |
34 | 35 |
36 |

37 | {user.userName.replaceAll(' ', '')} 38 | 39 |

40 |

41 | {user.userName} 42 |

43 |
44 |
45 | 46 | ))} 47 |
48 |
49 | ) 50 | } 51 | 52 | export default SuggestedAccounts -------------------------------------------------------------------------------- /pages/profile/[id].tsx: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from 'react'; 2 | import Image from 'next/image'; 3 | import { GoVerified } from 'react-icons/go'; 4 | import axios from 'axios'; 5 | 6 | import VideoCard from '../../components/VideoCard'; 7 | import NoResults from '../../components/NoResults'; 8 | import { IUser, Video } from '../../types'; 9 | import { BASE_URL } from '../../utils'; 10 | 11 | interface IProps { 12 | data: { 13 | user: IUser, 14 | userVideos: Video[], 15 | userLikedVideos: Video[] 16 | } 17 | } 18 | 19 | const Profile = ({ data }: IProps) => { 20 | const [showUserVideos, setShowUserVideos] = useState(true); 21 | const [videosList, setVideosList] = useState([]); 22 | const { user, userVideos, userLikedVideos } = data; 23 | 24 | const videos = showUserVideos ? 'border-b-2 border-black' : 'text-gray-400' 25 | const liked = !showUserVideos ? 'border-b-2 border-black' : 'text-gray-400' 26 | 27 | useEffect(() => { 28 | if(showUserVideos) { 29 | setVideosList(userVideos); 30 | } else { 31 | setVideosList(userLikedVideos); 32 | } 33 | }, [showUserVideos, userLikedVideos, userVideos]); 34 | 35 | return ( 36 |
37 |
38 |
39 | user profile 47 |
48 | 49 |
50 |

51 | {user.userName.replaceAll(' ', '')} 52 | 53 |

54 |

55 | {user.userName} 56 |

57 |
58 |
59 | 60 |
61 |
62 |

setShowUserVideos(true)}>Videos

63 |

setShowUserVideos(false)}>Liked

64 |
65 | 66 |
67 | {videosList.length > 0 ? ( 68 | videosList.map((post: Video, idx: number) => ( 69 | 70 | )) 71 | ) : } 72 |
73 |
74 | 75 |
76 | ) 77 | } 78 | 79 | export const getServerSideProps = async ({ 80 | params: { id } 81 | }: { 82 | params: { id: string } 83 | }) => { 84 | const res = await axios.get(`${BASE_URL}/api/profile/${id}`) 85 | 86 | return { 87 | props: { data: res.data } 88 | } 89 | } 90 | 91 | export default Profile; -------------------------------------------------------------------------------- /pages/search/[searchTerm].tsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | import Image from 'next/image'; 3 | import { GoVerified } from 'react-icons/go'; 4 | import axios from 'axios'; 5 | import Link from 'next/link'; 6 | import { useRouter } from 'next/router'; 7 | 8 | import VideoCard from '../../components/VideoCard'; 9 | import NoResults from '../../components/NoResults'; 10 | import { IUser, Video } from '../../types'; 11 | import { BASE_URL } from '../../utils'; 12 | import useAuthStore from '../../store/authStore'; 13 | 14 | const Search = ({ videos }: { videos: Video[] }) => { 15 | const [isAccounts, setIsAccounts] = useState(false); 16 | const router = useRouter(); 17 | const { searchTerm }: any = router.query; 18 | const { allUsers } = useAuthStore(); 19 | 20 | const accounts = isAccounts ? 'border-b-2 border-black' : 'text-gray-400' 21 | const isVideos = !isAccounts ? 'border-b-2 border-black' : 'text-gray-400' 22 | const searchedAccounts = allUsers.filter((user: IUser) => user.userName.toLowerCase().includes(searchTerm.toLowerCase())) 23 | 24 | return ( 25 |
26 |
27 |

setIsAccounts(true)}>Accounts

28 |

setIsAccounts(false)}>Videos

29 |
30 | {isAccounts ? ( 31 |
32 | {searchedAccounts.length > 0 ? ( 33 | searchedAccounts.map((user: IUser, idx: number) => ( 34 | 35 |
36 |
37 | user profile 44 |
45 | 46 |
47 |

48 | {user.userName.replaceAll(' ', '')} 49 | 50 |

51 |

52 | {user.userName} 53 |

54 |
55 |
56 | 57 | )) 58 | ) : } 59 |
60 | ) :
61 | {videos.length ? ( 62 | videos.map((video: Video, idx) => ( 63 | 64 | )) 65 | ) : } 66 |
} 67 |
68 | ) 69 | } 70 | 71 | export const getServerSideProps = async ({ 72 | params: { searchTerm } 73 | }: { 74 | params: { searchTerm: string } 75 | }) => { 76 | const res = await axios.get(`${BASE_URL}/api/search/${searchTerm}`) 77 | 78 | return { 79 | props: { videos: res.data } 80 | } 81 | } 82 | 83 | export default Search -------------------------------------------------------------------------------- /components/Comments.tsx: -------------------------------------------------------------------------------- 1 | import React, { Dispatch, SetStateAction } from 'react' 2 | import Image from 'next/image'; 3 | import Link from 'next/link'; 4 | import { GoVerified } from 'react-icons/go'; 5 | 6 | import useAuthStore from '../store/authStore'; 7 | import NoResults from './NoResults'; 8 | import { IUser } from '../types'; 9 | 10 | interface IProps { 11 | isPostingComment: Boolean, 12 | comment: string; 13 | setComment: Dispatch>; 14 | addComment: (e: React.FormEvent) => void; 15 | comments: IComment[]; 16 | } 17 | 18 | interface IComment { 19 | comment: string; 20 | lenght?: number; 21 | _key: string; 22 | postedBy: { _ref: string; _id: string }; 23 | } 24 | 25 | const Comments = ({ comment, setComment, addComment, comments, isPostingComment }: IProps) => { 26 | const { userProfile, allUsers } = useAuthStore(); 27 | 28 | return ( 29 |
30 |
31 | {comments?.length ? ( 32 | comments.map((item, idx) => ( 33 | <> 34 | {allUsers.map((user: IUser) => ( 35 | user._id === (item.postedBy._id || item.postedBy._ref) && ( 36 |
37 | 38 |
39 |
40 | user profile 48 |
49 | 50 |
51 |

52 | {user.userName.replaceAll(' ', '')} 53 | 54 |

55 |

56 | {user.userName} 57 |

58 |
59 |
60 | 61 | 62 |
63 |

{item.comment}

64 |
65 | 66 |
67 | ) 68 | ))} 69 | 70 | )) 71 | ) : ( 72 | 73 | )} 74 |
75 | 76 | {userProfile && ( 77 |
78 |
79 | setComment(e.target.value)} 82 | placeholder="Add comment..." 83 | className="bg-primary px-6 py-4 text-md font-medium border-2 w-[250px] md:w-[700px] lg:w-[350px] border-gray-100 focus:outline-none focus:border-2 focus:border-gray-300 flex-1 rounded-lg" 84 | /> 85 | 88 |
89 |
90 | )} 91 |
92 | ) 93 | } 94 | 95 | export default Comments -------------------------------------------------------------------------------- /components/Navbar.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react'; 2 | import Image from 'next/image'; 3 | import Link from 'next/link'; 4 | import { useRouter } from 'next/router'; 5 | import { AiOutlineLogout } from 'react-icons/ai'; 6 | import { GoogleLogin, googleLogout } from '@react-oauth/google' 7 | import { BiSearch } from 'react-icons/bi'; 8 | import { IoMdAdd } from 'react-icons/io'; 9 | 10 | import Logo from '../utils/tiktik-logo.png'; 11 | import { createOrGetUser } from '../utils'; 12 | 13 | import useAuthStore from '../store/authStore'; 14 | 15 | const Navbar = () => { 16 | const { userProfile, addUser, removeUser } = useAuthStore(); 17 | const [searchValue, setSearchValue] = useState(''); 18 | const router = useRouter(); 19 | 20 | const handleSearch = (e: { preventDefault: () => void }) => { 21 | e.preventDefault(); 22 | 23 | if(searchValue) { 24 | router.push(`/search/${searchValue}`) 25 | } 26 | } 27 | 28 | return ( 29 |
30 | 31 |
32 | TikTik 38 |
39 | 40 | 41 |
42 |
46 | setSearchValue(e.target.value)} 50 | placeholder="Search accounts and videos" 51 | className="bg-primary p-3 md:text-md font-medium border-2 border-gray-100 focus:outline-none focus:border-2 focus:border-gray-300 w-[300px] md:w-[350px] rounded-full md:top-0" 52 | /> 53 | 59 |
60 |
61 | 62 |
63 | {userProfile ? ( 64 |
65 | 66 | 70 | 71 | {userProfile.image && ( 72 | 73 | <> 74 | profile phoot 81 | 82 | 83 | )} 84 | 94 |
95 | ) : ( 96 | createOrGetUser(response, addUser)} 98 | onError={() => console.log('Error')} 99 | /> 100 | )} 101 |
102 |
103 | ) 104 | } 105 | 106 | export default Navbar -------------------------------------------------------------------------------- /utils/queries.ts: -------------------------------------------------------------------------------- 1 | export const allPostsQuery = () => { 2 | const query = `*[_type == "post"] | order(_createdAt desc){ 3 | _id, 4 | caption, 5 | video{ 6 | asset->{ 7 | _id, 8 | url 9 | } 10 | }, 11 | userId, 12 | postedBy->{ 13 | _id, 14 | userName, 15 | image 16 | }, 17 | likes, 18 | comments[]{ 19 | comment, 20 | _key, 21 | postedBy->{ 22 | _id, 23 | userName, 24 | image 25 | }, 26 | } 27 | } `; 28 | 29 | return query; 30 | }; 31 | 32 | export const postDetailQuery = (postId: string | string[]) => { 33 | const query = `*[_type == "post" && _id == '${postId}']{ 34 | _id, 35 | caption, 36 | video{ 37 | asset->{ 38 | _id, 39 | url 40 | } 41 | }, 42 | userId, 43 | postedBy->{ 44 | _id, 45 | userName, 46 | image 47 | }, 48 | likes, 49 | comments[]{ 50 | comment, 51 | _key, 52 | postedBy->{ 53 | _ref, 54 | _id, 55 | }, 56 | } 57 | }`; 58 | return query; 59 | }; 60 | 61 | export const searchPostsQuery = (searchTerm: string | string[]) => { 62 | const query = `*[_type == "post" && caption match '${searchTerm}*' || topic match '${searchTerm}*'] { 63 | _id, 64 | caption, 65 | video{ 66 | asset->{ 67 | _id, 68 | url 69 | } 70 | }, 71 | userId, 72 | postedBy->{ 73 | _id, 74 | userName, 75 | image 76 | }, 77 | likes, 78 | comments[]{ 79 | comment, 80 | _key, 81 | postedBy->{ 82 | _id, 83 | userName, 84 | image 85 | }, 86 | } 87 | }`; 88 | return query; 89 | }; 90 | 91 | export const singleUserQuery = (userId: string | string[]) => { 92 | const query = `*[_type == "user" && _id == '${userId}']`; 93 | 94 | return query; 95 | }; 96 | 97 | export const allUsersQuery = () => { 98 | const query = `*[_type == "user"]`; 99 | 100 | return query; 101 | }; 102 | 103 | export const userCreatedPostsQuery = (userId: string | string[]) => { 104 | const query = `*[ _type == 'post' && userId == '${userId}'] | order(_createdAt desc){ 105 | _id, 106 | caption, 107 | video{ 108 | asset->{ 109 | _id, 110 | url 111 | } 112 | }, 113 | userId, 114 | postedBy->{ 115 | _id, 116 | userName, 117 | image 118 | }, 119 | likes, 120 | 121 | comments[]{ 122 | comment, 123 | _key, 124 | postedBy->{ 125 | _id, 126 | userName, 127 | image 128 | }, 129 | } 130 | }`; 131 | 132 | return query; 133 | }; 134 | 135 | export const userLikedPostsQuery = (userId: string | string[]) => { 136 | const query = `*[_type == 'post' && '${userId}' in likes[]._ref ] | order(_createdAt desc) { 137 | _id, 138 | caption, 139 | video{ 140 | asset->{ 141 | _id, 142 | url 143 | } 144 | }, 145 | userId, 146 | postedBy->{ 147 | _id, 148 | userName, 149 | image 150 | }, 151 | likes, 152 | 153 | comments[]{ 154 | comment, 155 | _key, 156 | postedBy->{ 157 | _id, 158 | userName, 159 | image 160 | }, 161 | } 162 | }`; 163 | 164 | return query; 165 | }; 166 | 167 | export const topicPostsQuery = (topic: string | string[]) => { 168 | const query = `*[_type == "post" && topic match '${topic}*'] { 169 | _id, 170 | caption, 171 | video{ 172 | asset->{ 173 | _id, 174 | url 175 | } 176 | }, 177 | userId, 178 | postedBy->{ 179 | _id, 180 | userName, 181 | image 182 | }, 183 | likes, 184 | 185 | comments[]{ 186 | comment, 187 | _key, 188 | postedBy->{ 189 | _id, 190 | userName, 191 | image 192 | }, 193 | } 194 | }`; 195 | 196 | return query; 197 | }; 198 | -------------------------------------------------------------------------------- /components/VideoCard.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect, useRef } from 'react'; 2 | import { NextPage } from 'next'; 3 | import Image from 'next/image'; 4 | import Link from 'next/link'; 5 | import { HiVolumeUp, HiVolumeOff } from 'react-icons/hi'; 6 | import { BsPlay, BsFillPlayFill, BsFillPauseFill } from 'react-icons/bs'; 7 | import { GoVerified } from 'react-icons/go'; 8 | 9 | import { Video } from '../types'; 10 | 11 | interface IProps { 12 | post: Video; 13 | } 14 | 15 | const VideoCard: NextPage = ({ post }) => { 16 | const [isHover, setIsHover] = useState(false); 17 | const [playing, setPlaying] = useState(false); 18 | const [isVideoMuted, setIsVideoMuted] = useState(false); 19 | const videoRef = useRef(null); 20 | 21 | const onVideoPress = () => { 22 | if(playing) { 23 | videoRef?.current?.pause(); 24 | setPlaying(false); 25 | } else { 26 | videoRef?.current?.play(); 27 | setPlaying(true); 28 | } 29 | } 30 | 31 | useEffect(() => { 32 | if(videoRef?.current) { 33 | videoRef.current.muted = isVideoMuted; 34 | } 35 | }, [isVideoMuted]) 36 | 37 | return ( 38 |
39 |
40 |
41 |
42 | 43 | <> 44 | profile phoot 52 | 53 | 54 |
55 |
56 | 57 |
58 |

59 | {post.postedBy.userName} {` `} 60 | 61 |

62 |

{post.postedBy.userName}

63 |
64 | 65 |
66 |
67 |
68 | 69 |
70 |
setIsHover(true)} 72 | onMouseLeave={() => setIsHover(false)} 73 | className="rounded-3xl"> 74 | 75 | 82 | 83 | 84 | {isHover && ( 85 |
86 | {playing ? ( 87 | 90 | ) : ( 91 | 94 | )} 95 | {isVideoMuted ? ( 96 | 99 | ) : ( 100 | 103 | )} 104 |
105 | )} 106 |
107 |
108 |
109 | ) 110 | } 111 | 112 | export default VideoCard -------------------------------------------------------------------------------- /pages/detail/[id].tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect, useRef } from 'react'; 2 | import { useRouter } from 'next/router'; 3 | import Image from 'next/image'; 4 | import Link from 'next/link'; 5 | import { GoVerified } from 'react-icons/go'; 6 | import { MdOutlineCancel } from 'react-icons/md'; 7 | import { BsFillPlayFill } from 'react-icons/bs'; 8 | import { HiVolumeUp, HiVolumeOff } from 'react-icons/hi'; 9 | import axios from 'axios'; 10 | 11 | import { BASE_URL } from '../../utils'; 12 | import { Video } from '../../types'; 13 | import useAuthStore from '../../store/authStore'; 14 | import LikeButton from '../../components/LikeButton'; 15 | import Comments from '../../components/Comments'; 16 | 17 | interface IProps { 18 | postDetails: Video, 19 | } 20 | 21 | const Detail = ({ postDetails }: IProps) => { 22 | const [post, setPost] = useState(postDetails); 23 | const [playing, setPlaying] = useState(false); 24 | const [isVideoMuted, setIsVideoMuted] = useState(false); 25 | const videoRef = useRef(null); 26 | const router = useRouter(); 27 | const { userProfile }: any = useAuthStore(); 28 | const [comment, setComment] = useState(''); 29 | const [isPostingComment, setIsPostingComment] = useState(false) 30 | 31 | const onVideoClick = () => { 32 | if(playing) { 33 | videoRef?.current?.pause(); 34 | setPlaying(false); 35 | } else { 36 | videoRef?.current?.play(); 37 | setPlaying(true); 38 | } 39 | } 40 | 41 | useEffect(() => { 42 | if(post && videoRef?.current) { 43 | videoRef.current.muted = isVideoMuted; 44 | } 45 | }, [post, isVideoMuted]) 46 | 47 | const handleLike = async (like: boolean) => { 48 | if(userProfile) { 49 | const { data } = await axios.put(`${BASE_URL}/api/like`, { 50 | userId: userProfile._id, 51 | postId: post._id, 52 | like 53 | }) 54 | 55 | setPost({ ...post, likes: data.likes }); 56 | } 57 | } 58 | 59 | const addComment = async (e) => { 60 | e.preventDefault(); 61 | 62 | if(userProfile && comment) { 63 | setIsPostingComment(true); 64 | 65 | const { data } = await axios.put(`${BASE_URL}/api/post/${post._id}`, { 66 | userId: userProfile._id, 67 | comment 68 | }); 69 | 70 | setPost({ ...post, comments: data.comments}); 71 | setComment(''); 72 | setIsPostingComment(false); 73 | } 74 | } 75 | 76 | if(!post) return null; 77 | 78 | return ( 79 |
80 |
81 |
82 |

router.back()}> 83 | 84 |

85 |
86 |
87 |
88 | 96 |
97 | 98 |
99 | {!playing && ( 100 | 103 | )} 104 |
105 |
106 | 107 |
108 | {isVideoMuted ? ( 109 | 112 | ) : ( 113 | 116 | )} 117 |
118 |
119 | 120 |
121 |
122 |
123 |
124 | 125 | <> 126 | profile phoot 134 | 135 | 136 |
137 |
138 | 139 |
140 |

141 | {post.postedBy.userName} {` `} 142 | 143 |

144 |

{post.postedBy.userName}

145 |
146 | 147 |
148 |
149 | 150 |

{post.caption}

151 | 152 |
153 | {userProfile && ( 154 | handleLike(true)} 157 | handleDislike={() => handleLike(false)} 158 | /> 159 | )} 160 |
161 | 168 |
169 |
170 | 171 |
172 | ) 173 | } 174 | 175 | export const getServerSideProps = async ({ 176 | params: { id } 177 | }: { 178 | params: { id: string } 179 | }) => { 180 | const { data } = await axios.get(`${BASE_URL}/api/post/${id}`) 181 | 182 | return { 183 | props: { postDetails: data } 184 | } 185 | } 186 | 187 | export default Detail -------------------------------------------------------------------------------- /pages/upload.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react' 2 | import { useRouter } from 'next/router'; 3 | import { FaCloudUploadAlt } from 'react-icons/fa'; 4 | import { MdDelete } from 'react-icons/md'; 5 | import axios from 'axios'; 6 | import { SanityAssetDocument } from '@sanity/client'; 7 | 8 | import useAuthStore from '../store/authStore'; 9 | import { client } from '../utils/client'; 10 | 11 | import { topics } from '../utils/constants'; 12 | import { BASE_URL } from '../utils'; 13 | 14 | const Upload = () => { 15 | const [isLoading, setIsLoading] = useState(false); 16 | const [videoAsset, setVideoAsset] = useState(); 17 | const [wrongFileType, setWrongFileType] = useState(false); 18 | const [caption, setCaption] = useState(''); 19 | const [category, setCategory] = useState(topics[0].name); 20 | const [savingPost, setSavingPost] = useState(false); 21 | 22 | const { userProfile }: { userProfile: any } = useAuthStore(); 23 | const router = useRouter(); 24 | 25 | 26 | const uploadVideo = async (e: any) => { 27 | const selectedFile = e.target.files[0]; 28 | const fileTypes = ['video/mp4', 'video/webm', 'video/ogg']; 29 | 30 | if(fileTypes.includes(selectedFile.type)) { 31 | client.assets.upload('file', selectedFile, { 32 | contentType: selectedFile.type, 33 | filename: selectedFile.name 34 | }) 35 | .then((data) => { 36 | setVideoAsset(data); 37 | setIsLoading(false); 38 | }) 39 | } else { 40 | setIsLoading(false); 41 | setWrongFileType(true); 42 | } 43 | } 44 | 45 | const handlePost = async () => { 46 | if(caption && videoAsset?._id && category) { 47 | setSavingPost(true); 48 | 49 | const document = { 50 | _type: 'post', 51 | caption, 52 | video: { 53 | _type: 'file', 54 | asset: { 55 | _type: 'reference', 56 | _ref: videoAsset?._id 57 | } 58 | }, 59 | userId: userProfile?._id, 60 | postedBy: { 61 | _type: 'postedBy', 62 | _ref: userProfile?._id 63 | }, 64 | topic: category 65 | } 66 | 67 | await axios.post(`${BASE_URL}/api/post`, document); 68 | 69 | router.push('/'); 70 | } 71 | } 72 | 73 | return ( 74 |
75 |
76 |
77 |
78 |

Upload Video

79 |

Post a video to your account

80 |
81 |
82 | {isLoading ? ( 83 |

Uploading...

84 | ): ( 85 |
86 | {videoAsset ? ( 87 |
88 | 95 |
96 | ) : ( 97 | 124 | )} 125 |
126 | )} 127 | {wrongFileType && ( 128 |

129 | Please select a video file 130 |

131 | )} 132 |
133 | 134 | 135 | 136 |
137 |
138 | 139 | setCaption(e.target.value)} 143 | className="rounded outline-none text-md border-2 border-gray-200 p-2" 144 | /> 145 | 146 | 160 |
161 | 168 | 175 |
176 |
177 |
178 |
179 | ) 180 | } 181 | 182 | export default Upload -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/runtime-corejs3@^7.10.2": 6 | "integrity" "sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q==" 7 | "resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz" 8 | "version" "7.18.3" 9 | dependencies: 10 | "core-js-pure" "^3.20.2" 11 | "regenerator-runtime" "^0.13.4" 12 | 13 | "@babel/runtime@^7.10.2", "@babel/runtime@^7.18.3": 14 | "integrity" "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==" 15 | "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz" 16 | "version" "7.18.3" 17 | dependencies: 18 | "regenerator-runtime" "^0.13.4" 19 | 20 | "@eslint/eslintrc@^1.3.0": 21 | "integrity" "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==" 22 | "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz" 23 | "version" "1.3.0" 24 | dependencies: 25 | "ajv" "^6.12.4" 26 | "debug" "^4.3.2" 27 | "espree" "^9.3.2" 28 | "globals" "^13.15.0" 29 | "ignore" "^5.2.0" 30 | "import-fresh" "^3.2.1" 31 | "js-yaml" "^4.1.0" 32 | "minimatch" "^3.1.2" 33 | "strip-json-comments" "^3.1.1" 34 | 35 | "@humanwhocodes/config-array@^0.9.2": 36 | "integrity" "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==" 37 | "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz" 38 | "version" "0.9.5" 39 | dependencies: 40 | "@humanwhocodes/object-schema" "^1.2.1" 41 | "debug" "^4.1.1" 42 | "minimatch" "^3.0.4" 43 | 44 | "@humanwhocodes/object-schema@^1.2.1": 45 | "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" 46 | "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" 47 | "version" "1.2.1" 48 | 49 | "@next/env@12.1.6": 50 | "integrity" "sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA==" 51 | "resolved" "https://registry.npmjs.org/@next/env/-/env-12.1.6.tgz" 52 | "version" "12.1.6" 53 | 54 | "@next/eslint-plugin-next@12.1.6": 55 | "integrity" "sha512-yNUtJ90NEiYFT6TJnNyofKMPYqirKDwpahcbxBgSIuABwYOdkGwzos1ZkYD51Qf0diYwpQZBeVqElTk7Q2WNqw==" 56 | "resolved" "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.6.tgz" 57 | "version" "12.1.6" 58 | dependencies: 59 | "glob" "7.1.7" 60 | 61 | "@next/swc-win32-x64-msvc@12.1.6": 62 | "integrity" "sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA==" 63 | "resolved" "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz" 64 | "version" "12.1.6" 65 | 66 | "@nodelib/fs.scandir@2.1.5": 67 | "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" 68 | "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" 69 | "version" "2.1.5" 70 | dependencies: 71 | "@nodelib/fs.stat" "2.0.5" 72 | "run-parallel" "^1.1.9" 73 | 74 | "@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": 75 | "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" 76 | "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" 77 | "version" "2.0.5" 78 | 79 | "@nodelib/fs.walk@^1.2.3": 80 | "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" 81 | "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" 82 | "version" "1.2.8" 83 | dependencies: 84 | "@nodelib/fs.scandir" "2.1.5" 85 | "fastq" "^1.6.0" 86 | 87 | "@react-oauth/google@^0.2.6": 88 | "integrity" "sha512-Az6w/EL3QHSvWVbfX2WbUB15PGqM0hm86bpAoyvjw2nhDdPp9IOjpFg5HfSGJQJBydjbCFnZjI8PJskTzLOhew==" 89 | "resolved" "https://registry.npmjs.org/@react-oauth/google/-/google-0.2.6.tgz" 90 | "version" "0.2.6" 91 | 92 | "@rushstack/eslint-patch@^1.1.3": 93 | "integrity" "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==" 94 | "resolved" "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz" 95 | "version" "1.1.3" 96 | 97 | "@sanity/client@^3.3.0": 98 | "integrity" "sha512-M89v/KcNob0tnoMCW2caSnwYhSSqO1j5XuDXCloe966ZRFUAZWe9EVyyvvP7x1vPff5xR9PKxidrcx95l221mg==" 99 | "resolved" "https://registry.npmjs.org/@sanity/client/-/client-3.3.2.tgz" 100 | "version" "3.3.2" 101 | dependencies: 102 | "@sanity/eventsource" "^4.0.0" 103 | "@sanity/generate-help-url" "^3.0.0" 104 | "get-it" "^6.0.1" 105 | "make-error" "^1.3.0" 106 | "object-assign" "^4.1.1" 107 | "rxjs" "^6.0.0" 108 | 109 | "@sanity/eventsource@^4.0.0": 110 | "integrity" "sha512-W0AD141JILOySJ177j2+HTr5k4tWNyXjGsr0dDXJzpqlwZ09J/uPHI73hMe5XtoFumPa9Bj6jy8uu2qdZX84NQ==" 111 | "resolved" "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-4.0.0.tgz" 112 | "version" "4.0.0" 113 | dependencies: 114 | "event-source-polyfill" "1.0.25" 115 | "eventsource" "^2.0.2" 116 | 117 | "@sanity/generate-help-url@^3.0.0": 118 | "integrity" "sha512-wtMYcV5GIDIhVyF/jjmdwq1GdlK07dRL40XMns73VbrFI7FteRltxv48bhYVZPcLkRXb0SHjpDS/icj9/yzbVA==" 119 | "resolved" "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-3.0.0.tgz" 120 | "version" "3.0.0" 121 | 122 | "@sanity/timed-out@^4.0.2": 123 | "integrity" "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w==" 124 | "resolved" "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz" 125 | "version" "4.0.2" 126 | 127 | "@types/json5@^0.0.29": 128 | "integrity" "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" 129 | "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" 130 | "version" "0.0.29" 131 | 132 | "@types/node@18.0.0": 133 | "integrity" "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==" 134 | "resolved" "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz" 135 | "version" "18.0.0" 136 | 137 | "@types/prop-types@*": 138 | "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" 139 | "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" 140 | "version" "15.7.5" 141 | 142 | "@types/react-dom@18.0.5": 143 | "integrity" "sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==" 144 | "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.5.tgz" 145 | "version" "18.0.5" 146 | dependencies: 147 | "@types/react" "*" 148 | 149 | "@types/react@*", "@types/react@18.0.14": 150 | "integrity" "sha512-x4gGuASSiWmo0xjDLpm5mPb52syZHJx02VKbqUKdLmKtAwIh63XClGsiTI1K6DO5q7ox4xAsQrU+Gl3+gGXF9Q==" 151 | "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.14.tgz" 152 | "version" "18.0.14" 153 | dependencies: 154 | "@types/prop-types" "*" 155 | "@types/scheduler" "*" 156 | "csstype" "^3.0.2" 157 | 158 | "@types/scheduler@*": 159 | "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" 160 | "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" 161 | "version" "0.16.2" 162 | 163 | "@types/uuid@8.3.4": 164 | "integrity" "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" 165 | "resolved" "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" 166 | "version" "8.3.4" 167 | 168 | "@typescript-eslint/parser@^5.21.0": 169 | "integrity" "sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==" 170 | "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.29.0.tgz" 171 | "version" "5.29.0" 172 | dependencies: 173 | "@typescript-eslint/scope-manager" "5.29.0" 174 | "@typescript-eslint/types" "5.29.0" 175 | "@typescript-eslint/typescript-estree" "5.29.0" 176 | "debug" "^4.3.4" 177 | 178 | "@typescript-eslint/scope-manager@5.29.0": 179 | "integrity" "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==" 180 | "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz" 181 | "version" "5.29.0" 182 | dependencies: 183 | "@typescript-eslint/types" "5.29.0" 184 | "@typescript-eslint/visitor-keys" "5.29.0" 185 | 186 | "@typescript-eslint/types@5.29.0": 187 | "integrity" "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==" 188 | "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz" 189 | "version" "5.29.0" 190 | 191 | "@typescript-eslint/typescript-estree@5.29.0": 192 | "integrity" "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==" 193 | "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz" 194 | "version" "5.29.0" 195 | dependencies: 196 | "@typescript-eslint/types" "5.29.0" 197 | "@typescript-eslint/visitor-keys" "5.29.0" 198 | "debug" "^4.3.4" 199 | "globby" "^11.1.0" 200 | "is-glob" "^4.0.3" 201 | "semver" "^7.3.7" 202 | "tsutils" "^3.21.0" 203 | 204 | "@typescript-eslint/visitor-keys@5.29.0": 205 | "integrity" "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==" 206 | "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz" 207 | "version" "5.29.0" 208 | dependencies: 209 | "@typescript-eslint/types" "5.29.0" 210 | "eslint-visitor-keys" "^3.3.0" 211 | 212 | "acorn-jsx@^5.3.2": 213 | "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" 214 | "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" 215 | "version" "5.3.2" 216 | 217 | "acorn-node@^1.8.2": 218 | "integrity" "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==" 219 | "resolved" "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" 220 | "version" "1.8.2" 221 | dependencies: 222 | "acorn" "^7.0.0" 223 | "acorn-walk" "^7.0.0" 224 | "xtend" "^4.0.2" 225 | 226 | "acorn-walk@^7.0.0": 227 | "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" 228 | "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" 229 | "version" "7.2.0" 230 | 231 | "acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8.7.1": 232 | "integrity" "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" 233 | "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz" 234 | "version" "8.7.1" 235 | 236 | "acorn@^7.0.0": 237 | "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" 238 | "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" 239 | "version" "7.4.1" 240 | 241 | "ajv@^6.10.0", "ajv@^6.12.4": 242 | "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" 243 | "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" 244 | "version" "6.12.6" 245 | dependencies: 246 | "fast-deep-equal" "^3.1.1" 247 | "fast-json-stable-stringify" "^2.0.0" 248 | "json-schema-traverse" "^0.4.1" 249 | "uri-js" "^4.2.2" 250 | 251 | "ansi-regex@^5.0.1": 252 | "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 253 | "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 254 | "version" "5.0.1" 255 | 256 | "ansi-styles@^4.1.0": 257 | "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" 258 | "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 259 | "version" "4.3.0" 260 | dependencies: 261 | "color-convert" "^2.0.1" 262 | 263 | "anymatch@~3.1.2": 264 | "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" 265 | "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" 266 | "version" "3.1.2" 267 | dependencies: 268 | "normalize-path" "^3.0.0" 269 | "picomatch" "^2.0.4" 270 | 271 | "arg@^5.0.2": 272 | "integrity" "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" 273 | "resolved" "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" 274 | "version" "5.0.2" 275 | 276 | "argparse@^2.0.1": 277 | "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 278 | "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" 279 | "version" "2.0.1" 280 | 281 | "aria-query@^4.2.2": 282 | "integrity" "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==" 283 | "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" 284 | "version" "4.2.2" 285 | dependencies: 286 | "@babel/runtime" "^7.10.2" 287 | "@babel/runtime-corejs3" "^7.10.2" 288 | 289 | "array-includes@^3.1.4", "array-includes@^3.1.5": 290 | "integrity" "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==" 291 | "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz" 292 | "version" "3.1.5" 293 | dependencies: 294 | "call-bind" "^1.0.2" 295 | "define-properties" "^1.1.4" 296 | "es-abstract" "^1.19.5" 297 | "get-intrinsic" "^1.1.1" 298 | "is-string" "^1.0.7" 299 | 300 | "array-union@^2.1.0": 301 | "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" 302 | "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" 303 | "version" "2.1.0" 304 | 305 | "array.prototype.flat@^1.2.5": 306 | "integrity" "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==" 307 | "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz" 308 | "version" "1.3.0" 309 | dependencies: 310 | "call-bind" "^1.0.2" 311 | "define-properties" "^1.1.3" 312 | "es-abstract" "^1.19.2" 313 | "es-shim-unscopables" "^1.0.0" 314 | 315 | "array.prototype.flatmap@^1.3.0": 316 | "integrity" "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==" 317 | "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz" 318 | "version" "1.3.0" 319 | dependencies: 320 | "call-bind" "^1.0.2" 321 | "define-properties" "^1.1.3" 322 | "es-abstract" "^1.19.2" 323 | "es-shim-unscopables" "^1.0.0" 324 | 325 | "ast-types-flow@^0.0.7": 326 | "integrity" "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" 327 | "resolved" "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" 328 | "version" "0.0.7" 329 | 330 | "asynckit@^0.4.0": 331 | "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 332 | "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" 333 | "version" "0.4.0" 334 | 335 | "autoprefixer@^10.4.7": 336 | "integrity" "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==" 337 | "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz" 338 | "version" "10.4.7" 339 | dependencies: 340 | "browserslist" "^4.20.3" 341 | "caniuse-lite" "^1.0.30001335" 342 | "fraction.js" "^4.2.0" 343 | "normalize-range" "^0.1.2" 344 | "picocolors" "^1.0.0" 345 | "postcss-value-parser" "^4.2.0" 346 | 347 | "axe-core@^4.4.2": 348 | "integrity" "sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA==" 349 | "resolved" "https://registry.npmjs.org/axe-core/-/axe-core-4.4.2.tgz" 350 | "version" "4.4.2" 351 | 352 | "axios@^0.27.2": 353 | "integrity" "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==" 354 | "resolved" "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz" 355 | "version" "0.27.2" 356 | dependencies: 357 | "follow-redirects" "^1.14.9" 358 | "form-data" "^4.0.0" 359 | 360 | "axobject-query@^2.2.0": 361 | "integrity" "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" 362 | "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" 363 | "version" "2.2.0" 364 | 365 | "balanced-match@^1.0.0": 366 | "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 367 | "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 368 | "version" "1.0.2" 369 | 370 | "binary-extensions@^2.0.0": 371 | "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 372 | "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" 373 | "version" "2.2.0" 374 | 375 | "brace-expansion@^1.1.7": 376 | "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" 377 | "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 378 | "version" "1.1.11" 379 | dependencies: 380 | "balanced-match" "^1.0.0" 381 | "concat-map" "0.0.1" 382 | 383 | "braces@^3.0.2", "braces@~3.0.2": 384 | "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" 385 | "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" 386 | "version" "3.0.2" 387 | dependencies: 388 | "fill-range" "^7.0.1" 389 | 390 | "browserslist@^4.20.3", "browserslist@>= 4.21.0": 391 | "integrity" "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==" 392 | "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz" 393 | "version" "4.21.0" 394 | dependencies: 395 | "caniuse-lite" "^1.0.30001358" 396 | "electron-to-chromium" "^1.4.164" 397 | "node-releases" "^2.0.5" 398 | "update-browserslist-db" "^1.0.0" 399 | 400 | "call-bind@^1.0.0", "call-bind@^1.0.2": 401 | "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" 402 | "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" 403 | "version" "1.0.2" 404 | dependencies: 405 | "function-bind" "^1.1.1" 406 | "get-intrinsic" "^1.0.2" 407 | 408 | "callsites@^3.0.0": 409 | "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 410 | "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" 411 | "version" "3.1.0" 412 | 413 | "camelcase-css@^2.0.1": 414 | "integrity" "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" 415 | "resolved" "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" 416 | "version" "2.0.1" 417 | 418 | "caniuse-lite@^1.0.30001332", "caniuse-lite@^1.0.30001335", "caniuse-lite@^1.0.30001358": 419 | "integrity" "sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw==" 420 | "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz" 421 | "version" "1.0.30001359" 422 | 423 | "capture-stack-trace@^1.0.0": 424 | "integrity" "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" 425 | "resolved" "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz" 426 | "version" "1.0.1" 427 | 428 | "chalk@^4.0.0": 429 | "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" 430 | "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 431 | "version" "4.1.2" 432 | dependencies: 433 | "ansi-styles" "^4.1.0" 434 | "supports-color" "^7.1.0" 435 | 436 | "chokidar@^3.5.3": 437 | "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" 438 | "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" 439 | "version" "3.5.3" 440 | dependencies: 441 | "anymatch" "~3.1.2" 442 | "braces" "~3.0.2" 443 | "glob-parent" "~5.1.2" 444 | "is-binary-path" "~2.1.0" 445 | "is-glob" "~4.0.1" 446 | "normalize-path" "~3.0.0" 447 | "readdirp" "~3.6.0" 448 | optionalDependencies: 449 | "fsevents" "~2.3.2" 450 | 451 | "color-convert@^2.0.1": 452 | "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" 453 | "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 454 | "version" "2.0.1" 455 | dependencies: 456 | "color-name" "~1.1.4" 457 | 458 | "color-name@^1.1.4", "color-name@~1.1.4": 459 | "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 460 | "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 461 | "version" "1.1.4" 462 | 463 | "combined-stream@^1.0.8": 464 | "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" 465 | "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" 466 | "version" "1.0.8" 467 | dependencies: 468 | "delayed-stream" "~1.0.0" 469 | 470 | "concat-map@0.0.1": 471 | "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 472 | "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 473 | "version" "0.0.1" 474 | 475 | "core-js-pure@^3.20.2": 476 | "integrity" "sha512-XpoouuqIj4P+GWtdyV8ZO3/u4KftkeDVMfvp+308eGMhCrA3lVDSmAxO0c6GGOcmgVlaKDrgWVMo49h2ab/TDA==" 477 | "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.23.3.tgz" 478 | "version" "3.23.3" 479 | 480 | "core-util-is@~1.0.0": 481 | "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" 482 | "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" 483 | "version" "1.0.3" 484 | 485 | "create-error-class@^3.0.2": 486 | "integrity" "sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==" 487 | "resolved" "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz" 488 | "version" "3.0.2" 489 | dependencies: 490 | "capture-stack-trace" "^1.0.0" 491 | 492 | "cross-spawn@^7.0.2": 493 | "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" 494 | "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" 495 | "version" "7.0.3" 496 | dependencies: 497 | "path-key" "^3.1.0" 498 | "shebang-command" "^2.0.0" 499 | "which" "^2.0.1" 500 | 501 | "cssesc@^3.0.0": 502 | "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" 503 | "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" 504 | "version" "3.0.0" 505 | 506 | "csstype@^3.0.2": 507 | "integrity" "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" 508 | "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz" 509 | "version" "3.1.0" 510 | 511 | "damerau-levenshtein@^1.0.8": 512 | "integrity" "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" 513 | "resolved" "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" 514 | "version" "1.0.8" 515 | 516 | "debug@^2.6.8": 517 | "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" 518 | "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" 519 | "version" "2.6.9" 520 | dependencies: 521 | "ms" "2.0.0" 522 | 523 | "debug@^2.6.9": 524 | "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" 525 | "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" 526 | "version" "2.6.9" 527 | dependencies: 528 | "ms" "2.0.0" 529 | 530 | "debug@^3.2.7": 531 | "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" 532 | "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" 533 | "version" "3.2.7" 534 | dependencies: 535 | "ms" "^2.1.1" 536 | 537 | "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4": 538 | "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" 539 | "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" 540 | "version" "4.3.4" 541 | dependencies: 542 | "ms" "2.1.2" 543 | 544 | "decompress-response@^6.0.0": 545 | "integrity" "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" 546 | "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" 547 | "version" "6.0.0" 548 | dependencies: 549 | "mimic-response" "^3.1.0" 550 | 551 | "deep-is@^0.1.3": 552 | "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" 553 | "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" 554 | "version" "0.1.4" 555 | 556 | "define-properties@^1.1.3", "define-properties@^1.1.4": 557 | "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" 558 | "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" 559 | "version" "1.1.4" 560 | dependencies: 561 | "has-property-descriptors" "^1.0.0" 562 | "object-keys" "^1.1.1" 563 | 564 | "defined@^1.0.0": 565 | "integrity" "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" 566 | "resolved" "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" 567 | "version" "1.0.0" 568 | 569 | "delayed-stream@~1.0.0": 570 | "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 571 | "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" 572 | "version" "1.0.0" 573 | 574 | "detective@^5.2.1": 575 | "integrity" "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==" 576 | "resolved" "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz" 577 | "version" "5.2.1" 578 | dependencies: 579 | "acorn-node" "^1.8.2" 580 | "defined" "^1.0.0" 581 | "minimist" "^1.2.6" 582 | 583 | "didyoumean@^1.2.2": 584 | "integrity" "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" 585 | "resolved" "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" 586 | "version" "1.2.2" 587 | 588 | "dir-glob@^3.0.1": 589 | "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" 590 | "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" 591 | "version" "3.0.1" 592 | dependencies: 593 | "path-type" "^4.0.0" 594 | 595 | "dlv@^1.1.3": 596 | "integrity" "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" 597 | "resolved" "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" 598 | "version" "1.1.3" 599 | 600 | "doctrine@^2.1.0": 601 | "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" 602 | "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" 603 | "version" "2.1.0" 604 | dependencies: 605 | "esutils" "^2.0.2" 606 | 607 | "doctrine@^3.0.0": 608 | "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" 609 | "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" 610 | "version" "3.0.0" 611 | dependencies: 612 | "esutils" "^2.0.2" 613 | 614 | "electron-to-chromium@^1.4.164": 615 | "integrity" "sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw==" 616 | "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz" 617 | "version" "1.4.170" 618 | 619 | "emoji-regex@^9.2.2": 620 | "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 621 | "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" 622 | "version" "9.2.2" 623 | 624 | "es-abstract@^1.19.0", "es-abstract@^1.19.1", "es-abstract@^1.19.2", "es-abstract@^1.19.5": 625 | "integrity" "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==" 626 | "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz" 627 | "version" "1.20.1" 628 | dependencies: 629 | "call-bind" "^1.0.2" 630 | "es-to-primitive" "^1.2.1" 631 | "function-bind" "^1.1.1" 632 | "function.prototype.name" "^1.1.5" 633 | "get-intrinsic" "^1.1.1" 634 | "get-symbol-description" "^1.0.0" 635 | "has" "^1.0.3" 636 | "has-property-descriptors" "^1.0.0" 637 | "has-symbols" "^1.0.3" 638 | "internal-slot" "^1.0.3" 639 | "is-callable" "^1.2.4" 640 | "is-negative-zero" "^2.0.2" 641 | "is-regex" "^1.1.4" 642 | "is-shared-array-buffer" "^1.0.2" 643 | "is-string" "^1.0.7" 644 | "is-weakref" "^1.0.2" 645 | "object-inspect" "^1.12.0" 646 | "object-keys" "^1.1.1" 647 | "object.assign" "^4.1.2" 648 | "regexp.prototype.flags" "^1.4.3" 649 | "string.prototype.trimend" "^1.0.5" 650 | "string.prototype.trimstart" "^1.0.5" 651 | "unbox-primitive" "^1.0.2" 652 | 653 | "es-shim-unscopables@^1.0.0": 654 | "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" 655 | "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" 656 | "version" "1.0.0" 657 | dependencies: 658 | "has" "^1.0.3" 659 | 660 | "es-to-primitive@^1.2.1": 661 | "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" 662 | "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" 663 | "version" "1.2.1" 664 | dependencies: 665 | "is-callable" "^1.1.4" 666 | "is-date-object" "^1.0.1" 667 | "is-symbol" "^1.0.2" 668 | 669 | "escalade@^3.1.1": 670 | "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 671 | "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" 672 | "version" "3.1.1" 673 | 674 | "escape-string-regexp@^4.0.0": 675 | "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" 676 | "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" 677 | "version" "4.0.0" 678 | 679 | "eslint-config-next@12.1.6": 680 | "integrity" "sha512-qoiS3g/EPzfCTkGkaPBSX9W0NGE/B1wNO3oWrd76QszVGrdpLggNqcO8+LR6MB0CNqtp9Q8NoeVrxNVbzM9hqA==" 681 | "resolved" "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.1.6.tgz" 682 | "version" "12.1.6" 683 | dependencies: 684 | "@next/eslint-plugin-next" "12.1.6" 685 | "@rushstack/eslint-patch" "^1.1.3" 686 | "@typescript-eslint/parser" "^5.21.0" 687 | "eslint-import-resolver-node" "^0.3.6" 688 | "eslint-import-resolver-typescript" "^2.7.1" 689 | "eslint-plugin-import" "^2.26.0" 690 | "eslint-plugin-jsx-a11y" "^6.5.1" 691 | "eslint-plugin-react" "^7.29.4" 692 | "eslint-plugin-react-hooks" "^4.5.0" 693 | 694 | "eslint-import-resolver-node@^0.3.6": 695 | "integrity" "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==" 696 | "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" 697 | "version" "0.3.6" 698 | dependencies: 699 | "debug" "^3.2.7" 700 | "resolve" "^1.20.0" 701 | 702 | "eslint-import-resolver-typescript@^2.7.1": 703 | "integrity" "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==" 704 | "resolved" "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz" 705 | "version" "2.7.1" 706 | dependencies: 707 | "debug" "^4.3.4" 708 | "glob" "^7.2.0" 709 | "is-glob" "^4.0.3" 710 | "resolve" "^1.22.0" 711 | "tsconfig-paths" "^3.14.1" 712 | 713 | "eslint-module-utils@^2.7.3": 714 | "integrity" "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==" 715 | "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz" 716 | "version" "2.7.3" 717 | dependencies: 718 | "debug" "^3.2.7" 719 | "find-up" "^2.1.0" 720 | 721 | "eslint-plugin-import@*", "eslint-plugin-import@^2.26.0": 722 | "integrity" "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==" 723 | "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" 724 | "version" "2.26.0" 725 | dependencies: 726 | "array-includes" "^3.1.4" 727 | "array.prototype.flat" "^1.2.5" 728 | "debug" "^2.6.9" 729 | "doctrine" "^2.1.0" 730 | "eslint-import-resolver-node" "^0.3.6" 731 | "eslint-module-utils" "^2.7.3" 732 | "has" "^1.0.3" 733 | "is-core-module" "^2.8.1" 734 | "is-glob" "^4.0.3" 735 | "minimatch" "^3.1.2" 736 | "object.values" "^1.1.5" 737 | "resolve" "^1.22.0" 738 | "tsconfig-paths" "^3.14.1" 739 | 740 | "eslint-plugin-jsx-a11y@^6.5.1": 741 | "integrity" "sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw==" 742 | "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.0.tgz" 743 | "version" "6.6.0" 744 | dependencies: 745 | "@babel/runtime" "^7.18.3" 746 | "aria-query" "^4.2.2" 747 | "array-includes" "^3.1.5" 748 | "ast-types-flow" "^0.0.7" 749 | "axe-core" "^4.4.2" 750 | "axobject-query" "^2.2.0" 751 | "damerau-levenshtein" "^1.0.8" 752 | "emoji-regex" "^9.2.2" 753 | "has" "^1.0.3" 754 | "jsx-ast-utils" "^3.3.1" 755 | "language-tags" "^1.0.5" 756 | "minimatch" "^3.1.2" 757 | "semver" "^6.3.0" 758 | 759 | "eslint-plugin-react-hooks@^4.5.0": 760 | "integrity" "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" 761 | "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" 762 | "version" "4.6.0" 763 | 764 | "eslint-plugin-react@^7.29.4": 765 | "integrity" "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==" 766 | "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz" 767 | "version" "7.30.1" 768 | dependencies: 769 | "array-includes" "^3.1.5" 770 | "array.prototype.flatmap" "^1.3.0" 771 | "doctrine" "^2.1.0" 772 | "estraverse" "^5.3.0" 773 | "jsx-ast-utils" "^2.4.1 || ^3.0.0" 774 | "minimatch" "^3.1.2" 775 | "object.entries" "^1.1.5" 776 | "object.fromentries" "^2.0.5" 777 | "object.hasown" "^1.1.1" 778 | "object.values" "^1.1.5" 779 | "prop-types" "^15.8.1" 780 | "resolve" "^2.0.0-next.3" 781 | "semver" "^6.3.0" 782 | "string.prototype.matchall" "^4.0.7" 783 | 784 | "eslint-scope@^7.1.1": 785 | "integrity" "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==" 786 | "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" 787 | "version" "7.1.1" 788 | dependencies: 789 | "esrecurse" "^4.3.0" 790 | "estraverse" "^5.2.0" 791 | 792 | "eslint-utils@^3.0.0": 793 | "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" 794 | "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" 795 | "version" "3.0.0" 796 | dependencies: 797 | "eslint-visitor-keys" "^2.0.0" 798 | 799 | "eslint-visitor-keys@^2.0.0": 800 | "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" 801 | "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" 802 | "version" "2.1.0" 803 | 804 | "eslint-visitor-keys@^3.3.0": 805 | "integrity" "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" 806 | "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" 807 | "version" "3.3.0" 808 | 809 | "eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^7.23.0 || ^8.0.0", "eslint@>=5", "eslint@8.18.0": 810 | "integrity" "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==" 811 | "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz" 812 | "version" "8.18.0" 813 | dependencies: 814 | "@eslint/eslintrc" "^1.3.0" 815 | "@humanwhocodes/config-array" "^0.9.2" 816 | "ajv" "^6.10.0" 817 | "chalk" "^4.0.0" 818 | "cross-spawn" "^7.0.2" 819 | "debug" "^4.3.2" 820 | "doctrine" "^3.0.0" 821 | "escape-string-regexp" "^4.0.0" 822 | "eslint-scope" "^7.1.1" 823 | "eslint-utils" "^3.0.0" 824 | "eslint-visitor-keys" "^3.3.0" 825 | "espree" "^9.3.2" 826 | "esquery" "^1.4.0" 827 | "esutils" "^2.0.2" 828 | "fast-deep-equal" "^3.1.3" 829 | "file-entry-cache" "^6.0.1" 830 | "functional-red-black-tree" "^1.0.1" 831 | "glob-parent" "^6.0.1" 832 | "globals" "^13.15.0" 833 | "ignore" "^5.2.0" 834 | "import-fresh" "^3.0.0" 835 | "imurmurhash" "^0.1.4" 836 | "is-glob" "^4.0.0" 837 | "js-yaml" "^4.1.0" 838 | "json-stable-stringify-without-jsonify" "^1.0.1" 839 | "levn" "^0.4.1" 840 | "lodash.merge" "^4.6.2" 841 | "minimatch" "^3.1.2" 842 | "natural-compare" "^1.4.0" 843 | "optionator" "^0.9.1" 844 | "regexpp" "^3.2.0" 845 | "strip-ansi" "^6.0.1" 846 | "strip-json-comments" "^3.1.0" 847 | "text-table" "^0.2.0" 848 | "v8-compile-cache" "^2.0.3" 849 | 850 | "espree@^9.3.2": 851 | "integrity" "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==" 852 | "resolved" "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz" 853 | "version" "9.3.2" 854 | dependencies: 855 | "acorn" "^8.7.1" 856 | "acorn-jsx" "^5.3.2" 857 | "eslint-visitor-keys" "^3.3.0" 858 | 859 | "esquery@^1.4.0": 860 | "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" 861 | "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" 862 | "version" "1.4.0" 863 | dependencies: 864 | "estraverse" "^5.1.0" 865 | 866 | "esrecurse@^4.3.0": 867 | "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" 868 | "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" 869 | "version" "4.3.0" 870 | dependencies: 871 | "estraverse" "^5.2.0" 872 | 873 | "estraverse@^5.1.0", "estraverse@^5.2.0", "estraverse@^5.3.0": 874 | "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" 875 | "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" 876 | "version" "5.3.0" 877 | 878 | "esutils@^2.0.2": 879 | "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 880 | "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" 881 | "version" "2.0.3" 882 | 883 | "event-source-polyfill@1.0.25": 884 | "integrity" "sha512-hQxu6sN1Eq4JjoI7ITdQeGGUN193A2ra83qC0Ltm9I2UJVAten3OFVN6k5RX4YWeCS0BoC8xg/5czOCIHVosQg==" 885 | "resolved" "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz" 886 | "version" "1.0.25" 887 | 888 | "eventsource@^2.0.2": 889 | "integrity" "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" 890 | "resolved" "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz" 891 | "version" "2.0.2" 892 | 893 | "fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": 894 | "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 895 | "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 896 | "version" "3.1.3" 897 | 898 | "fast-glob@^3.2.11", "fast-glob@^3.2.9": 899 | "integrity" "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==" 900 | "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" 901 | "version" "3.2.11" 902 | dependencies: 903 | "@nodelib/fs.stat" "^2.0.2" 904 | "@nodelib/fs.walk" "^1.2.3" 905 | "glob-parent" "^5.1.2" 906 | "merge2" "^1.3.0" 907 | "micromatch" "^4.0.4" 908 | 909 | "fast-json-stable-stringify@^2.0.0": 910 | "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 911 | "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" 912 | "version" "2.1.0" 913 | 914 | "fast-levenshtein@^2.0.6": 915 | "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" 916 | "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" 917 | "version" "2.0.6" 918 | 919 | "fastq@^1.6.0": 920 | "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" 921 | "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" 922 | "version" "1.13.0" 923 | dependencies: 924 | "reusify" "^1.0.4" 925 | 926 | "file-entry-cache@^6.0.1": 927 | "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" 928 | "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" 929 | "version" "6.0.1" 930 | dependencies: 931 | "flat-cache" "^3.0.4" 932 | 933 | "fill-range@^7.0.1": 934 | "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" 935 | "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" 936 | "version" "7.0.1" 937 | dependencies: 938 | "to-regex-range" "^5.0.1" 939 | 940 | "find-up@^2.1.0": 941 | "integrity" "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==" 942 | "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" 943 | "version" "2.1.0" 944 | dependencies: 945 | "locate-path" "^2.0.0" 946 | 947 | "flat-cache@^3.0.4": 948 | "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" 949 | "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" 950 | "version" "3.0.4" 951 | dependencies: 952 | "flatted" "^3.1.0" 953 | "rimraf" "^3.0.2" 954 | 955 | "flatted@^3.1.0": 956 | "integrity" "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==" 957 | "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz" 958 | "version" "3.2.6" 959 | 960 | "follow-redirects@^1.14.9", "follow-redirects@^1.2.4": 961 | "integrity" "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" 962 | "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz" 963 | "version" "1.15.1" 964 | 965 | "form-data@^4.0.0": 966 | "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" 967 | "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" 968 | "version" "4.0.0" 969 | dependencies: 970 | "asynckit" "^0.4.0" 971 | "combined-stream" "^1.0.8" 972 | "mime-types" "^2.1.12" 973 | 974 | "form-urlencoded@^2.0.7": 975 | "integrity" "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA==" 976 | "resolved" "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz" 977 | "version" "2.0.9" 978 | 979 | "fraction.js@^4.2.0": 980 | "integrity" "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" 981 | "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" 982 | "version" "4.2.0" 983 | 984 | "from2@^2.1.1": 985 | "integrity" "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==" 986 | "resolved" "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" 987 | "version" "2.3.0" 988 | dependencies: 989 | "inherits" "^2.0.1" 990 | "readable-stream" "^2.0.0" 991 | 992 | "fs.realpath@^1.0.0": 993 | "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 994 | "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 995 | "version" "1.0.0" 996 | 997 | "function-bind@^1.1.1": 998 | "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 999 | "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" 1000 | "version" "1.1.1" 1001 | 1002 | "function.prototype.name@^1.1.5": 1003 | "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" 1004 | "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" 1005 | "version" "1.1.5" 1006 | dependencies: 1007 | "call-bind" "^1.0.2" 1008 | "define-properties" "^1.1.3" 1009 | "es-abstract" "^1.19.0" 1010 | "functions-have-names" "^1.2.2" 1011 | 1012 | "functional-red-black-tree@^1.0.1": 1013 | "integrity" "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" 1014 | "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" 1015 | "version" "1.0.1" 1016 | 1017 | "functions-have-names@^1.2.2": 1018 | "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" 1019 | "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" 1020 | "version" "1.2.3" 1021 | 1022 | "get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1": 1023 | "integrity" "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==" 1024 | "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz" 1025 | "version" "1.1.2" 1026 | dependencies: 1027 | "function-bind" "^1.1.1" 1028 | "has" "^1.0.3" 1029 | "has-symbols" "^1.0.3" 1030 | 1031 | "get-it@^6.0.1": 1032 | "integrity" "sha512-hvk2h2hiOHji57MpBQ/o9CnJT7hpNII7Jio3AyY41I7AmkUVvnYrpQAPIQGc3j7R5QNYnhwyXmok+DSSdBLWbg==" 1033 | "resolved" "https://registry.npmjs.org/get-it/-/get-it-6.1.0.tgz" 1034 | "version" "6.1.0" 1035 | dependencies: 1036 | "@sanity/timed-out" "^4.0.2" 1037 | "create-error-class" "^3.0.2" 1038 | "debug" "^2.6.8" 1039 | "decompress-response" "^6.0.0" 1040 | "follow-redirects" "^1.2.4" 1041 | "form-urlencoded" "^2.0.7" 1042 | "into-stream" "^3.1.0" 1043 | "is-plain-object" "^2.0.4" 1044 | "is-retry-allowed" "^1.1.0" 1045 | "is-stream" "^1.1.0" 1046 | "nano-pubsub" "^1.0.2" 1047 | "object-assign" "^4.1.1" 1048 | "parse-headers" "^2.0.4" 1049 | "progress-stream" "^2.0.0" 1050 | "same-origin" "^0.1.1" 1051 | "simple-concat" "^1.0.1" 1052 | "tunnel-agent" "^0.6.0" 1053 | "url-parse" "^1.1.9" 1054 | 1055 | "get-symbol-description@^1.0.0": 1056 | "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" 1057 | "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" 1058 | "version" "1.0.0" 1059 | dependencies: 1060 | "call-bind" "^1.0.2" 1061 | "get-intrinsic" "^1.1.1" 1062 | 1063 | "glob-parent@^5.1.2": 1064 | "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" 1065 | "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 1066 | "version" "5.1.2" 1067 | dependencies: 1068 | "is-glob" "^4.0.1" 1069 | 1070 | "glob-parent@^6.0.1", "glob-parent@^6.0.2": 1071 | "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" 1072 | "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" 1073 | "version" "6.0.2" 1074 | dependencies: 1075 | "is-glob" "^4.0.3" 1076 | 1077 | "glob-parent@~5.1.2": 1078 | "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" 1079 | "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 1080 | "version" "5.1.2" 1081 | dependencies: 1082 | "is-glob" "^4.0.1" 1083 | 1084 | "glob@^7.1.3", "glob@^7.2.0": 1085 | "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" 1086 | "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" 1087 | "version" "7.2.3" 1088 | dependencies: 1089 | "fs.realpath" "^1.0.0" 1090 | "inflight" "^1.0.4" 1091 | "inherits" "2" 1092 | "minimatch" "^3.1.1" 1093 | "once" "^1.3.0" 1094 | "path-is-absolute" "^1.0.0" 1095 | 1096 | "glob@7.1.7": 1097 | "integrity" "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==" 1098 | "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" 1099 | "version" "7.1.7" 1100 | dependencies: 1101 | "fs.realpath" "^1.0.0" 1102 | "inflight" "^1.0.4" 1103 | "inherits" "2" 1104 | "minimatch" "^3.0.4" 1105 | "once" "^1.3.0" 1106 | "path-is-absolute" "^1.0.0" 1107 | 1108 | "globals@^13.15.0": 1109 | "integrity" "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==" 1110 | "resolved" "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz" 1111 | "version" "13.15.0" 1112 | dependencies: 1113 | "type-fest" "^0.20.2" 1114 | 1115 | "globby@^11.1.0": 1116 | "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" 1117 | "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" 1118 | "version" "11.1.0" 1119 | dependencies: 1120 | "array-union" "^2.1.0" 1121 | "dir-glob" "^3.0.1" 1122 | "fast-glob" "^3.2.9" 1123 | "ignore" "^5.2.0" 1124 | "merge2" "^1.4.1" 1125 | "slash" "^3.0.0" 1126 | 1127 | "has-bigints@^1.0.1", "has-bigints@^1.0.2": 1128 | "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" 1129 | "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" 1130 | "version" "1.0.2" 1131 | 1132 | "has-flag@^4.0.0": 1133 | "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1134 | "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 1135 | "version" "4.0.0" 1136 | 1137 | "has-property-descriptors@^1.0.0": 1138 | "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" 1139 | "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" 1140 | "version" "1.0.0" 1141 | dependencies: 1142 | "get-intrinsic" "^1.1.1" 1143 | 1144 | "has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3": 1145 | "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 1146 | "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" 1147 | "version" "1.0.3" 1148 | 1149 | "has-tostringtag@^1.0.0": 1150 | "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" 1151 | "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" 1152 | "version" "1.0.0" 1153 | dependencies: 1154 | "has-symbols" "^1.0.2" 1155 | 1156 | "has@^1.0.3": 1157 | "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" 1158 | "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" 1159 | "version" "1.0.3" 1160 | dependencies: 1161 | "function-bind" "^1.1.1" 1162 | 1163 | "ignore@^5.2.0": 1164 | "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" 1165 | "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" 1166 | "version" "5.2.0" 1167 | 1168 | "import-fresh@^3.0.0", "import-fresh@^3.2.1": 1169 | "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" 1170 | "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" 1171 | "version" "3.3.0" 1172 | dependencies: 1173 | "parent-module" "^1.0.0" 1174 | "resolve-from" "^4.0.0" 1175 | 1176 | "imurmurhash@^0.1.4": 1177 | "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" 1178 | "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" 1179 | "version" "0.1.4" 1180 | 1181 | "inflight@^1.0.4": 1182 | "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" 1183 | "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 1184 | "version" "1.0.6" 1185 | dependencies: 1186 | "once" "^1.3.0" 1187 | "wrappy" "1" 1188 | 1189 | "inherits@^2.0.1", "inherits@~2.0.3", "inherits@2": 1190 | "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1191 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 1192 | "version" "2.0.4" 1193 | 1194 | "internal-slot@^1.0.3": 1195 | "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" 1196 | "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" 1197 | "version" "1.0.3" 1198 | dependencies: 1199 | "get-intrinsic" "^1.1.0" 1200 | "has" "^1.0.3" 1201 | "side-channel" "^1.0.4" 1202 | 1203 | "into-stream@^3.1.0": 1204 | "integrity" "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==" 1205 | "resolved" "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz" 1206 | "version" "3.1.0" 1207 | dependencies: 1208 | "from2" "^2.1.1" 1209 | "p-is-promise" "^1.1.0" 1210 | 1211 | "is-bigint@^1.0.1": 1212 | "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" 1213 | "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" 1214 | "version" "1.0.4" 1215 | dependencies: 1216 | "has-bigints" "^1.0.1" 1217 | 1218 | "is-binary-path@~2.1.0": 1219 | "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" 1220 | "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" 1221 | "version" "2.1.0" 1222 | dependencies: 1223 | "binary-extensions" "^2.0.0" 1224 | 1225 | "is-boolean-object@^1.1.0": 1226 | "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" 1227 | "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" 1228 | "version" "1.1.2" 1229 | dependencies: 1230 | "call-bind" "^1.0.2" 1231 | "has-tostringtag" "^1.0.0" 1232 | 1233 | "is-callable@^1.1.4", "is-callable@^1.2.4": 1234 | "integrity" "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" 1235 | "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" 1236 | "version" "1.2.4" 1237 | 1238 | "is-core-module@^2.8.1", "is-core-module@^2.9.0": 1239 | "integrity" "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==" 1240 | "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz" 1241 | "version" "2.9.0" 1242 | dependencies: 1243 | "has" "^1.0.3" 1244 | 1245 | "is-date-object@^1.0.1": 1246 | "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" 1247 | "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" 1248 | "version" "1.0.5" 1249 | dependencies: 1250 | "has-tostringtag" "^1.0.0" 1251 | 1252 | "is-extglob@^2.1.1": 1253 | "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 1254 | "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 1255 | "version" "2.1.1" 1256 | 1257 | "is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": 1258 | "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" 1259 | "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 1260 | "version" "4.0.3" 1261 | dependencies: 1262 | "is-extglob" "^2.1.1" 1263 | 1264 | "is-negative-zero@^2.0.2": 1265 | "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" 1266 | "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" 1267 | "version" "2.0.2" 1268 | 1269 | "is-number-object@^1.0.4": 1270 | "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" 1271 | "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" 1272 | "version" "1.0.7" 1273 | dependencies: 1274 | "has-tostringtag" "^1.0.0" 1275 | 1276 | "is-number@^7.0.0": 1277 | "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1278 | "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 1279 | "version" "7.0.0" 1280 | 1281 | "is-plain-object@^2.0.4": 1282 | "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" 1283 | "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" 1284 | "version" "2.0.4" 1285 | dependencies: 1286 | "isobject" "^3.0.1" 1287 | 1288 | "is-regex@^1.1.4": 1289 | "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" 1290 | "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" 1291 | "version" "1.1.4" 1292 | dependencies: 1293 | "call-bind" "^1.0.2" 1294 | "has-tostringtag" "^1.0.0" 1295 | 1296 | "is-retry-allowed@^1.1.0": 1297 | "integrity" "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" 1298 | "resolved" "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz" 1299 | "version" "1.2.0" 1300 | 1301 | "is-shared-array-buffer@^1.0.2": 1302 | "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" 1303 | "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" 1304 | "version" "1.0.2" 1305 | dependencies: 1306 | "call-bind" "^1.0.2" 1307 | 1308 | "is-stream@^1.1.0": 1309 | "integrity" "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" 1310 | "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" 1311 | "version" "1.1.0" 1312 | 1313 | "is-string@^1.0.5", "is-string@^1.0.7": 1314 | "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" 1315 | "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" 1316 | "version" "1.0.7" 1317 | dependencies: 1318 | "has-tostringtag" "^1.0.0" 1319 | 1320 | "is-symbol@^1.0.2", "is-symbol@^1.0.3": 1321 | "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" 1322 | "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" 1323 | "version" "1.0.4" 1324 | dependencies: 1325 | "has-symbols" "^1.0.2" 1326 | 1327 | "is-weakref@^1.0.2": 1328 | "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" 1329 | "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" 1330 | "version" "1.0.2" 1331 | dependencies: 1332 | "call-bind" "^1.0.2" 1333 | 1334 | "isarray@~1.0.0": 1335 | "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 1336 | "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 1337 | "version" "1.0.0" 1338 | 1339 | "isexe@^2.0.0": 1340 | "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 1341 | "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 1342 | "version" "2.0.0" 1343 | 1344 | "isobject@^3.0.1": 1345 | "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" 1346 | "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" 1347 | "version" "3.0.1" 1348 | 1349 | "js-tokens@^3.0.0 || ^4.0.0": 1350 | "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1351 | "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 1352 | "version" "4.0.0" 1353 | 1354 | "js-yaml@^4.1.0": 1355 | "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" 1356 | "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" 1357 | "version" "4.1.0" 1358 | dependencies: 1359 | "argparse" "^2.0.1" 1360 | 1361 | "json-schema-traverse@^0.4.1": 1362 | "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1363 | "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" 1364 | "version" "0.4.1" 1365 | 1366 | "json-stable-stringify-without-jsonify@^1.0.1": 1367 | "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" 1368 | "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" 1369 | "version" "1.0.1" 1370 | 1371 | "json5@^1.0.1": 1372 | "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" 1373 | "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" 1374 | "version" "1.0.1" 1375 | dependencies: 1376 | "minimist" "^1.2.0" 1377 | 1378 | "jsx-ast-utils@^2.4.1 || ^3.0.0", "jsx-ast-utils@^3.3.1": 1379 | "integrity" "sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ==" 1380 | "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz" 1381 | "version" "3.3.1" 1382 | dependencies: 1383 | "array-includes" "^3.1.5" 1384 | "object.assign" "^4.1.2" 1385 | 1386 | "jwt-decode@^3.1.2": 1387 | "integrity" "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" 1388 | "resolved" "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz" 1389 | "version" "3.1.2" 1390 | 1391 | "language-subtag-registry@~0.3.2": 1392 | "integrity" "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==" 1393 | "resolved" "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz" 1394 | "version" "0.3.21" 1395 | 1396 | "language-tags@^1.0.5": 1397 | "integrity" "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==" 1398 | "resolved" "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" 1399 | "version" "1.0.5" 1400 | dependencies: 1401 | "language-subtag-registry" "~0.3.2" 1402 | 1403 | "levn@^0.4.1": 1404 | "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" 1405 | "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" 1406 | "version" "0.4.1" 1407 | dependencies: 1408 | "prelude-ls" "^1.2.1" 1409 | "type-check" "~0.4.0" 1410 | 1411 | "lilconfig@^2.0.5": 1412 | "integrity" "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==" 1413 | "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" 1414 | "version" "2.0.5" 1415 | 1416 | "locate-path@^2.0.0": 1417 | "integrity" "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==" 1418 | "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" 1419 | "version" "2.0.0" 1420 | dependencies: 1421 | "p-locate" "^2.0.0" 1422 | "path-exists" "^3.0.0" 1423 | 1424 | "lodash.merge@^4.6.2": 1425 | "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" 1426 | "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" 1427 | "version" "4.6.2" 1428 | 1429 | "loose-envify@^1.1.0", "loose-envify@^1.4.0": 1430 | "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" 1431 | "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" 1432 | "version" "1.4.0" 1433 | dependencies: 1434 | "js-tokens" "^3.0.0 || ^4.0.0" 1435 | 1436 | "lru-cache@^6.0.0": 1437 | "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" 1438 | "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" 1439 | "version" "6.0.0" 1440 | dependencies: 1441 | "yallist" "^4.0.0" 1442 | 1443 | "make-error@^1.3.0": 1444 | "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" 1445 | "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" 1446 | "version" "1.3.6" 1447 | 1448 | "merge2@^1.3.0", "merge2@^1.4.1": 1449 | "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" 1450 | "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" 1451 | "version" "1.4.1" 1452 | 1453 | "micromatch@^4.0.4": 1454 | "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" 1455 | "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" 1456 | "version" "4.0.5" 1457 | dependencies: 1458 | "braces" "^3.0.2" 1459 | "picomatch" "^2.3.1" 1460 | 1461 | "mime-db@1.52.0": 1462 | "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1463 | "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" 1464 | "version" "1.52.0" 1465 | 1466 | "mime-types@^2.1.12": 1467 | "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" 1468 | "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" 1469 | "version" "2.1.35" 1470 | dependencies: 1471 | "mime-db" "1.52.0" 1472 | 1473 | "mimic-response@^3.1.0": 1474 | "integrity" "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" 1475 | "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" 1476 | "version" "3.1.0" 1477 | 1478 | "minimatch@^3.0.4", "minimatch@^3.1.1", "minimatch@^3.1.2": 1479 | "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" 1480 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 1481 | "version" "3.1.2" 1482 | dependencies: 1483 | "brace-expansion" "^1.1.7" 1484 | 1485 | "minimist@^1.2.0", "minimist@^1.2.6": 1486 | "integrity" "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 1487 | "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" 1488 | "version" "1.2.6" 1489 | 1490 | "ms@^2.1.1": 1491 | "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1492 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 1493 | "version" "2.1.3" 1494 | 1495 | "ms@2.0.0": 1496 | "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1497 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 1498 | "version" "2.0.0" 1499 | 1500 | "ms@2.1.2": 1501 | "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1502 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 1503 | "version" "2.1.2" 1504 | 1505 | "nano-pubsub@^1.0.2": 1506 | "integrity" "sha512-HtPs1RbULM/z8wt3BbeeZlxVNiJbl+zQAwwrbc0KAq5NHaCG3MmffOVCpRhNTs+TK67MdN6aZ+5wzPtRZvME+w==" 1507 | "resolved" "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz" 1508 | "version" "1.0.2" 1509 | 1510 | "nanoid@^3.1.30", "nanoid@^3.3.4": 1511 | "integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" 1512 | "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" 1513 | "version" "3.3.4" 1514 | 1515 | "natural-compare@^1.4.0": 1516 | "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" 1517 | "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" 1518 | "version" "1.4.0" 1519 | 1520 | "next@>=10.2.0", "next@12.1.6": 1521 | "integrity" "sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A==" 1522 | "resolved" "https://registry.npmjs.org/next/-/next-12.1.6.tgz" 1523 | "version" "12.1.6" 1524 | dependencies: 1525 | "@next/env" "12.1.6" 1526 | "caniuse-lite" "^1.0.30001332" 1527 | "postcss" "8.4.5" 1528 | "styled-jsx" "5.0.2" 1529 | optionalDependencies: 1530 | "@next/swc-android-arm-eabi" "12.1.6" 1531 | "@next/swc-android-arm64" "12.1.6" 1532 | "@next/swc-darwin-arm64" "12.1.6" 1533 | "@next/swc-darwin-x64" "12.1.6" 1534 | "@next/swc-linux-arm-gnueabihf" "12.1.6" 1535 | "@next/swc-linux-arm64-gnu" "12.1.6" 1536 | "@next/swc-linux-arm64-musl" "12.1.6" 1537 | "@next/swc-linux-x64-gnu" "12.1.6" 1538 | "@next/swc-linux-x64-musl" "12.1.6" 1539 | "@next/swc-win32-arm64-msvc" "12.1.6" 1540 | "@next/swc-win32-ia32-msvc" "12.1.6" 1541 | "@next/swc-win32-x64-msvc" "12.1.6" 1542 | 1543 | "node-releases@^2.0.5": 1544 | "integrity" "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" 1545 | "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz" 1546 | "version" "2.0.5" 1547 | 1548 | "normalize-path@^3.0.0", "normalize-path@~3.0.0": 1549 | "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 1550 | "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 1551 | "version" "3.0.0" 1552 | 1553 | "normalize-range@^0.1.2": 1554 | "integrity" "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" 1555 | "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" 1556 | "version" "0.1.2" 1557 | 1558 | "object-assign@^4.1.1": 1559 | "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1560 | "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 1561 | "version" "4.1.1" 1562 | 1563 | "object-hash@^3.0.0": 1564 | "integrity" "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" 1565 | "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" 1566 | "version" "3.0.0" 1567 | 1568 | "object-inspect@^1.12.0", "object-inspect@^1.9.0": 1569 | "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 1570 | "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" 1571 | "version" "1.12.2" 1572 | 1573 | "object-keys@^1.1.1": 1574 | "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 1575 | "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" 1576 | "version" "1.1.1" 1577 | 1578 | "object.assign@^4.1.2": 1579 | "integrity" "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==" 1580 | "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" 1581 | "version" "4.1.2" 1582 | dependencies: 1583 | "call-bind" "^1.0.0" 1584 | "define-properties" "^1.1.3" 1585 | "has-symbols" "^1.0.1" 1586 | "object-keys" "^1.1.1" 1587 | 1588 | "object.entries@^1.1.5": 1589 | "integrity" "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==" 1590 | "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" 1591 | "version" "1.1.5" 1592 | dependencies: 1593 | "call-bind" "^1.0.2" 1594 | "define-properties" "^1.1.3" 1595 | "es-abstract" "^1.19.1" 1596 | 1597 | "object.fromentries@^2.0.5": 1598 | "integrity" "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==" 1599 | "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" 1600 | "version" "2.0.5" 1601 | dependencies: 1602 | "call-bind" "^1.0.2" 1603 | "define-properties" "^1.1.3" 1604 | "es-abstract" "^1.19.1" 1605 | 1606 | "object.hasown@^1.1.1": 1607 | "integrity" "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==" 1608 | "resolved" "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz" 1609 | "version" "1.1.1" 1610 | dependencies: 1611 | "define-properties" "^1.1.4" 1612 | "es-abstract" "^1.19.5" 1613 | 1614 | "object.values@^1.1.5": 1615 | "integrity" "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==" 1616 | "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" 1617 | "version" "1.1.5" 1618 | dependencies: 1619 | "call-bind" "^1.0.2" 1620 | "define-properties" "^1.1.3" 1621 | "es-abstract" "^1.19.1" 1622 | 1623 | "once@^1.3.0": 1624 | "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" 1625 | "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1626 | "version" "1.4.0" 1627 | dependencies: 1628 | "wrappy" "1" 1629 | 1630 | "optionator@^0.9.1": 1631 | "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" 1632 | "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" 1633 | "version" "0.9.1" 1634 | dependencies: 1635 | "deep-is" "^0.1.3" 1636 | "fast-levenshtein" "^2.0.6" 1637 | "levn" "^0.4.1" 1638 | "prelude-ls" "^1.2.1" 1639 | "type-check" "^0.4.0" 1640 | "word-wrap" "^1.2.3" 1641 | 1642 | "p-is-promise@^1.1.0": 1643 | "integrity" "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==" 1644 | "resolved" "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz" 1645 | "version" "1.1.0" 1646 | 1647 | "p-limit@^1.1.0": 1648 | "integrity" "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==" 1649 | "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" 1650 | "version" "1.3.0" 1651 | dependencies: 1652 | "p-try" "^1.0.0" 1653 | 1654 | "p-locate@^2.0.0": 1655 | "integrity" "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==" 1656 | "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" 1657 | "version" "2.0.0" 1658 | dependencies: 1659 | "p-limit" "^1.1.0" 1660 | 1661 | "p-try@^1.0.0": 1662 | "integrity" "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==" 1663 | "resolved" "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" 1664 | "version" "1.0.0" 1665 | 1666 | "parent-module@^1.0.0": 1667 | "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" 1668 | "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" 1669 | "version" "1.0.1" 1670 | dependencies: 1671 | "callsites" "^3.0.0" 1672 | 1673 | "parse-headers@^2.0.4": 1674 | "integrity" "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" 1675 | "resolved" "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz" 1676 | "version" "2.0.5" 1677 | 1678 | "path-exists@^3.0.0": 1679 | "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" 1680 | "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" 1681 | "version" "3.0.0" 1682 | 1683 | "path-is-absolute@^1.0.0": 1684 | "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" 1685 | "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1686 | "version" "1.0.1" 1687 | 1688 | "path-key@^3.1.0": 1689 | "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 1690 | "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" 1691 | "version" "3.1.1" 1692 | 1693 | "path-parse@^1.0.7": 1694 | "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 1695 | "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 1696 | "version" "1.0.7" 1697 | 1698 | "path-type@^4.0.0": 1699 | "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 1700 | "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" 1701 | "version" "4.0.0" 1702 | 1703 | "picocolors@^1.0.0": 1704 | "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1705 | "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" 1706 | "version" "1.0.0" 1707 | 1708 | "picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.3.1": 1709 | "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 1710 | "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 1711 | "version" "2.3.1" 1712 | 1713 | "pify@^2.3.0": 1714 | "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" 1715 | "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" 1716 | "version" "2.3.0" 1717 | 1718 | "postcss-import@^14.1.0": 1719 | "integrity" "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==" 1720 | "resolved" "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz" 1721 | "version" "14.1.0" 1722 | dependencies: 1723 | "postcss-value-parser" "^4.0.0" 1724 | "read-cache" "^1.0.0" 1725 | "resolve" "^1.1.7" 1726 | 1727 | "postcss-js@^4.0.0": 1728 | "integrity" "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==" 1729 | "resolved" "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz" 1730 | "version" "4.0.0" 1731 | dependencies: 1732 | "camelcase-css" "^2.0.1" 1733 | 1734 | "postcss-load-config@^3.1.4": 1735 | "integrity" "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==" 1736 | "resolved" "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz" 1737 | "version" "3.1.4" 1738 | dependencies: 1739 | "lilconfig" "^2.0.5" 1740 | "yaml" "^1.10.2" 1741 | 1742 | "postcss-nested@5.0.6": 1743 | "integrity" "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==" 1744 | "resolved" "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz" 1745 | "version" "5.0.6" 1746 | dependencies: 1747 | "postcss-selector-parser" "^6.0.6" 1748 | 1749 | "postcss-selector-parser@^6.0.10", "postcss-selector-parser@^6.0.6": 1750 | "integrity" "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==" 1751 | "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" 1752 | "version" "6.0.10" 1753 | dependencies: 1754 | "cssesc" "^3.0.0" 1755 | "util-deprecate" "^1.0.2" 1756 | 1757 | "postcss-value-parser@^4.0.0", "postcss-value-parser@^4.2.0": 1758 | "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" 1759 | "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" 1760 | "version" "4.2.0" 1761 | 1762 | "postcss@^8.0.0", "postcss@^8.1.0", "postcss@^8.2.14", "postcss@^8.3.3", "postcss@^8.4.14", "postcss@>=8.0.9": 1763 | "integrity" "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==" 1764 | "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz" 1765 | "version" "8.4.14" 1766 | dependencies: 1767 | "nanoid" "^3.3.4" 1768 | "picocolors" "^1.0.0" 1769 | "source-map-js" "^1.0.2" 1770 | 1771 | "postcss@8.4.5": 1772 | "integrity" "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==" 1773 | "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz" 1774 | "version" "8.4.5" 1775 | dependencies: 1776 | "nanoid" "^3.1.30" 1777 | "picocolors" "^1.0.0" 1778 | "source-map-js" "^1.0.1" 1779 | 1780 | "prelude-ls@^1.2.1": 1781 | "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" 1782 | "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" 1783 | "version" "1.2.1" 1784 | 1785 | "process-nextick-args@~2.0.0": 1786 | "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1787 | "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" 1788 | "version" "2.0.1" 1789 | 1790 | "progress-stream@^2.0.0": 1791 | "integrity" "sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==" 1792 | "resolved" "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz" 1793 | "version" "2.0.0" 1794 | dependencies: 1795 | "speedometer" "~1.0.0" 1796 | "through2" "~2.0.3" 1797 | 1798 | "prop-types@^15.6.0", "prop-types@^15.8.1": 1799 | "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" 1800 | "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" 1801 | "version" "15.8.1" 1802 | dependencies: 1803 | "loose-envify" "^1.4.0" 1804 | "object-assign" "^4.1.1" 1805 | "react-is" "^16.13.1" 1806 | 1807 | "punycode@^2.1.0": 1808 | "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 1809 | "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" 1810 | "version" "2.1.1" 1811 | 1812 | "querystringify@^2.1.1": 1813 | "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 1814 | "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" 1815 | "version" "2.2.0" 1816 | 1817 | "queue-microtask@^1.2.2": 1818 | "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 1819 | "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" 1820 | "version" "1.2.3" 1821 | 1822 | "quick-lru@^5.1.1": 1823 | "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" 1824 | "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" 1825 | "version" "5.1.1" 1826 | 1827 | "react-dom@^16 || ^17", "react-dom@^17.0.2 || ^18.0.0-0", "react-dom@>=16.8.0", "react-dom@18.1.0": 1828 | "integrity" "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==" 1829 | "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz" 1830 | "version" "18.1.0" 1831 | dependencies: 1832 | "loose-envify" "^1.1.0" 1833 | "scheduler" "^0.22.0" 1834 | 1835 | "react-google-login@^5.2.2": 1836 | "integrity" "sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g==" 1837 | "resolved" "https://registry.npmjs.org/react-google-login/-/react-google-login-5.2.2.tgz" 1838 | "version" "5.2.2" 1839 | dependencies: 1840 | "@types/react" "*" 1841 | "prop-types" "^15.6.0" 1842 | 1843 | "react-icons@^4.3.1": 1844 | "integrity" "sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg==" 1845 | "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.4.0.tgz" 1846 | "version" "4.4.0" 1847 | 1848 | "react-is@^16.13.1": 1849 | "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 1850 | "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" 1851 | "version" "16.13.1" 1852 | 1853 | "react@*", "react@^16 || ^17", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18.0.0-0", "react@^18.1.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", "react@>=16.8", "react@>=16.8.0", "react@18.1.0": 1854 | "integrity" "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==" 1855 | "resolved" "https://registry.npmjs.org/react/-/react-18.1.0.tgz" 1856 | "version" "18.1.0" 1857 | dependencies: 1858 | "loose-envify" "^1.1.0" 1859 | 1860 | "read-cache@^1.0.0": 1861 | "integrity" "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==" 1862 | "resolved" "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" 1863 | "version" "1.0.0" 1864 | dependencies: 1865 | "pify" "^2.3.0" 1866 | 1867 | "readable-stream@^2.0.0", "readable-stream@~2.3.6": 1868 | "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" 1869 | "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" 1870 | "version" "2.3.7" 1871 | dependencies: 1872 | "core-util-is" "~1.0.0" 1873 | "inherits" "~2.0.3" 1874 | "isarray" "~1.0.0" 1875 | "process-nextick-args" "~2.0.0" 1876 | "safe-buffer" "~5.1.1" 1877 | "string_decoder" "~1.1.1" 1878 | "util-deprecate" "~1.0.1" 1879 | 1880 | "readdirp@~3.6.0": 1881 | "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" 1882 | "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" 1883 | "version" "3.6.0" 1884 | dependencies: 1885 | "picomatch" "^2.2.1" 1886 | 1887 | "regenerator-runtime@^0.13.4": 1888 | "integrity" "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 1889 | "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" 1890 | "version" "0.13.9" 1891 | 1892 | "regexp.prototype.flags@^1.4.1", "regexp.prototype.flags@^1.4.3": 1893 | "integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==" 1894 | "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" 1895 | "version" "1.4.3" 1896 | dependencies: 1897 | "call-bind" "^1.0.2" 1898 | "define-properties" "^1.1.3" 1899 | "functions-have-names" "^1.2.2" 1900 | 1901 | "regexpp@^3.2.0": 1902 | "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" 1903 | "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" 1904 | "version" "3.2.0" 1905 | 1906 | "requires-port@^1.0.0": 1907 | "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 1908 | "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" 1909 | "version" "1.0.0" 1910 | 1911 | "resolve-from@^4.0.0": 1912 | "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 1913 | "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" 1914 | "version" "4.0.0" 1915 | 1916 | "resolve@^1.1.7", "resolve@^1.20.0", "resolve@^1.22.0": 1917 | "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" 1918 | "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" 1919 | "version" "1.22.1" 1920 | dependencies: 1921 | "is-core-module" "^2.9.0" 1922 | "path-parse" "^1.0.7" 1923 | "supports-preserve-symlinks-flag" "^1.0.0" 1924 | 1925 | "resolve@^2.0.0-next.3": 1926 | "integrity" "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==" 1927 | "resolved" "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" 1928 | "version" "2.0.0-next.4" 1929 | dependencies: 1930 | "is-core-module" "^2.9.0" 1931 | "path-parse" "^1.0.7" 1932 | "supports-preserve-symlinks-flag" "^1.0.0" 1933 | 1934 | "reusify@^1.0.4": 1935 | "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 1936 | "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" 1937 | "version" "1.0.4" 1938 | 1939 | "rimraf@^3.0.2": 1940 | "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" 1941 | "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" 1942 | "version" "3.0.2" 1943 | dependencies: 1944 | "glob" "^7.1.3" 1945 | 1946 | "run-parallel@^1.1.9": 1947 | "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" 1948 | "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" 1949 | "version" "1.2.0" 1950 | dependencies: 1951 | "queue-microtask" "^1.2.2" 1952 | 1953 | "rxjs@^6.0.0": 1954 | "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" 1955 | "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" 1956 | "version" "6.6.7" 1957 | dependencies: 1958 | "tslib" "^1.9.0" 1959 | 1960 | "safe-buffer@^5.0.1", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1": 1961 | "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1962 | "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" 1963 | "version" "5.1.2" 1964 | 1965 | "same-origin@^0.1.1": 1966 | "integrity" "sha512-effkSW9cap879l6CVNdwL5iubVz8tkspqgfiqwgBgFQspV7152WHaLzr5590yR8oFgt7E1d4lO09uUhtAgUPoA==" 1967 | "resolved" "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz" 1968 | "version" "0.1.1" 1969 | 1970 | "scheduler@^0.22.0": 1971 | "integrity" "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==" 1972 | "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz" 1973 | "version" "0.22.0" 1974 | dependencies: 1975 | "loose-envify" "^1.1.0" 1976 | 1977 | "semver@^6.3.0": 1978 | "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1979 | "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" 1980 | "version" "6.3.0" 1981 | 1982 | "semver@^7.3.7": 1983 | "integrity" "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==" 1984 | "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" 1985 | "version" "7.3.7" 1986 | dependencies: 1987 | "lru-cache" "^6.0.0" 1988 | 1989 | "shebang-command@^2.0.0": 1990 | "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" 1991 | "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" 1992 | "version" "2.0.0" 1993 | dependencies: 1994 | "shebang-regex" "^3.0.0" 1995 | 1996 | "shebang-regex@^3.0.0": 1997 | "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 1998 | "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" 1999 | "version" "3.0.0" 2000 | 2001 | "side-channel@^1.0.4": 2002 | "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" 2003 | "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" 2004 | "version" "1.0.4" 2005 | dependencies: 2006 | "call-bind" "^1.0.0" 2007 | "get-intrinsic" "^1.0.2" 2008 | "object-inspect" "^1.9.0" 2009 | 2010 | "simple-concat@^1.0.1": 2011 | "integrity" "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" 2012 | "resolved" "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" 2013 | "version" "1.0.1" 2014 | 2015 | "slash@^3.0.0": 2016 | "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" 2017 | "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" 2018 | "version" "3.0.0" 2019 | 2020 | "source-map-js@^1.0.1", "source-map-js@^1.0.2": 2021 | "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 2022 | "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" 2023 | "version" "1.0.2" 2024 | 2025 | "speedometer@~1.0.0": 2026 | "integrity" "sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==" 2027 | "resolved" "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz" 2028 | "version" "1.0.0" 2029 | 2030 | "string_decoder@~1.1.1": 2031 | "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" 2032 | "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" 2033 | "version" "1.1.1" 2034 | dependencies: 2035 | "safe-buffer" "~5.1.0" 2036 | 2037 | "string.prototype.matchall@^4.0.7": 2038 | "integrity" "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==" 2039 | "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz" 2040 | "version" "4.0.7" 2041 | dependencies: 2042 | "call-bind" "^1.0.2" 2043 | "define-properties" "^1.1.3" 2044 | "es-abstract" "^1.19.1" 2045 | "get-intrinsic" "^1.1.1" 2046 | "has-symbols" "^1.0.3" 2047 | "internal-slot" "^1.0.3" 2048 | "regexp.prototype.flags" "^1.4.1" 2049 | "side-channel" "^1.0.4" 2050 | 2051 | "string.prototype.trimend@^1.0.5": 2052 | "integrity" "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==" 2053 | "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" 2054 | "version" "1.0.5" 2055 | dependencies: 2056 | "call-bind" "^1.0.2" 2057 | "define-properties" "^1.1.4" 2058 | "es-abstract" "^1.19.5" 2059 | 2060 | "string.prototype.trimstart@^1.0.5": 2061 | "integrity" "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==" 2062 | "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" 2063 | "version" "1.0.5" 2064 | dependencies: 2065 | "call-bind" "^1.0.2" 2066 | "define-properties" "^1.1.4" 2067 | "es-abstract" "^1.19.5" 2068 | 2069 | "strip-ansi@^6.0.1": 2070 | "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" 2071 | "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 2072 | "version" "6.0.1" 2073 | dependencies: 2074 | "ansi-regex" "^5.0.1" 2075 | 2076 | "strip-bom@^3.0.0": 2077 | "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" 2078 | "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" 2079 | "version" "3.0.0" 2080 | 2081 | "strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": 2082 | "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" 2083 | "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 2084 | "version" "3.1.1" 2085 | 2086 | "styled-jsx@5.0.2": 2087 | "integrity" "sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==" 2088 | "resolved" "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.2.tgz" 2089 | "version" "5.0.2" 2090 | 2091 | "supports-color@^7.1.0": 2092 | "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" 2093 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 2094 | "version" "7.2.0" 2095 | dependencies: 2096 | "has-flag" "^4.0.0" 2097 | 2098 | "supports-preserve-symlinks-flag@^1.0.0": 2099 | "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" 2100 | "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 2101 | "version" "1.0.0" 2102 | 2103 | "tailwindcss@^3.1.4": 2104 | "integrity" "sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==" 2105 | "resolved" "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.4.tgz" 2106 | "version" "3.1.4" 2107 | dependencies: 2108 | "arg" "^5.0.2" 2109 | "chokidar" "^3.5.3" 2110 | "color-name" "^1.1.4" 2111 | "detective" "^5.2.1" 2112 | "didyoumean" "^1.2.2" 2113 | "dlv" "^1.1.3" 2114 | "fast-glob" "^3.2.11" 2115 | "glob-parent" "^6.0.2" 2116 | "is-glob" "^4.0.3" 2117 | "lilconfig" "^2.0.5" 2118 | "normalize-path" "^3.0.0" 2119 | "object-hash" "^3.0.0" 2120 | "picocolors" "^1.0.0" 2121 | "postcss" "^8.4.14" 2122 | "postcss-import" "^14.1.0" 2123 | "postcss-js" "^4.0.0" 2124 | "postcss-load-config" "^3.1.4" 2125 | "postcss-nested" "5.0.6" 2126 | "postcss-selector-parser" "^6.0.10" 2127 | "postcss-value-parser" "^4.2.0" 2128 | "quick-lru" "^5.1.1" 2129 | "resolve" "^1.22.0" 2130 | 2131 | "text-table@^0.2.0": 2132 | "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" 2133 | "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" 2134 | "version" "0.2.0" 2135 | 2136 | "through2@~2.0.3": 2137 | "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" 2138 | "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" 2139 | "version" "2.0.5" 2140 | dependencies: 2141 | "readable-stream" "~2.3.6" 2142 | "xtend" "~4.0.1" 2143 | 2144 | "to-regex-range@^5.0.1": 2145 | "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" 2146 | "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 2147 | "version" "5.0.1" 2148 | dependencies: 2149 | "is-number" "^7.0.0" 2150 | 2151 | "tsconfig-paths@^3.14.1": 2152 | "integrity" "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==" 2153 | "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" 2154 | "version" "3.14.1" 2155 | dependencies: 2156 | "@types/json5" "^0.0.29" 2157 | "json5" "^1.0.1" 2158 | "minimist" "^1.2.6" 2159 | "strip-bom" "^3.0.0" 2160 | 2161 | "tslib@^1.8.1", "tslib@^1.9.0": 2162 | "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 2163 | "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" 2164 | "version" "1.14.1" 2165 | 2166 | "tsutils@^3.21.0": 2167 | "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" 2168 | "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" 2169 | "version" "3.21.0" 2170 | dependencies: 2171 | "tslib" "^1.8.1" 2172 | 2173 | "tunnel-agent@^0.6.0": 2174 | "integrity" "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==" 2175 | "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" 2176 | "version" "0.6.0" 2177 | dependencies: 2178 | "safe-buffer" "^5.0.1" 2179 | 2180 | "type-check@^0.4.0", "type-check@~0.4.0": 2181 | "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" 2182 | "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" 2183 | "version" "0.4.0" 2184 | dependencies: 2185 | "prelude-ls" "^1.2.1" 2186 | 2187 | "type-fest@^0.20.2": 2188 | "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" 2189 | "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" 2190 | "version" "0.20.2" 2191 | 2192 | "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", "typescript@>=3.3.1", "typescript@4.7.4": 2193 | "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" 2194 | "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" 2195 | "version" "4.7.4" 2196 | 2197 | "unbox-primitive@^1.0.2": 2198 | "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" 2199 | "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" 2200 | "version" "1.0.2" 2201 | dependencies: 2202 | "call-bind" "^1.0.2" 2203 | "has-bigints" "^1.0.2" 2204 | "has-symbols" "^1.0.3" 2205 | "which-boxed-primitive" "^1.0.2" 2206 | 2207 | "update-browserslist-db@^1.0.0": 2208 | "integrity" "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==" 2209 | "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz" 2210 | "version" "1.0.4" 2211 | dependencies: 2212 | "escalade" "^3.1.1" 2213 | "picocolors" "^1.0.0" 2214 | 2215 | "uri-js@^4.2.2": 2216 | "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" 2217 | "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" 2218 | "version" "4.4.1" 2219 | dependencies: 2220 | "punycode" "^2.1.0" 2221 | 2222 | "url-parse@^1.1.9": 2223 | "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" 2224 | "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" 2225 | "version" "1.5.10" 2226 | dependencies: 2227 | "querystringify" "^2.1.1" 2228 | "requires-port" "^1.0.0" 2229 | 2230 | "use-sync-external-store@1.1.0": 2231 | "integrity" "sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ==" 2232 | "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz" 2233 | "version" "1.1.0" 2234 | 2235 | "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": 2236 | "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 2237 | "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 2238 | "version" "1.0.2" 2239 | 2240 | "uuid@8.3.2": 2241 | "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 2242 | "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" 2243 | "version" "8.3.2" 2244 | 2245 | "uuidv4@^6.2.13": 2246 | "integrity" "sha512-AXyzMjazYB3ovL3q051VLH06Ixj//Knx7QnUSi1T//Ie3io6CpsPu9nVMOx5MoLWh6xV0B9J0hIaxungxXUbPQ==" 2247 | "resolved" "https://registry.npmjs.org/uuidv4/-/uuidv4-6.2.13.tgz" 2248 | "version" "6.2.13" 2249 | dependencies: 2250 | "@types/uuid" "8.3.4" 2251 | "uuid" "8.3.2" 2252 | 2253 | "v8-compile-cache@^2.0.3": 2254 | "integrity" "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" 2255 | "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" 2256 | "version" "2.3.0" 2257 | 2258 | "which-boxed-primitive@^1.0.2": 2259 | "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" 2260 | "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" 2261 | "version" "1.0.2" 2262 | dependencies: 2263 | "is-bigint" "^1.0.1" 2264 | "is-boolean-object" "^1.1.0" 2265 | "is-number-object" "^1.0.4" 2266 | "is-string" "^1.0.5" 2267 | "is-symbol" "^1.0.3" 2268 | 2269 | "which@^2.0.1": 2270 | "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" 2271 | "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 2272 | "version" "2.0.2" 2273 | dependencies: 2274 | "isexe" "^2.0.0" 2275 | 2276 | "word-wrap@^1.2.3": 2277 | "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" 2278 | "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" 2279 | "version" "1.2.3" 2280 | 2281 | "wrappy@1": 2282 | "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 2283 | "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 2284 | "version" "1.0.2" 2285 | 2286 | "xtend@^4.0.2", "xtend@~4.0.1": 2287 | "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 2288 | "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" 2289 | "version" "4.0.2" 2290 | 2291 | "yallist@^4.0.0": 2292 | "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 2293 | "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" 2294 | "version" "4.0.0" 2295 | 2296 | "yaml@^1.10.2": 2297 | "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" 2298 | "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" 2299 | "version" "1.10.2" 2300 | 2301 | "zustand@^4.0.0-rc.1": 2302 | "integrity" "sha512-qgcs7zLqBdHu0PuT3GW4WCIY5SgXdsv30GQMu9Qpp1BA2aS+sNS8l4x0hWuyEhjXkN+701aGWawhKDv6oWJAcw==" 2303 | "resolved" "https://registry.npmjs.org/zustand/-/zustand-4.0.0-rc.1.tgz" 2304 | "version" "4.0.0-rc.1" 2305 | dependencies: 2306 | "use-sync-external-store" "1.1.0" 2307 | --------------------------------------------------------------------------------