├── .eslintrc.json ├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── next.config.js ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── prisma └── schema.prisma ├── public ├── favicon.svg └── next.svg ├── src ├── app │ ├── actions.tsx │ ├── api │ │ └── thread │ │ │ └── route.ts │ ├── create │ │ └── page.tsx │ ├── dashboard │ │ └── page.tsx │ ├── favicon.ico │ ├── globals.css │ ├── layout.tsx │ ├── page.tsx │ └── threads │ │ └── [id] │ │ └── page.tsx ├── components │ ├── dashboard.tsx │ ├── icons │ │ ├── Check.tsx │ │ ├── Copy.tsx │ │ └── GitHub.tsx │ ├── nav-menu.tsx │ ├── navbar.tsx │ ├── thread-form.tsx │ ├── toaster.tsx │ └── ui │ │ └── buttons.tsx ├── lib │ ├── prisma.ts │ ├── schemas.ts │ └── stream.ts ├── pages │ └── api │ │ ├── auth │ │ └── [...nextauth].ts │ │ └── threads │ │ └── index.ts └── types │ └── next-auth.d.ts ├── tailwind.config.js └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "plugin:react-hooks/recommended"], 3 | "plugins": ["react-hooks"] 4 | } 5 | -------------------------------------------------------------------------------- /.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 | 27 | # local env files 28 | .env*.local 29 | .env 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules\\.pnpm\\typescript@5.0.4\\node_modules\\typescript\\lib", 3 | "typescript.enablePromptUseWorkspaceTsdk": true 4 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 ashish 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Supathreads 2 | 3 | https://user-images.githubusercontent.com/68690233/232323882-a009ff32-83a1-439e-875a-7d0a50977d56.mp4 4 | 5 | Create concise and professional twitter threads from your blogs within seconds using AI, built for the [Supabase AI Hackathon](https://supabase.com/blog/launch-week-7-hackathon) and powered by [OpenAI](https://openai.com/). The site is live at [supathreads.vercel.app](https://supathreads.vercel.app). 6 | 7 | ### Inspiration 8 | 9 | Writing eye catching twitter threads is a skill that takes time to master. I wanted to create a tool that would help people create twitter threads from some other source of content, like a blog post, in a matter of seconds, and I knew that I could use OpenAI's AI models to achieve this. 10 | 11 | ### Process 12 | 13 | Firstly, I designed a basic prototype for the web app and then I started working on the backend. I used NextAuth.js to handle authentication and Supabase to store the user data and the generated threads. The next thing was to find a correct OpenAI model for my use case and GPT-3.5 was the perfect fit. Next I used the OpenAI API to stream the generated tweets to the frontend and display them to the user. The last thing was to let users save the generated threads to their account and I used Supabase to store the threads. And once I was done with the backend, I started working on the frontend. I used TailwindCSS to style the web app and I used Next.js to handle routing and server side rendering. The web app is built using Next.js v13 which helped me a lot getting to know about React Server Components as well as the new app router structure. 14 | 15 | ### Tech Stack 16 | 17 | The web app is made using the [t3 stack](https://create.t3.gg) and I'm using [Supabase](htps://supabase.com) as my database and storage layer. I'm using [OpenAI](https://openai.com/) to generate the tweets. 18 | 19 | ### How I'm using Supabase 20 | 21 | - to store authenticated user data from NextAuth.js 22 | - to store the generated threads for users 23 | 24 | ### Team 25 | 26 | This project is solo developed by me, [ashish](https://twitter.com/_asheeshh). 27 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | experimental: { 4 | appDir: true, 5 | }, 6 | } 7 | 8 | module.exports = nextConfig 9 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "supathreads", 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 | "@next-auth/prisma-adapter": "^1.0.5", 13 | "@prisma/client": "^4.12.0", 14 | "@supabase/supabase-js": "^2.17.0", 15 | "@types/node": "18.15.11", 16 | "@types/react": "18.0.34", 17 | "@types/react-dom": "18.0.11", 18 | "autoprefixer": "10.4.14", 19 | "eslint": "8.38.0", 20 | "eslint-config-next": "13.3.0", 21 | "eventsource-parser": "^1.0.0", 22 | "next": "13.2.5-canary.16", 23 | "next-auth": "^4.22.0", 24 | "postcss": "8.4.21", 25 | "react": "18.2.0", 26 | "react-dom": "18.2.0", 27 | "react-hot-toast": "^2.4.0", 28 | "tailwindcss": "3.3.1", 29 | "typescript": "5.0.4", 30 | "zod": "^3.21.4" 31 | }, 32 | "devDependencies": { 33 | "eslint-plugin-react-hooks": "^4.6.0", 34 | "prisma": "^4.12.0", 35 | "tailwind-scrollbar": "^3.0.0" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@next-auth/prisma-adapter': ^1.0.5 5 | '@prisma/client': ^4.12.0 6 | '@supabase/supabase-js': ^2.17.0 7 | '@types/node': 18.15.11 8 | '@types/react': 18.0.34 9 | '@types/react-dom': 18.0.11 10 | autoprefixer: 10.4.14 11 | eslint: 8.38.0 12 | eslint-config-next: 13.3.0 13 | eslint-plugin-react-hooks: ^4.6.0 14 | eventsource-parser: ^1.0.0 15 | next: 13.2.5-canary.16 16 | next-auth: ^4.22.0 17 | postcss: 8.4.21 18 | prisma: ^4.12.0 19 | react: 18.2.0 20 | react-dom: 18.2.0 21 | react-hot-toast: ^2.4.0 22 | tailwind-scrollbar: ^3.0.0 23 | tailwindcss: 3.3.1 24 | typescript: 5.0.4 25 | zod: ^3.21.4 26 | 27 | dependencies: 28 | '@next-auth/prisma-adapter': 1.0.5_st7dss3oib5ulp5imon7ru3qzu 29 | '@prisma/client': 4.12.0_prisma@4.12.0 30 | '@supabase/supabase-js': 2.17.0 31 | '@types/node': 18.15.11 32 | '@types/react': 18.0.34 33 | '@types/react-dom': 18.0.11 34 | autoprefixer: 10.4.14_postcss@8.4.21 35 | eslint: 8.38.0 36 | eslint-config-next: 13.3.0_voubu7prgxjfsfbgx5d4sqnwiy 37 | eventsource-parser: 1.0.0 38 | next: 13.2.5-canary.16_biqbaboplfbrettd7655fr4n2y 39 | next-auth: 4.22.0_wjxsymqnfii5p4j3fn3qqbjt3i 40 | postcss: 8.4.21 41 | react: 18.2.0 42 | react-dom: 18.2.0_react@18.2.0 43 | react-hot-toast: 2.4.0_biqbaboplfbrettd7655fr4n2y 44 | tailwindcss: 3.3.1 45 | typescript: 5.0.4 46 | zod: 3.21.4 47 | 48 | devDependencies: 49 | eslint-plugin-react-hooks: 4.6.0_eslint@8.38.0 50 | prisma: 4.12.0 51 | tailwind-scrollbar: 3.0.0_tailwindcss@3.3.1 52 | 53 | packages: 54 | 55 | /@babel/runtime/7.21.0: 56 | resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} 57 | engines: {node: '>=6.9.0'} 58 | dependencies: 59 | regenerator-runtime: 0.13.11 60 | dev: false 61 | 62 | /@eslint-community/eslint-utils/4.4.0_eslint@8.38.0: 63 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 64 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 65 | peerDependencies: 66 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 67 | dependencies: 68 | eslint: 8.38.0 69 | eslint-visitor-keys: 3.4.0 70 | 71 | /@eslint-community/regexpp/4.5.0: 72 | resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} 73 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 74 | 75 | /@eslint/eslintrc/2.0.2: 76 | resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} 77 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 78 | dependencies: 79 | ajv: 6.12.6 80 | debug: 4.3.4 81 | espree: 9.5.1 82 | globals: 13.20.0 83 | ignore: 5.2.4 84 | import-fresh: 3.3.0 85 | js-yaml: 4.1.0 86 | minimatch: 3.1.2 87 | strip-json-comments: 3.1.1 88 | transitivePeerDependencies: 89 | - supports-color 90 | 91 | /@eslint/js/8.38.0: 92 | resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} 93 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 94 | 95 | /@humanwhocodes/config-array/0.11.8: 96 | resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} 97 | engines: {node: '>=10.10.0'} 98 | dependencies: 99 | '@humanwhocodes/object-schema': 1.2.1 100 | debug: 4.3.4 101 | minimatch: 3.1.2 102 | transitivePeerDependencies: 103 | - supports-color 104 | 105 | /@humanwhocodes/module-importer/1.0.1: 106 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 107 | engines: {node: '>=12.22'} 108 | 109 | /@humanwhocodes/object-schema/1.2.1: 110 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 111 | 112 | /@jridgewell/gen-mapping/0.3.3: 113 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 114 | engines: {node: '>=6.0.0'} 115 | dependencies: 116 | '@jridgewell/set-array': 1.1.2 117 | '@jridgewell/sourcemap-codec': 1.4.15 118 | '@jridgewell/trace-mapping': 0.3.18 119 | 120 | /@jridgewell/resolve-uri/3.1.0: 121 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 122 | engines: {node: '>=6.0.0'} 123 | 124 | /@jridgewell/set-array/1.1.2: 125 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 126 | engines: {node: '>=6.0.0'} 127 | 128 | /@jridgewell/sourcemap-codec/1.4.14: 129 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 130 | 131 | /@jridgewell/sourcemap-codec/1.4.15: 132 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 133 | 134 | /@jridgewell/trace-mapping/0.3.18: 135 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 136 | dependencies: 137 | '@jridgewell/resolve-uri': 3.1.0 138 | '@jridgewell/sourcemap-codec': 1.4.14 139 | 140 | /@next-auth/prisma-adapter/1.0.5_st7dss3oib5ulp5imon7ru3qzu: 141 | resolution: {integrity: sha512-VqMS11IxPXrPGXw6Oul6jcyS/n8GLOWzRMrPr3EMdtD6eOalM6zz05j08PcNiis8QzkfuYnCv49OvufTuaEwYQ==} 142 | peerDependencies: 143 | '@prisma/client': '>=2.26.0 || >=3' 144 | next-auth: ^4 145 | dependencies: 146 | '@prisma/client': 4.12.0_prisma@4.12.0 147 | next-auth: 4.22.0_wjxsymqnfii5p4j3fn3qqbjt3i 148 | dev: false 149 | 150 | /@next/env/13.2.5-canary.16: 151 | resolution: {integrity: sha512-D8593KVwxjXxBOiotBZTBpb6oqEP5GipQtG5qTKB1qkUBDHqVcORi0Epy5tXkYinCGdHsFCE+KFP+zJm7RZZSA==} 152 | dev: false 153 | 154 | /@next/eslint-plugin-next/13.3.0: 155 | resolution: {integrity: sha512-wuGN5qSEjSgcq9fVkH0Y/qIPFjnZtW3ZPwfjJOn7l/rrf6y8J24h/lo61kwqunTyzZJm/ETGfGVU9PUs8cnzEA==} 156 | dependencies: 157 | glob: 7.1.7 158 | dev: false 159 | 160 | /@next/swc-darwin-arm64/13.2.5-canary.16: 161 | resolution: {integrity: sha512-o9hiUDYVualJr8W+qzWVg4m+XJ330I4jLxD2SYof9u3mWxTTx2ENjhc39CwWIIi7ew6ndFqWVZIEPyT40n+N/A==} 162 | engines: {node: '>= 10'} 163 | cpu: [arm64] 164 | os: [darwin] 165 | requiresBuild: true 166 | dev: false 167 | optional: true 168 | 169 | /@next/swc-darwin-x64/13.2.5-canary.16: 170 | resolution: {integrity: sha512-XyOt+b7SNiAbgxKQ8N1oSIRYLoko0nSj6g9ghNR0T9fczYO4QeT+oF6jkymvH5ZQgYaaYmnOSCmStliAee66hA==} 171 | engines: {node: '>= 10'} 172 | cpu: [x64] 173 | os: [darwin] 174 | requiresBuild: true 175 | dev: false 176 | optional: true 177 | 178 | /@next/swc-linux-arm64-gnu/13.2.5-canary.16: 179 | resolution: {integrity: sha512-IMAs+HhhhOcQBz8cP9LOaQ1RftSI5BKUHZfmB8tihzWEaMUP0F39A5mu4DMy5H2NNUnV5lEsimuCQBE+286HOQ==} 180 | engines: {node: '>= 10'} 181 | cpu: [arm64] 182 | os: [linux] 183 | requiresBuild: true 184 | dev: false 185 | optional: true 186 | 187 | /@next/swc-linux-arm64-musl/13.2.5-canary.16: 188 | resolution: {integrity: sha512-F02FauCT7NICCeKgFXdzwOEZ3ZxCRmPWKVOGFtNGffYz9LE9FC5n5EW1rHgk7WGnm+AP7m95T6EU1vjY1f/J/g==} 189 | engines: {node: '>= 10'} 190 | cpu: [arm64] 191 | os: [linux] 192 | requiresBuild: true 193 | dev: false 194 | optional: true 195 | 196 | /@next/swc-linux-x64-gnu/13.2.5-canary.16: 197 | resolution: {integrity: sha512-Y4RdHjNkC7Rklko6IWNrc39ebuvoOa27pRqrr6z5VO7Izf4v168DWuxirz1cHEWqpm8oZIGL+/6aLyexQoZkrw==} 198 | engines: {node: '>= 10'} 199 | cpu: [x64] 200 | os: [linux] 201 | requiresBuild: true 202 | dev: false 203 | optional: true 204 | 205 | /@next/swc-linux-x64-musl/13.2.5-canary.16: 206 | resolution: {integrity: sha512-HHHU2wwgcjuVADC9/Q+pPiR5LrykOsnZqQl7ewEirw3vGvedN3r6pZHteIDsKoXdWgi0Vv2rgToS67xhenW7qg==} 207 | engines: {node: '>= 10'} 208 | cpu: [x64] 209 | os: [linux] 210 | requiresBuild: true 211 | dev: false 212 | optional: true 213 | 214 | /@next/swc-win32-arm64-msvc/13.2.5-canary.16: 215 | resolution: {integrity: sha512-2Vwr3E7sYAx+TTWDzu8MKFogBT7SBT4YyvKm+oweoSvWj3kNO9vNGs0SnESCY840VU8m4JFwNqnb3dYxkFaMdA==} 216 | engines: {node: '>= 10'} 217 | cpu: [arm64] 218 | os: [win32] 219 | requiresBuild: true 220 | dev: false 221 | optional: true 222 | 223 | /@next/swc-win32-ia32-msvc/13.2.5-canary.16: 224 | resolution: {integrity: sha512-eoqOm2//LQpU0c4ELQYWtH49llAjquo3N83PHFLeNuEFrGWxhy5hT1/aSeaqziAyvGgnKr5VxCGzv6JoRA13Sw==} 225 | engines: {node: '>= 10'} 226 | cpu: [ia32] 227 | os: [win32] 228 | requiresBuild: true 229 | dev: false 230 | optional: true 231 | 232 | /@next/swc-win32-x64-msvc/13.2.5-canary.16: 233 | resolution: {integrity: sha512-3y/jWrQ8fpRYkfbp338BsLT9oNx9eyBl7437CdFDJo4eFYP7KRRJ92Uov7qfOgB5vh2Sns00mwLlBzDhgIaqmA==} 234 | engines: {node: '>= 10'} 235 | cpu: [x64] 236 | os: [win32] 237 | requiresBuild: true 238 | dev: false 239 | optional: true 240 | 241 | /@nodelib/fs.scandir/2.1.5: 242 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 243 | engines: {node: '>= 8'} 244 | dependencies: 245 | '@nodelib/fs.stat': 2.0.5 246 | run-parallel: 1.2.0 247 | 248 | /@nodelib/fs.stat/2.0.5: 249 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 250 | engines: {node: '>= 8'} 251 | 252 | /@nodelib/fs.walk/1.2.8: 253 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 254 | engines: {node: '>= 8'} 255 | dependencies: 256 | '@nodelib/fs.scandir': 2.1.5 257 | fastq: 1.15.0 258 | 259 | /@panva/hkdf/1.0.4: 260 | resolution: {integrity: sha512-003xWiCuvePbLaPHT+CRuaV4GlyCAVm6XYSbBZDHoWZGn1mNkVKFaDbGJjjxmEFvizUwlCoM6O18FCBMMky2zQ==} 261 | dev: false 262 | 263 | /@pkgr/utils/2.3.1: 264 | resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} 265 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 266 | dependencies: 267 | cross-spawn: 7.0.3 268 | is-glob: 4.0.3 269 | open: 8.4.2 270 | picocolors: 1.0.0 271 | tiny-glob: 0.2.9 272 | tslib: 2.5.0 273 | dev: false 274 | 275 | /@prisma/client/4.12.0_prisma@4.12.0: 276 | resolution: {integrity: sha512-j9/ighfWwux97J2dS15nqhl60tYoH8V0IuSsgZDb6bCFcQD3fXbXmxjYC8GHhIgOk3lB7Pq+8CwElz2MiDpsSg==} 277 | engines: {node: '>=14.17'} 278 | requiresBuild: true 279 | peerDependencies: 280 | prisma: '*' 281 | peerDependenciesMeta: 282 | prisma: 283 | optional: true 284 | dependencies: 285 | '@prisma/engines-version': 4.12.0-67.659ef412370fa3b41cd7bf6e94587c1dfb7f67e7 286 | prisma: 4.12.0 287 | dev: false 288 | 289 | /@prisma/engines-version/4.12.0-67.659ef412370fa3b41cd7bf6e94587c1dfb7f67e7: 290 | resolution: {integrity: sha512-JIHNj5jlXb9mcaJwakM0vpgRYJIAurxTUqM0iX0tfEQA5XLZ9ONkIckkhuAKdAzocZ+80GYg7QSsfpjg7OxbOA==} 291 | dev: false 292 | 293 | /@prisma/engines/4.12.0: 294 | resolution: {integrity: sha512-0alKtnxhNB5hYU+ymESBlGI4b9XrGGSdv7Ud+8TE/fBNOEhIud0XQsAR+TrvUZgS4na5czubiMsODw0TUrgkIA==} 295 | requiresBuild: true 296 | 297 | /@rushstack/eslint-patch/1.2.0: 298 | resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} 299 | dev: false 300 | 301 | /@supabase/functions-js/2.1.0: 302 | resolution: {integrity: sha512-vRziB+AqRXRaGHjEFHwBo0kuNDTuAxI7VUeqU24Fe86ISoD8YEQm0dGdpleJEcqgDGWaO6pxT1tfj1BRY5PwMg==} 303 | dependencies: 304 | cross-fetch: 3.1.5 305 | transitivePeerDependencies: 306 | - encoding 307 | dev: false 308 | 309 | /@supabase/gotrue-js/2.21.0: 310 | resolution: {integrity: sha512-KM+NECYoOQUQc1k6bNfHAkNUCaJf2GwfNp5x38TZqIvwJviHLX1FLBdTiOOqw1DlLeOpYtxYOgxSouLqictvZQ==} 311 | dependencies: 312 | cross-fetch: 3.1.5 313 | transitivePeerDependencies: 314 | - encoding 315 | dev: false 316 | 317 | /@supabase/postgrest-js/1.5.0: 318 | resolution: {integrity: sha512-YaU1HBE43Ba+FGmnXuvK+xYeHylkDKd04PYeKDUCoE2bUHoxSDqnjHbOwmLjnusGZi3X1MrFeUH1Wwb4bHYyIg==} 319 | dependencies: 320 | cross-fetch: 3.1.5 321 | transitivePeerDependencies: 322 | - encoding 323 | dev: false 324 | 325 | /@supabase/realtime-js/2.7.2: 326 | resolution: {integrity: sha512-Fi6xAl5PUkqnjl3wo4rdcQIbMG3+yTRX1aUZe/yfvTG84RMvmCXJ1yN6MmafVLeZpU1xkaz5Vx4L0tnHcLiy6w==} 327 | dependencies: 328 | '@types/phoenix': 1.5.6 329 | '@types/websocket': 1.0.5 330 | websocket: 1.0.34 331 | transitivePeerDependencies: 332 | - supports-color 333 | dev: false 334 | 335 | /@supabase/storage-js/2.5.0: 336 | resolution: {integrity: sha512-6brHcFA8Ba8tDw72/mSf+pIgDfWQYkd9BjAra/RSAA0uCy84kALGnxIpxsf6mv40ka2GNRzstRGIKRlUdJgi/g==} 337 | dependencies: 338 | cross-fetch: 3.1.5 339 | transitivePeerDependencies: 340 | - encoding 341 | dev: false 342 | 343 | /@supabase/supabase-js/2.17.0: 344 | resolution: {integrity: sha512-fImOK79Qht28CTYJznIrgTShbRRb4K4Z+Fp9X+W/5ON//N44HaYlQMiWCYFXbI/liK7am+Mrc9pKJoFQtY3bXg==} 345 | dependencies: 346 | '@supabase/functions-js': 2.1.0 347 | '@supabase/gotrue-js': 2.21.0 348 | '@supabase/postgrest-js': 1.5.0 349 | '@supabase/realtime-js': 2.7.2 350 | '@supabase/storage-js': 2.5.0 351 | cross-fetch: 3.1.5 352 | transitivePeerDependencies: 353 | - encoding 354 | - supports-color 355 | dev: false 356 | 357 | /@swc/helpers/0.4.14: 358 | resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} 359 | dependencies: 360 | tslib: 2.5.0 361 | dev: false 362 | 363 | /@types/json5/0.0.29: 364 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 365 | dev: false 366 | 367 | /@types/node/18.15.11: 368 | resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} 369 | dev: false 370 | 371 | /@types/phoenix/1.5.6: 372 | resolution: {integrity: sha512-e7jZ6I9uyRGsg7MNwQcarmBvRlbGb9DibbocE9crVnxqsy6C23RMxLWbJ2CQ3vgCW7taoL1L+F02EcjA6ld7XA==} 373 | dev: false 374 | 375 | /@types/prop-types/15.7.5: 376 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 377 | dev: false 378 | 379 | /@types/react-dom/18.0.11: 380 | resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} 381 | dependencies: 382 | '@types/react': 18.0.34 383 | dev: false 384 | 385 | /@types/react/18.0.34: 386 | resolution: {integrity: sha512-NO1UO8941541CJl1BeOXi8a9dNKFK09Gnru5ZJqkm4Q3/WoQJtHvmwt0VX0SB9YCEwe7TfSSxDuaNmx6H2BAIQ==} 387 | dependencies: 388 | '@types/prop-types': 15.7.5 389 | '@types/scheduler': 0.16.3 390 | csstype: 3.1.2 391 | dev: false 392 | 393 | /@types/scheduler/0.16.3: 394 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 395 | dev: false 396 | 397 | /@types/websocket/1.0.5: 398 | resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} 399 | dependencies: 400 | '@types/node': 18.15.11 401 | dev: false 402 | 403 | /@typescript-eslint/parser/5.58.0_voubu7prgxjfsfbgx5d4sqnwiy: 404 | resolution: {integrity: sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==} 405 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 406 | peerDependencies: 407 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 408 | typescript: '*' 409 | peerDependenciesMeta: 410 | typescript: 411 | optional: true 412 | dependencies: 413 | '@typescript-eslint/scope-manager': 5.58.0 414 | '@typescript-eslint/types': 5.58.0 415 | '@typescript-eslint/typescript-estree': 5.58.0_typescript@5.0.4 416 | debug: 4.3.4 417 | eslint: 8.38.0 418 | typescript: 5.0.4 419 | transitivePeerDependencies: 420 | - supports-color 421 | dev: false 422 | 423 | /@typescript-eslint/scope-manager/5.58.0: 424 | resolution: {integrity: sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==} 425 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 426 | dependencies: 427 | '@typescript-eslint/types': 5.58.0 428 | '@typescript-eslint/visitor-keys': 5.58.0 429 | dev: false 430 | 431 | /@typescript-eslint/types/5.58.0: 432 | resolution: {integrity: sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==} 433 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 434 | dev: false 435 | 436 | /@typescript-eslint/typescript-estree/5.58.0_typescript@5.0.4: 437 | resolution: {integrity: sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==} 438 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 439 | peerDependencies: 440 | typescript: '*' 441 | peerDependenciesMeta: 442 | typescript: 443 | optional: true 444 | dependencies: 445 | '@typescript-eslint/types': 5.58.0 446 | '@typescript-eslint/visitor-keys': 5.58.0 447 | debug: 4.3.4 448 | globby: 11.1.0 449 | is-glob: 4.0.3 450 | semver: 7.4.0 451 | tsutils: 3.21.0_typescript@5.0.4 452 | typescript: 5.0.4 453 | transitivePeerDependencies: 454 | - supports-color 455 | dev: false 456 | 457 | /@typescript-eslint/visitor-keys/5.58.0: 458 | resolution: {integrity: sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==} 459 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 460 | dependencies: 461 | '@typescript-eslint/types': 5.58.0 462 | eslint-visitor-keys: 3.4.0 463 | dev: false 464 | 465 | /acorn-jsx/5.3.2_acorn@8.8.2: 466 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 467 | peerDependencies: 468 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 469 | dependencies: 470 | acorn: 8.8.2 471 | 472 | /acorn/8.8.2: 473 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 474 | engines: {node: '>=0.4.0'} 475 | hasBin: true 476 | 477 | /ajv/6.12.6: 478 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 479 | dependencies: 480 | fast-deep-equal: 3.1.3 481 | fast-json-stable-stringify: 2.1.0 482 | json-schema-traverse: 0.4.1 483 | uri-js: 4.4.1 484 | 485 | /ansi-regex/5.0.1: 486 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 487 | engines: {node: '>=8'} 488 | 489 | /ansi-styles/4.3.0: 490 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 491 | engines: {node: '>=8'} 492 | dependencies: 493 | color-convert: 2.0.1 494 | 495 | /any-promise/1.3.0: 496 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 497 | 498 | /anymatch/3.1.3: 499 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 500 | engines: {node: '>= 8'} 501 | dependencies: 502 | normalize-path: 3.0.0 503 | picomatch: 2.3.1 504 | 505 | /arg/5.0.2: 506 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 507 | 508 | /argparse/2.0.1: 509 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 510 | 511 | /aria-query/5.1.3: 512 | resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} 513 | dependencies: 514 | deep-equal: 2.2.0 515 | dev: false 516 | 517 | /array-buffer-byte-length/1.0.0: 518 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 519 | dependencies: 520 | call-bind: 1.0.2 521 | is-array-buffer: 3.0.2 522 | dev: false 523 | 524 | /array-includes/3.1.6: 525 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} 526 | engines: {node: '>= 0.4'} 527 | dependencies: 528 | call-bind: 1.0.2 529 | define-properties: 1.2.0 530 | es-abstract: 1.21.2 531 | get-intrinsic: 1.2.0 532 | is-string: 1.0.7 533 | dev: false 534 | 535 | /array-union/2.1.0: 536 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 537 | engines: {node: '>=8'} 538 | dev: false 539 | 540 | /array.prototype.flat/1.3.1: 541 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} 542 | engines: {node: '>= 0.4'} 543 | dependencies: 544 | call-bind: 1.0.2 545 | define-properties: 1.2.0 546 | es-abstract: 1.21.2 547 | es-shim-unscopables: 1.0.0 548 | dev: false 549 | 550 | /array.prototype.flatmap/1.3.1: 551 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} 552 | engines: {node: '>= 0.4'} 553 | dependencies: 554 | call-bind: 1.0.2 555 | define-properties: 1.2.0 556 | es-abstract: 1.21.2 557 | es-shim-unscopables: 1.0.0 558 | dev: false 559 | 560 | /array.prototype.tosorted/1.1.1: 561 | resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} 562 | dependencies: 563 | call-bind: 1.0.2 564 | define-properties: 1.2.0 565 | es-abstract: 1.21.2 566 | es-shim-unscopables: 1.0.0 567 | get-intrinsic: 1.2.0 568 | dev: false 569 | 570 | /ast-types-flow/0.0.7: 571 | resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} 572 | dev: false 573 | 574 | /autoprefixer/10.4.14_postcss@8.4.21: 575 | resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} 576 | engines: {node: ^10 || ^12 || >=14} 577 | hasBin: true 578 | peerDependencies: 579 | postcss: ^8.1.0 580 | dependencies: 581 | browserslist: 4.21.5 582 | caniuse-lite: 1.0.30001477 583 | fraction.js: 4.2.0 584 | normalize-range: 0.1.2 585 | picocolors: 1.0.0 586 | postcss: 8.4.21 587 | postcss-value-parser: 4.2.0 588 | dev: false 589 | 590 | /available-typed-arrays/1.0.5: 591 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 592 | engines: {node: '>= 0.4'} 593 | dev: false 594 | 595 | /axe-core/4.6.3: 596 | resolution: {integrity: sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==} 597 | engines: {node: '>=4'} 598 | dev: false 599 | 600 | /axobject-query/3.1.1: 601 | resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} 602 | dependencies: 603 | deep-equal: 2.2.0 604 | dev: false 605 | 606 | /balanced-match/1.0.2: 607 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 608 | 609 | /binary-extensions/2.2.0: 610 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 611 | engines: {node: '>=8'} 612 | 613 | /brace-expansion/1.1.11: 614 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 615 | dependencies: 616 | balanced-match: 1.0.2 617 | concat-map: 0.0.1 618 | 619 | /braces/3.0.2: 620 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 621 | engines: {node: '>=8'} 622 | dependencies: 623 | fill-range: 7.0.1 624 | 625 | /browserslist/4.21.5: 626 | resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} 627 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 628 | hasBin: true 629 | dependencies: 630 | caniuse-lite: 1.0.30001477 631 | electron-to-chromium: 1.4.357 632 | node-releases: 2.0.10 633 | update-browserslist-db: 1.0.10_browserslist@4.21.5 634 | dev: false 635 | 636 | /bufferutil/4.0.7: 637 | resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} 638 | engines: {node: '>=6.14.2'} 639 | requiresBuild: true 640 | dependencies: 641 | node-gyp-build: 4.6.0 642 | dev: false 643 | 644 | /call-bind/1.0.2: 645 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 646 | dependencies: 647 | function-bind: 1.1.1 648 | get-intrinsic: 1.2.0 649 | dev: false 650 | 651 | /callsites/3.1.0: 652 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 653 | engines: {node: '>=6'} 654 | 655 | /camelcase-css/2.0.1: 656 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 657 | engines: {node: '>= 6'} 658 | 659 | /caniuse-lite/1.0.30001477: 660 | resolution: {integrity: sha512-lZim4iUHhGcy5p+Ri/G7m84hJwncj+Kz7S5aD4hoQfslKZJgt0tHc/hafVbqHC5bbhHb+mrW2JOUHkI5KH7toQ==} 661 | dev: false 662 | 663 | /chalk/4.1.2: 664 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 665 | engines: {node: '>=10'} 666 | dependencies: 667 | ansi-styles: 4.3.0 668 | supports-color: 7.2.0 669 | 670 | /chokidar/3.5.3: 671 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 672 | engines: {node: '>= 8.10.0'} 673 | dependencies: 674 | anymatch: 3.1.3 675 | braces: 3.0.2 676 | glob-parent: 5.1.2 677 | is-binary-path: 2.1.0 678 | is-glob: 4.0.3 679 | normalize-path: 3.0.0 680 | readdirp: 3.6.0 681 | optionalDependencies: 682 | fsevents: 2.3.2 683 | 684 | /client-only/0.0.1: 685 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 686 | dev: false 687 | 688 | /color-convert/2.0.1: 689 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 690 | engines: {node: '>=7.0.0'} 691 | dependencies: 692 | color-name: 1.1.4 693 | 694 | /color-name/1.1.4: 695 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 696 | 697 | /commander/4.1.1: 698 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 699 | engines: {node: '>= 6'} 700 | 701 | /concat-map/0.0.1: 702 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 703 | 704 | /cookie/0.5.0: 705 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 706 | engines: {node: '>= 0.6'} 707 | dev: false 708 | 709 | /cross-fetch/3.1.5: 710 | resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} 711 | dependencies: 712 | node-fetch: 2.6.7 713 | transitivePeerDependencies: 714 | - encoding 715 | dev: false 716 | 717 | /cross-spawn/7.0.3: 718 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 719 | engines: {node: '>= 8'} 720 | dependencies: 721 | path-key: 3.1.1 722 | shebang-command: 2.0.0 723 | which: 2.0.2 724 | 725 | /cssesc/3.0.0: 726 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 727 | engines: {node: '>=4'} 728 | hasBin: true 729 | 730 | /csstype/3.1.2: 731 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 732 | dev: false 733 | 734 | /d/1.0.1: 735 | resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} 736 | dependencies: 737 | es5-ext: 0.10.62 738 | type: 1.2.0 739 | dev: false 740 | 741 | /damerau-levenshtein/1.0.8: 742 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 743 | dev: false 744 | 745 | /debug/2.6.9: 746 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 747 | peerDependencies: 748 | supports-color: '*' 749 | peerDependenciesMeta: 750 | supports-color: 751 | optional: true 752 | dependencies: 753 | ms: 2.0.0 754 | dev: false 755 | 756 | /debug/3.2.7: 757 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 758 | peerDependencies: 759 | supports-color: '*' 760 | peerDependenciesMeta: 761 | supports-color: 762 | optional: true 763 | dependencies: 764 | ms: 2.1.3 765 | dev: false 766 | 767 | /debug/4.3.4: 768 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 769 | engines: {node: '>=6.0'} 770 | peerDependencies: 771 | supports-color: '*' 772 | peerDependenciesMeta: 773 | supports-color: 774 | optional: true 775 | dependencies: 776 | ms: 2.1.2 777 | 778 | /deep-equal/2.2.0: 779 | resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} 780 | dependencies: 781 | call-bind: 1.0.2 782 | es-get-iterator: 1.1.3 783 | get-intrinsic: 1.2.0 784 | is-arguments: 1.1.1 785 | is-array-buffer: 3.0.2 786 | is-date-object: 1.0.5 787 | is-regex: 1.1.4 788 | is-shared-array-buffer: 1.0.2 789 | isarray: 2.0.5 790 | object-is: 1.1.5 791 | object-keys: 1.1.1 792 | object.assign: 4.1.4 793 | regexp.prototype.flags: 1.4.3 794 | side-channel: 1.0.4 795 | which-boxed-primitive: 1.0.2 796 | which-collection: 1.0.1 797 | which-typed-array: 1.1.9 798 | dev: false 799 | 800 | /deep-is/0.1.4: 801 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 802 | 803 | /define-lazy-prop/2.0.0: 804 | resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} 805 | engines: {node: '>=8'} 806 | dev: false 807 | 808 | /define-properties/1.2.0: 809 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} 810 | engines: {node: '>= 0.4'} 811 | dependencies: 812 | has-property-descriptors: 1.0.0 813 | object-keys: 1.1.1 814 | dev: false 815 | 816 | /didyoumean/1.2.2: 817 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 818 | 819 | /dir-glob/3.0.1: 820 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 821 | engines: {node: '>=8'} 822 | dependencies: 823 | path-type: 4.0.0 824 | dev: false 825 | 826 | /dlv/1.1.3: 827 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 828 | 829 | /doctrine/2.1.0: 830 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 831 | engines: {node: '>=0.10.0'} 832 | dependencies: 833 | esutils: 2.0.3 834 | dev: false 835 | 836 | /doctrine/3.0.0: 837 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 838 | engines: {node: '>=6.0.0'} 839 | dependencies: 840 | esutils: 2.0.3 841 | 842 | /electron-to-chromium/1.4.357: 843 | resolution: {integrity: sha512-UTkCbNTAcGXABmEnQrGcW4m3cG6fcyBfD4KDF0iyEAlbrGZiY9dmslyDAGOD1Kr5biN2F743Y30aRCOtau35Vw==} 844 | dev: false 845 | 846 | /emoji-regex/9.2.2: 847 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 848 | dev: false 849 | 850 | /enhanced-resolve/5.12.0: 851 | resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} 852 | engines: {node: '>=10.13.0'} 853 | dependencies: 854 | graceful-fs: 4.2.11 855 | tapable: 2.2.1 856 | dev: false 857 | 858 | /es-abstract/1.21.2: 859 | resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} 860 | engines: {node: '>= 0.4'} 861 | dependencies: 862 | array-buffer-byte-length: 1.0.0 863 | available-typed-arrays: 1.0.5 864 | call-bind: 1.0.2 865 | es-set-tostringtag: 2.0.1 866 | es-to-primitive: 1.2.1 867 | function.prototype.name: 1.1.5 868 | get-intrinsic: 1.2.0 869 | get-symbol-description: 1.0.0 870 | globalthis: 1.0.3 871 | gopd: 1.0.1 872 | has: 1.0.3 873 | has-property-descriptors: 1.0.0 874 | has-proto: 1.0.1 875 | has-symbols: 1.0.3 876 | internal-slot: 1.0.5 877 | is-array-buffer: 3.0.2 878 | is-callable: 1.2.7 879 | is-negative-zero: 2.0.2 880 | is-regex: 1.1.4 881 | is-shared-array-buffer: 1.0.2 882 | is-string: 1.0.7 883 | is-typed-array: 1.1.10 884 | is-weakref: 1.0.2 885 | object-inspect: 1.12.3 886 | object-keys: 1.1.1 887 | object.assign: 4.1.4 888 | regexp.prototype.flags: 1.4.3 889 | safe-regex-test: 1.0.0 890 | string.prototype.trim: 1.2.7 891 | string.prototype.trimend: 1.0.6 892 | string.prototype.trimstart: 1.0.6 893 | typed-array-length: 1.0.4 894 | unbox-primitive: 1.0.2 895 | which-typed-array: 1.1.9 896 | dev: false 897 | 898 | /es-get-iterator/1.1.3: 899 | resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} 900 | dependencies: 901 | call-bind: 1.0.2 902 | get-intrinsic: 1.2.0 903 | has-symbols: 1.0.3 904 | is-arguments: 1.1.1 905 | is-map: 2.0.2 906 | is-set: 2.0.2 907 | is-string: 1.0.7 908 | isarray: 2.0.5 909 | stop-iteration-iterator: 1.0.0 910 | dev: false 911 | 912 | /es-set-tostringtag/2.0.1: 913 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} 914 | engines: {node: '>= 0.4'} 915 | dependencies: 916 | get-intrinsic: 1.2.0 917 | has: 1.0.3 918 | has-tostringtag: 1.0.0 919 | dev: false 920 | 921 | /es-shim-unscopables/1.0.0: 922 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 923 | dependencies: 924 | has: 1.0.3 925 | dev: false 926 | 927 | /es-to-primitive/1.2.1: 928 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 929 | engines: {node: '>= 0.4'} 930 | dependencies: 931 | is-callable: 1.2.7 932 | is-date-object: 1.0.5 933 | is-symbol: 1.0.4 934 | dev: false 935 | 936 | /es5-ext/0.10.62: 937 | resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} 938 | engines: {node: '>=0.10'} 939 | requiresBuild: true 940 | dependencies: 941 | es6-iterator: 2.0.3 942 | es6-symbol: 3.1.3 943 | next-tick: 1.1.0 944 | dev: false 945 | 946 | /es6-iterator/2.0.3: 947 | resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} 948 | dependencies: 949 | d: 1.0.1 950 | es5-ext: 0.10.62 951 | es6-symbol: 3.1.3 952 | dev: false 953 | 954 | /es6-symbol/3.1.3: 955 | resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} 956 | dependencies: 957 | d: 1.0.1 958 | ext: 1.7.0 959 | dev: false 960 | 961 | /escalade/3.1.1: 962 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 963 | engines: {node: '>=6'} 964 | dev: false 965 | 966 | /escape-string-regexp/4.0.0: 967 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 968 | engines: {node: '>=10'} 969 | 970 | /eslint-config-next/13.3.0_voubu7prgxjfsfbgx5d4sqnwiy: 971 | resolution: {integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==} 972 | peerDependencies: 973 | eslint: ^7.23.0 || ^8.0.0 974 | typescript: '>=3.3.1' 975 | peerDependenciesMeta: 976 | typescript: 977 | optional: true 978 | dependencies: 979 | '@next/eslint-plugin-next': 13.3.0 980 | '@rushstack/eslint-patch': 1.2.0 981 | '@typescript-eslint/parser': 5.58.0_voubu7prgxjfsfbgx5d4sqnwiy 982 | eslint: 8.38.0 983 | eslint-import-resolver-node: 0.3.7 984 | eslint-import-resolver-typescript: 3.5.5_slf3pdlxi65p6jlbyy4zgzrwbi 985 | eslint-plugin-import: 2.27.5_rptv2rvhnimonuwgnwl36lcway 986 | eslint-plugin-jsx-a11y: 6.7.1_eslint@8.38.0 987 | eslint-plugin-react: 7.32.2_eslint@8.38.0 988 | eslint-plugin-react-hooks: 4.6.0_eslint@8.38.0 989 | typescript: 5.0.4 990 | transitivePeerDependencies: 991 | - eslint-import-resolver-webpack 992 | - supports-color 993 | dev: false 994 | 995 | /eslint-import-resolver-node/0.3.7: 996 | resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} 997 | dependencies: 998 | debug: 3.2.7 999 | is-core-module: 2.12.0 1000 | resolve: 1.22.2 1001 | transitivePeerDependencies: 1002 | - supports-color 1003 | dev: false 1004 | 1005 | /eslint-import-resolver-typescript/3.5.5_slf3pdlxi65p6jlbyy4zgzrwbi: 1006 | resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} 1007 | engines: {node: ^14.18.0 || >=16.0.0} 1008 | peerDependencies: 1009 | eslint: '*' 1010 | eslint-plugin-import: '*' 1011 | dependencies: 1012 | debug: 4.3.4 1013 | enhanced-resolve: 5.12.0 1014 | eslint: 8.38.0 1015 | eslint-module-utils: 2.7.4_uijsfo6afl5uvsbmsghunq7i6m 1016 | eslint-plugin-import: 2.27.5_rptv2rvhnimonuwgnwl36lcway 1017 | get-tsconfig: 4.5.0 1018 | globby: 13.1.3 1019 | is-core-module: 2.12.0 1020 | is-glob: 4.0.3 1021 | synckit: 0.8.5 1022 | transitivePeerDependencies: 1023 | - '@typescript-eslint/parser' 1024 | - eslint-import-resolver-node 1025 | - eslint-import-resolver-webpack 1026 | - supports-color 1027 | dev: false 1028 | 1029 | /eslint-module-utils/2.7.4_uijsfo6afl5uvsbmsghunq7i6m: 1030 | resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} 1031 | engines: {node: '>=4'} 1032 | peerDependencies: 1033 | '@typescript-eslint/parser': '*' 1034 | eslint: '*' 1035 | eslint-import-resolver-node: '*' 1036 | eslint-import-resolver-typescript: '*' 1037 | eslint-import-resolver-webpack: '*' 1038 | peerDependenciesMeta: 1039 | '@typescript-eslint/parser': 1040 | optional: true 1041 | eslint: 1042 | optional: true 1043 | eslint-import-resolver-node: 1044 | optional: true 1045 | eslint-import-resolver-typescript: 1046 | optional: true 1047 | eslint-import-resolver-webpack: 1048 | optional: true 1049 | dependencies: 1050 | '@typescript-eslint/parser': 5.58.0_voubu7prgxjfsfbgx5d4sqnwiy 1051 | debug: 3.2.7 1052 | eslint: 8.38.0 1053 | eslint-import-resolver-node: 0.3.7 1054 | eslint-import-resolver-typescript: 3.5.5_slf3pdlxi65p6jlbyy4zgzrwbi 1055 | transitivePeerDependencies: 1056 | - supports-color 1057 | dev: false 1058 | 1059 | /eslint-plugin-import/2.27.5_rptv2rvhnimonuwgnwl36lcway: 1060 | resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} 1061 | engines: {node: '>=4'} 1062 | peerDependencies: 1063 | '@typescript-eslint/parser': '*' 1064 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1065 | peerDependenciesMeta: 1066 | '@typescript-eslint/parser': 1067 | optional: true 1068 | dependencies: 1069 | '@typescript-eslint/parser': 5.58.0_voubu7prgxjfsfbgx5d4sqnwiy 1070 | array-includes: 3.1.6 1071 | array.prototype.flat: 1.3.1 1072 | array.prototype.flatmap: 1.3.1 1073 | debug: 3.2.7 1074 | doctrine: 2.1.0 1075 | eslint: 8.38.0 1076 | eslint-import-resolver-node: 0.3.7 1077 | eslint-module-utils: 2.7.4_uijsfo6afl5uvsbmsghunq7i6m 1078 | has: 1.0.3 1079 | is-core-module: 2.12.0 1080 | is-glob: 4.0.3 1081 | minimatch: 3.1.2 1082 | object.values: 1.1.6 1083 | resolve: 1.22.2 1084 | semver: 6.3.0 1085 | tsconfig-paths: 3.14.2 1086 | transitivePeerDependencies: 1087 | - eslint-import-resolver-typescript 1088 | - eslint-import-resolver-webpack 1089 | - supports-color 1090 | dev: false 1091 | 1092 | /eslint-plugin-jsx-a11y/6.7.1_eslint@8.38.0: 1093 | resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} 1094 | engines: {node: '>=4.0'} 1095 | peerDependencies: 1096 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1097 | dependencies: 1098 | '@babel/runtime': 7.21.0 1099 | aria-query: 5.1.3 1100 | array-includes: 3.1.6 1101 | array.prototype.flatmap: 1.3.1 1102 | ast-types-flow: 0.0.7 1103 | axe-core: 4.6.3 1104 | axobject-query: 3.1.1 1105 | damerau-levenshtein: 1.0.8 1106 | emoji-regex: 9.2.2 1107 | eslint: 8.38.0 1108 | has: 1.0.3 1109 | jsx-ast-utils: 3.3.3 1110 | language-tags: 1.0.5 1111 | minimatch: 3.1.2 1112 | object.entries: 1.1.6 1113 | object.fromentries: 2.0.6 1114 | semver: 6.3.0 1115 | dev: false 1116 | 1117 | /eslint-plugin-react-hooks/4.6.0_eslint@8.38.0: 1118 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1119 | engines: {node: '>=10'} 1120 | peerDependencies: 1121 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1122 | dependencies: 1123 | eslint: 8.38.0 1124 | 1125 | /eslint-plugin-react/7.32.2_eslint@8.38.0: 1126 | resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} 1127 | engines: {node: '>=4'} 1128 | peerDependencies: 1129 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1130 | dependencies: 1131 | array-includes: 3.1.6 1132 | array.prototype.flatmap: 1.3.1 1133 | array.prototype.tosorted: 1.1.1 1134 | doctrine: 2.1.0 1135 | eslint: 8.38.0 1136 | estraverse: 5.3.0 1137 | jsx-ast-utils: 3.3.3 1138 | minimatch: 3.1.2 1139 | object.entries: 1.1.6 1140 | object.fromentries: 2.0.6 1141 | object.hasown: 1.1.2 1142 | object.values: 1.1.6 1143 | prop-types: 15.8.1 1144 | resolve: 2.0.0-next.4 1145 | semver: 6.3.0 1146 | string.prototype.matchall: 4.0.8 1147 | dev: false 1148 | 1149 | /eslint-scope/7.1.1: 1150 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 1151 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1152 | dependencies: 1153 | esrecurse: 4.3.0 1154 | estraverse: 5.3.0 1155 | 1156 | /eslint-visitor-keys/3.4.0: 1157 | resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} 1158 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1159 | 1160 | /eslint/8.38.0: 1161 | resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} 1162 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1163 | hasBin: true 1164 | dependencies: 1165 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.38.0 1166 | '@eslint-community/regexpp': 4.5.0 1167 | '@eslint/eslintrc': 2.0.2 1168 | '@eslint/js': 8.38.0 1169 | '@humanwhocodes/config-array': 0.11.8 1170 | '@humanwhocodes/module-importer': 1.0.1 1171 | '@nodelib/fs.walk': 1.2.8 1172 | ajv: 6.12.6 1173 | chalk: 4.1.2 1174 | cross-spawn: 7.0.3 1175 | debug: 4.3.4 1176 | doctrine: 3.0.0 1177 | escape-string-regexp: 4.0.0 1178 | eslint-scope: 7.1.1 1179 | eslint-visitor-keys: 3.4.0 1180 | espree: 9.5.1 1181 | esquery: 1.5.0 1182 | esutils: 2.0.3 1183 | fast-deep-equal: 3.1.3 1184 | file-entry-cache: 6.0.1 1185 | find-up: 5.0.0 1186 | glob-parent: 6.0.2 1187 | globals: 13.20.0 1188 | grapheme-splitter: 1.0.4 1189 | ignore: 5.2.4 1190 | import-fresh: 3.3.0 1191 | imurmurhash: 0.1.4 1192 | is-glob: 4.0.3 1193 | is-path-inside: 3.0.3 1194 | js-sdsl: 4.4.0 1195 | js-yaml: 4.1.0 1196 | json-stable-stringify-without-jsonify: 1.0.1 1197 | levn: 0.4.1 1198 | lodash.merge: 4.6.2 1199 | minimatch: 3.1.2 1200 | natural-compare: 1.4.0 1201 | optionator: 0.9.1 1202 | strip-ansi: 6.0.1 1203 | strip-json-comments: 3.1.1 1204 | text-table: 0.2.0 1205 | transitivePeerDependencies: 1206 | - supports-color 1207 | 1208 | /espree/9.5.1: 1209 | resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} 1210 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1211 | dependencies: 1212 | acorn: 8.8.2 1213 | acorn-jsx: 5.3.2_acorn@8.8.2 1214 | eslint-visitor-keys: 3.4.0 1215 | 1216 | /esquery/1.5.0: 1217 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1218 | engines: {node: '>=0.10'} 1219 | dependencies: 1220 | estraverse: 5.3.0 1221 | 1222 | /esrecurse/4.3.0: 1223 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1224 | engines: {node: '>=4.0'} 1225 | dependencies: 1226 | estraverse: 5.3.0 1227 | 1228 | /estraverse/5.3.0: 1229 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1230 | engines: {node: '>=4.0'} 1231 | 1232 | /esutils/2.0.3: 1233 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1234 | engines: {node: '>=0.10.0'} 1235 | 1236 | /eventsource-parser/1.0.0: 1237 | resolution: {integrity: sha512-9jgfSCa3dmEme2ES3mPByGXfgZ87VbP97tng1G2nWwWx6bV2nYxm2AWCrbQjXToSe+yYlqaZNtxffR9IeQr95g==} 1238 | engines: {node: '>=14.18'} 1239 | dev: false 1240 | 1241 | /ext/1.7.0: 1242 | resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} 1243 | dependencies: 1244 | type: 2.7.2 1245 | dev: false 1246 | 1247 | /fast-deep-equal/3.1.3: 1248 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1249 | 1250 | /fast-glob/3.2.12: 1251 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1252 | engines: {node: '>=8.6.0'} 1253 | dependencies: 1254 | '@nodelib/fs.stat': 2.0.5 1255 | '@nodelib/fs.walk': 1.2.8 1256 | glob-parent: 5.1.2 1257 | merge2: 1.4.1 1258 | micromatch: 4.0.5 1259 | 1260 | /fast-json-stable-stringify/2.1.0: 1261 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1262 | 1263 | /fast-levenshtein/2.0.6: 1264 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1265 | 1266 | /fastq/1.15.0: 1267 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1268 | dependencies: 1269 | reusify: 1.0.4 1270 | 1271 | /file-entry-cache/6.0.1: 1272 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1273 | engines: {node: ^10.12.0 || >=12.0.0} 1274 | dependencies: 1275 | flat-cache: 3.0.4 1276 | 1277 | /fill-range/7.0.1: 1278 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1279 | engines: {node: '>=8'} 1280 | dependencies: 1281 | to-regex-range: 5.0.1 1282 | 1283 | /find-up/5.0.0: 1284 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1285 | engines: {node: '>=10'} 1286 | dependencies: 1287 | locate-path: 6.0.0 1288 | path-exists: 4.0.0 1289 | 1290 | /flat-cache/3.0.4: 1291 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1292 | engines: {node: ^10.12.0 || >=12.0.0} 1293 | dependencies: 1294 | flatted: 3.2.7 1295 | rimraf: 3.0.2 1296 | 1297 | /flatted/3.2.7: 1298 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1299 | 1300 | /for-each/0.3.3: 1301 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1302 | dependencies: 1303 | is-callable: 1.2.7 1304 | dev: false 1305 | 1306 | /fraction.js/4.2.0: 1307 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 1308 | dev: false 1309 | 1310 | /fs.realpath/1.0.0: 1311 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1312 | 1313 | /fsevents/2.3.2: 1314 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1315 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1316 | os: [darwin] 1317 | requiresBuild: true 1318 | optional: true 1319 | 1320 | /function-bind/1.1.1: 1321 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1322 | 1323 | /function.prototype.name/1.1.5: 1324 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1325 | engines: {node: '>= 0.4'} 1326 | dependencies: 1327 | call-bind: 1.0.2 1328 | define-properties: 1.2.0 1329 | es-abstract: 1.21.2 1330 | functions-have-names: 1.2.3 1331 | dev: false 1332 | 1333 | /functions-have-names/1.2.3: 1334 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1335 | dev: false 1336 | 1337 | /get-intrinsic/1.2.0: 1338 | resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} 1339 | dependencies: 1340 | function-bind: 1.1.1 1341 | has: 1.0.3 1342 | has-symbols: 1.0.3 1343 | dev: false 1344 | 1345 | /get-symbol-description/1.0.0: 1346 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1347 | engines: {node: '>= 0.4'} 1348 | dependencies: 1349 | call-bind: 1.0.2 1350 | get-intrinsic: 1.2.0 1351 | dev: false 1352 | 1353 | /get-tsconfig/4.5.0: 1354 | resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} 1355 | dev: false 1356 | 1357 | /glob-parent/5.1.2: 1358 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1359 | engines: {node: '>= 6'} 1360 | dependencies: 1361 | is-glob: 4.0.3 1362 | 1363 | /glob-parent/6.0.2: 1364 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1365 | engines: {node: '>=10.13.0'} 1366 | dependencies: 1367 | is-glob: 4.0.3 1368 | 1369 | /glob/7.1.6: 1370 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1371 | dependencies: 1372 | fs.realpath: 1.0.0 1373 | inflight: 1.0.6 1374 | inherits: 2.0.4 1375 | minimatch: 3.1.2 1376 | once: 1.4.0 1377 | path-is-absolute: 1.0.1 1378 | 1379 | /glob/7.1.7: 1380 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1381 | dependencies: 1382 | fs.realpath: 1.0.0 1383 | inflight: 1.0.6 1384 | inherits: 2.0.4 1385 | minimatch: 3.1.2 1386 | once: 1.4.0 1387 | path-is-absolute: 1.0.1 1388 | dev: false 1389 | 1390 | /glob/7.2.3: 1391 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1392 | dependencies: 1393 | fs.realpath: 1.0.0 1394 | inflight: 1.0.6 1395 | inherits: 2.0.4 1396 | minimatch: 3.1.2 1397 | once: 1.4.0 1398 | path-is-absolute: 1.0.1 1399 | 1400 | /globals/13.20.0: 1401 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1402 | engines: {node: '>=8'} 1403 | dependencies: 1404 | type-fest: 0.20.2 1405 | 1406 | /globalthis/1.0.3: 1407 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1408 | engines: {node: '>= 0.4'} 1409 | dependencies: 1410 | define-properties: 1.2.0 1411 | dev: false 1412 | 1413 | /globalyzer/0.1.0: 1414 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1415 | dev: false 1416 | 1417 | /globby/11.1.0: 1418 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1419 | engines: {node: '>=10'} 1420 | dependencies: 1421 | array-union: 2.1.0 1422 | dir-glob: 3.0.1 1423 | fast-glob: 3.2.12 1424 | ignore: 5.2.4 1425 | merge2: 1.4.1 1426 | slash: 3.0.0 1427 | dev: false 1428 | 1429 | /globby/13.1.3: 1430 | resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} 1431 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1432 | dependencies: 1433 | dir-glob: 3.0.1 1434 | fast-glob: 3.2.12 1435 | ignore: 5.2.4 1436 | merge2: 1.4.1 1437 | slash: 4.0.0 1438 | dev: false 1439 | 1440 | /globrex/0.1.2: 1441 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1442 | dev: false 1443 | 1444 | /goober/2.1.12: 1445 | resolution: {integrity: sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q==} 1446 | peerDependencies: 1447 | csstype: ^3.0.10 1448 | dev: false 1449 | 1450 | /gopd/1.0.1: 1451 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1452 | dependencies: 1453 | get-intrinsic: 1.2.0 1454 | dev: false 1455 | 1456 | /graceful-fs/4.2.11: 1457 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1458 | dev: false 1459 | 1460 | /grapheme-splitter/1.0.4: 1461 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1462 | 1463 | /has-bigints/1.0.2: 1464 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1465 | dev: false 1466 | 1467 | /has-flag/4.0.0: 1468 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1469 | engines: {node: '>=8'} 1470 | 1471 | /has-property-descriptors/1.0.0: 1472 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1473 | dependencies: 1474 | get-intrinsic: 1.2.0 1475 | dev: false 1476 | 1477 | /has-proto/1.0.1: 1478 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1479 | engines: {node: '>= 0.4'} 1480 | dev: false 1481 | 1482 | /has-symbols/1.0.3: 1483 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1484 | engines: {node: '>= 0.4'} 1485 | dev: false 1486 | 1487 | /has-tostringtag/1.0.0: 1488 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1489 | engines: {node: '>= 0.4'} 1490 | dependencies: 1491 | has-symbols: 1.0.3 1492 | dev: false 1493 | 1494 | /has/1.0.3: 1495 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1496 | engines: {node: '>= 0.4.0'} 1497 | dependencies: 1498 | function-bind: 1.1.1 1499 | 1500 | /ignore/5.2.4: 1501 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1502 | engines: {node: '>= 4'} 1503 | 1504 | /import-fresh/3.3.0: 1505 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1506 | engines: {node: '>=6'} 1507 | dependencies: 1508 | parent-module: 1.0.1 1509 | resolve-from: 4.0.0 1510 | 1511 | /imurmurhash/0.1.4: 1512 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1513 | engines: {node: '>=0.8.19'} 1514 | 1515 | /inflight/1.0.6: 1516 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1517 | dependencies: 1518 | once: 1.4.0 1519 | wrappy: 1.0.2 1520 | 1521 | /inherits/2.0.4: 1522 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1523 | 1524 | /internal-slot/1.0.5: 1525 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} 1526 | engines: {node: '>= 0.4'} 1527 | dependencies: 1528 | get-intrinsic: 1.2.0 1529 | has: 1.0.3 1530 | side-channel: 1.0.4 1531 | dev: false 1532 | 1533 | /is-arguments/1.1.1: 1534 | resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} 1535 | engines: {node: '>= 0.4'} 1536 | dependencies: 1537 | call-bind: 1.0.2 1538 | has-tostringtag: 1.0.0 1539 | dev: false 1540 | 1541 | /is-array-buffer/3.0.2: 1542 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 1543 | dependencies: 1544 | call-bind: 1.0.2 1545 | get-intrinsic: 1.2.0 1546 | is-typed-array: 1.1.10 1547 | dev: false 1548 | 1549 | /is-bigint/1.0.4: 1550 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1551 | dependencies: 1552 | has-bigints: 1.0.2 1553 | dev: false 1554 | 1555 | /is-binary-path/2.1.0: 1556 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1557 | engines: {node: '>=8'} 1558 | dependencies: 1559 | binary-extensions: 2.2.0 1560 | 1561 | /is-boolean-object/1.1.2: 1562 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1563 | engines: {node: '>= 0.4'} 1564 | dependencies: 1565 | call-bind: 1.0.2 1566 | has-tostringtag: 1.0.0 1567 | dev: false 1568 | 1569 | /is-callable/1.2.7: 1570 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1571 | engines: {node: '>= 0.4'} 1572 | dev: false 1573 | 1574 | /is-core-module/2.12.0: 1575 | resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} 1576 | dependencies: 1577 | has: 1.0.3 1578 | 1579 | /is-date-object/1.0.5: 1580 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1581 | engines: {node: '>= 0.4'} 1582 | dependencies: 1583 | has-tostringtag: 1.0.0 1584 | dev: false 1585 | 1586 | /is-docker/2.2.1: 1587 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} 1588 | engines: {node: '>=8'} 1589 | hasBin: true 1590 | dev: false 1591 | 1592 | /is-extglob/2.1.1: 1593 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1594 | engines: {node: '>=0.10.0'} 1595 | 1596 | /is-glob/4.0.3: 1597 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1598 | engines: {node: '>=0.10.0'} 1599 | dependencies: 1600 | is-extglob: 2.1.1 1601 | 1602 | /is-map/2.0.2: 1603 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 1604 | dev: false 1605 | 1606 | /is-negative-zero/2.0.2: 1607 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1608 | engines: {node: '>= 0.4'} 1609 | dev: false 1610 | 1611 | /is-number-object/1.0.7: 1612 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1613 | engines: {node: '>= 0.4'} 1614 | dependencies: 1615 | has-tostringtag: 1.0.0 1616 | dev: false 1617 | 1618 | /is-number/7.0.0: 1619 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1620 | engines: {node: '>=0.12.0'} 1621 | 1622 | /is-path-inside/3.0.3: 1623 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1624 | engines: {node: '>=8'} 1625 | 1626 | /is-regex/1.1.4: 1627 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1628 | engines: {node: '>= 0.4'} 1629 | dependencies: 1630 | call-bind: 1.0.2 1631 | has-tostringtag: 1.0.0 1632 | dev: false 1633 | 1634 | /is-set/2.0.2: 1635 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 1636 | dev: false 1637 | 1638 | /is-shared-array-buffer/1.0.2: 1639 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1640 | dependencies: 1641 | call-bind: 1.0.2 1642 | dev: false 1643 | 1644 | /is-string/1.0.7: 1645 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1646 | engines: {node: '>= 0.4'} 1647 | dependencies: 1648 | has-tostringtag: 1.0.0 1649 | dev: false 1650 | 1651 | /is-symbol/1.0.4: 1652 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1653 | engines: {node: '>= 0.4'} 1654 | dependencies: 1655 | has-symbols: 1.0.3 1656 | dev: false 1657 | 1658 | /is-typed-array/1.1.10: 1659 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} 1660 | engines: {node: '>= 0.4'} 1661 | dependencies: 1662 | available-typed-arrays: 1.0.5 1663 | call-bind: 1.0.2 1664 | for-each: 0.3.3 1665 | gopd: 1.0.1 1666 | has-tostringtag: 1.0.0 1667 | dev: false 1668 | 1669 | /is-typedarray/1.0.0: 1670 | resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} 1671 | dev: false 1672 | 1673 | /is-weakmap/2.0.1: 1674 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 1675 | dev: false 1676 | 1677 | /is-weakref/1.0.2: 1678 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1679 | dependencies: 1680 | call-bind: 1.0.2 1681 | dev: false 1682 | 1683 | /is-weakset/2.0.2: 1684 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 1685 | dependencies: 1686 | call-bind: 1.0.2 1687 | get-intrinsic: 1.2.0 1688 | dev: false 1689 | 1690 | /is-wsl/2.2.0: 1691 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} 1692 | engines: {node: '>=8'} 1693 | dependencies: 1694 | is-docker: 2.2.1 1695 | dev: false 1696 | 1697 | /isarray/2.0.5: 1698 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1699 | dev: false 1700 | 1701 | /isexe/2.0.0: 1702 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1703 | 1704 | /jiti/1.18.2: 1705 | resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} 1706 | hasBin: true 1707 | 1708 | /jose/4.13.1: 1709 | resolution: {integrity: sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==} 1710 | dev: false 1711 | 1712 | /js-sdsl/4.4.0: 1713 | resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} 1714 | 1715 | /js-tokens/4.0.0: 1716 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1717 | dev: false 1718 | 1719 | /js-yaml/4.1.0: 1720 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1721 | hasBin: true 1722 | dependencies: 1723 | argparse: 2.0.1 1724 | 1725 | /json-schema-traverse/0.4.1: 1726 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1727 | 1728 | /json-stable-stringify-without-jsonify/1.0.1: 1729 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1730 | 1731 | /json5/1.0.2: 1732 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 1733 | hasBin: true 1734 | dependencies: 1735 | minimist: 1.2.8 1736 | dev: false 1737 | 1738 | /jsx-ast-utils/3.3.3: 1739 | resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} 1740 | engines: {node: '>=4.0'} 1741 | dependencies: 1742 | array-includes: 3.1.6 1743 | object.assign: 4.1.4 1744 | dev: false 1745 | 1746 | /language-subtag-registry/0.3.22: 1747 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 1748 | dev: false 1749 | 1750 | /language-tags/1.0.5: 1751 | resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} 1752 | dependencies: 1753 | language-subtag-registry: 0.3.22 1754 | dev: false 1755 | 1756 | /levn/0.4.1: 1757 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1758 | engines: {node: '>= 0.8.0'} 1759 | dependencies: 1760 | prelude-ls: 1.2.1 1761 | type-check: 0.4.0 1762 | 1763 | /lilconfig/2.1.0: 1764 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1765 | engines: {node: '>=10'} 1766 | 1767 | /lines-and-columns/1.2.4: 1768 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1769 | 1770 | /locate-path/6.0.0: 1771 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1772 | engines: {node: '>=10'} 1773 | dependencies: 1774 | p-locate: 5.0.0 1775 | 1776 | /lodash.merge/4.6.2: 1777 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1778 | 1779 | /loose-envify/1.4.0: 1780 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1781 | hasBin: true 1782 | dependencies: 1783 | js-tokens: 4.0.0 1784 | dev: false 1785 | 1786 | /lru-cache/6.0.0: 1787 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1788 | engines: {node: '>=10'} 1789 | dependencies: 1790 | yallist: 4.0.0 1791 | dev: false 1792 | 1793 | /merge2/1.4.1: 1794 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1795 | engines: {node: '>= 8'} 1796 | 1797 | /micromatch/4.0.5: 1798 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1799 | engines: {node: '>=8.6'} 1800 | dependencies: 1801 | braces: 3.0.2 1802 | picomatch: 2.3.1 1803 | 1804 | /minimatch/3.1.2: 1805 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1806 | dependencies: 1807 | brace-expansion: 1.1.11 1808 | 1809 | /minimist/1.2.8: 1810 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1811 | dev: false 1812 | 1813 | /ms/2.0.0: 1814 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1815 | dev: false 1816 | 1817 | /ms/2.1.2: 1818 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1819 | 1820 | /ms/2.1.3: 1821 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1822 | dev: false 1823 | 1824 | /mz/2.7.0: 1825 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1826 | dependencies: 1827 | any-promise: 1.3.0 1828 | object-assign: 4.1.1 1829 | thenify-all: 1.6.0 1830 | 1831 | /nanoid/3.3.6: 1832 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1833 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1834 | hasBin: true 1835 | 1836 | /natural-compare/1.4.0: 1837 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1838 | 1839 | /next-auth/4.22.0_wjxsymqnfii5p4j3fn3qqbjt3i: 1840 | resolution: {integrity: sha512-08+kjnDoE7aQ52O996x6cwA3ffc2CbHIkrCgLYhbE+aDIJBKI0oA9UbIEIe19/+ODYJgpAHHOtJx4izmsgaVag==} 1841 | peerDependencies: 1842 | next: ^12.2.5 || ^13 1843 | nodemailer: ^6.6.5 1844 | react: ^17.0.2 || ^18 1845 | react-dom: ^17.0.2 || ^18 1846 | peerDependenciesMeta: 1847 | nodemailer: 1848 | optional: true 1849 | dependencies: 1850 | '@babel/runtime': 7.21.0 1851 | '@panva/hkdf': 1.0.4 1852 | cookie: 0.5.0 1853 | jose: 4.13.1 1854 | next: 13.2.5-canary.16_biqbaboplfbrettd7655fr4n2y 1855 | oauth: 0.9.15 1856 | openid-client: 5.4.0 1857 | preact: 10.13.2 1858 | preact-render-to-string: 5.2.6_preact@10.13.2 1859 | react: 18.2.0 1860 | react-dom: 18.2.0_react@18.2.0 1861 | uuid: 8.3.2 1862 | dev: false 1863 | 1864 | /next-tick/1.1.0: 1865 | resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} 1866 | dev: false 1867 | 1868 | /next/13.2.5-canary.16_biqbaboplfbrettd7655fr4n2y: 1869 | resolution: {integrity: sha512-GDHJGQek0nAE7WyiEqI+EvXakj+XXOrwzuhCc84eeUSHrw9k7ZruUWonxXhoNLCm1NXx5z/SGnsyQUv3j6zsBw==} 1870 | engines: {node: '>=14.6.0'} 1871 | hasBin: true 1872 | peerDependencies: 1873 | '@opentelemetry/api': ^1.4.1 1874 | fibers: '>= 3.1.0' 1875 | node-sass: ^6.0.0 || ^7.0.0 1876 | react: ^18.2.0 1877 | react-dom: ^18.2.0 1878 | sass: ^1.3.0 1879 | peerDependenciesMeta: 1880 | '@opentelemetry/api': 1881 | optional: true 1882 | fibers: 1883 | optional: true 1884 | node-sass: 1885 | optional: true 1886 | sass: 1887 | optional: true 1888 | dependencies: 1889 | '@next/env': 13.2.5-canary.16 1890 | '@swc/helpers': 0.4.14 1891 | caniuse-lite: 1.0.30001477 1892 | postcss: 8.4.14 1893 | react: 18.2.0 1894 | react-dom: 18.2.0_react@18.2.0 1895 | styled-jsx: 5.1.1_react@18.2.0 1896 | optionalDependencies: 1897 | '@next/swc-darwin-arm64': 13.2.5-canary.16 1898 | '@next/swc-darwin-x64': 13.2.5-canary.16 1899 | '@next/swc-linux-arm64-gnu': 13.2.5-canary.16 1900 | '@next/swc-linux-arm64-musl': 13.2.5-canary.16 1901 | '@next/swc-linux-x64-gnu': 13.2.5-canary.16 1902 | '@next/swc-linux-x64-musl': 13.2.5-canary.16 1903 | '@next/swc-win32-arm64-msvc': 13.2.5-canary.16 1904 | '@next/swc-win32-ia32-msvc': 13.2.5-canary.16 1905 | '@next/swc-win32-x64-msvc': 13.2.5-canary.16 1906 | transitivePeerDependencies: 1907 | - '@babel/core' 1908 | - babel-plugin-macros 1909 | dev: false 1910 | 1911 | /node-fetch/2.6.7: 1912 | resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} 1913 | engines: {node: 4.x || >=6.0.0} 1914 | peerDependencies: 1915 | encoding: ^0.1.0 1916 | peerDependenciesMeta: 1917 | encoding: 1918 | optional: true 1919 | dependencies: 1920 | whatwg-url: 5.0.0 1921 | dev: false 1922 | 1923 | /node-gyp-build/4.6.0: 1924 | resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} 1925 | hasBin: true 1926 | dev: false 1927 | 1928 | /node-releases/2.0.10: 1929 | resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} 1930 | dev: false 1931 | 1932 | /normalize-path/3.0.0: 1933 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1934 | engines: {node: '>=0.10.0'} 1935 | 1936 | /normalize-range/0.1.2: 1937 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1938 | engines: {node: '>=0.10.0'} 1939 | dev: false 1940 | 1941 | /oauth/0.9.15: 1942 | resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} 1943 | dev: false 1944 | 1945 | /object-assign/4.1.1: 1946 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1947 | engines: {node: '>=0.10.0'} 1948 | 1949 | /object-hash/2.2.0: 1950 | resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} 1951 | engines: {node: '>= 6'} 1952 | dev: false 1953 | 1954 | /object-hash/3.0.0: 1955 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1956 | engines: {node: '>= 6'} 1957 | 1958 | /object-inspect/1.12.3: 1959 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 1960 | dev: false 1961 | 1962 | /object-is/1.1.5: 1963 | resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} 1964 | engines: {node: '>= 0.4'} 1965 | dependencies: 1966 | call-bind: 1.0.2 1967 | define-properties: 1.2.0 1968 | dev: false 1969 | 1970 | /object-keys/1.1.1: 1971 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1972 | engines: {node: '>= 0.4'} 1973 | dev: false 1974 | 1975 | /object.assign/4.1.4: 1976 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 1977 | engines: {node: '>= 0.4'} 1978 | dependencies: 1979 | call-bind: 1.0.2 1980 | define-properties: 1.2.0 1981 | has-symbols: 1.0.3 1982 | object-keys: 1.1.1 1983 | dev: false 1984 | 1985 | /object.entries/1.1.6: 1986 | resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} 1987 | engines: {node: '>= 0.4'} 1988 | dependencies: 1989 | call-bind: 1.0.2 1990 | define-properties: 1.2.0 1991 | es-abstract: 1.21.2 1992 | dev: false 1993 | 1994 | /object.fromentries/2.0.6: 1995 | resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} 1996 | engines: {node: '>= 0.4'} 1997 | dependencies: 1998 | call-bind: 1.0.2 1999 | define-properties: 1.2.0 2000 | es-abstract: 1.21.2 2001 | dev: false 2002 | 2003 | /object.hasown/1.1.2: 2004 | resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} 2005 | dependencies: 2006 | define-properties: 1.2.0 2007 | es-abstract: 1.21.2 2008 | dev: false 2009 | 2010 | /object.values/1.1.6: 2011 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} 2012 | engines: {node: '>= 0.4'} 2013 | dependencies: 2014 | call-bind: 1.0.2 2015 | define-properties: 1.2.0 2016 | es-abstract: 1.21.2 2017 | dev: false 2018 | 2019 | /oidc-token-hash/5.0.2: 2020 | resolution: {integrity: sha512-U91Ba78GtVBxcExLI7U+hC2AwJQqXQEW/D3fjmJC4hhSVIgdl954KO4Gu95WqAlgDKJdLATxkmuxraWLT0fVRQ==} 2021 | engines: {node: ^10.13.0 || >=12.0.0} 2022 | dev: false 2023 | 2024 | /once/1.4.0: 2025 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2026 | dependencies: 2027 | wrappy: 1.0.2 2028 | 2029 | /open/8.4.2: 2030 | resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} 2031 | engines: {node: '>=12'} 2032 | dependencies: 2033 | define-lazy-prop: 2.0.0 2034 | is-docker: 2.2.1 2035 | is-wsl: 2.2.0 2036 | dev: false 2037 | 2038 | /openid-client/5.4.0: 2039 | resolution: {integrity: sha512-hgJa2aQKcM2hn3eyVtN12tEA45ECjTJPXCgUh5YzTzy9qwapCvmDTVPWOcWVL0d34zeQoQ/hbG9lJhl3AYxJlQ==} 2040 | dependencies: 2041 | jose: 4.13.1 2042 | lru-cache: 6.0.0 2043 | object-hash: 2.2.0 2044 | oidc-token-hash: 5.0.2 2045 | dev: false 2046 | 2047 | /optionator/0.9.1: 2048 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2049 | engines: {node: '>= 0.8.0'} 2050 | dependencies: 2051 | deep-is: 0.1.4 2052 | fast-levenshtein: 2.0.6 2053 | levn: 0.4.1 2054 | prelude-ls: 1.2.1 2055 | type-check: 0.4.0 2056 | word-wrap: 1.2.3 2057 | 2058 | /p-limit/3.1.0: 2059 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2060 | engines: {node: '>=10'} 2061 | dependencies: 2062 | yocto-queue: 0.1.0 2063 | 2064 | /p-locate/5.0.0: 2065 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2066 | engines: {node: '>=10'} 2067 | dependencies: 2068 | p-limit: 3.1.0 2069 | 2070 | /parent-module/1.0.1: 2071 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2072 | engines: {node: '>=6'} 2073 | dependencies: 2074 | callsites: 3.1.0 2075 | 2076 | /path-exists/4.0.0: 2077 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2078 | engines: {node: '>=8'} 2079 | 2080 | /path-is-absolute/1.0.1: 2081 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2082 | engines: {node: '>=0.10.0'} 2083 | 2084 | /path-key/3.1.1: 2085 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2086 | engines: {node: '>=8'} 2087 | 2088 | /path-parse/1.0.7: 2089 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2090 | 2091 | /path-type/4.0.0: 2092 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2093 | engines: {node: '>=8'} 2094 | dev: false 2095 | 2096 | /picocolors/1.0.0: 2097 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2098 | 2099 | /picomatch/2.3.1: 2100 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2101 | engines: {node: '>=8.6'} 2102 | 2103 | /pify/2.3.0: 2104 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2105 | engines: {node: '>=0.10.0'} 2106 | 2107 | /pirates/4.0.5: 2108 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 2109 | engines: {node: '>= 6'} 2110 | 2111 | /postcss-import/14.1.0_postcss@8.4.21: 2112 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} 2113 | engines: {node: '>=10.0.0'} 2114 | peerDependencies: 2115 | postcss: ^8.0.0 2116 | dependencies: 2117 | postcss: 8.4.21 2118 | postcss-value-parser: 4.2.0 2119 | read-cache: 1.0.0 2120 | resolve: 1.22.2 2121 | 2122 | /postcss-js/4.0.1_postcss@8.4.21: 2123 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 2124 | engines: {node: ^12 || ^14 || >= 16} 2125 | peerDependencies: 2126 | postcss: ^8.4.21 2127 | dependencies: 2128 | camelcase-css: 2.0.1 2129 | postcss: 8.4.21 2130 | 2131 | /postcss-load-config/3.1.4_postcss@8.4.21: 2132 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 2133 | engines: {node: '>= 10'} 2134 | peerDependencies: 2135 | postcss: '>=8.0.9' 2136 | ts-node: '>=9.0.0' 2137 | peerDependenciesMeta: 2138 | postcss: 2139 | optional: true 2140 | ts-node: 2141 | optional: true 2142 | dependencies: 2143 | lilconfig: 2.1.0 2144 | postcss: 8.4.21 2145 | yaml: 1.10.2 2146 | 2147 | /postcss-nested/6.0.0_postcss@8.4.21: 2148 | resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} 2149 | engines: {node: '>=12.0'} 2150 | peerDependencies: 2151 | postcss: ^8.2.14 2152 | dependencies: 2153 | postcss: 8.4.21 2154 | postcss-selector-parser: 6.0.11 2155 | 2156 | /postcss-selector-parser/6.0.11: 2157 | resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} 2158 | engines: {node: '>=4'} 2159 | dependencies: 2160 | cssesc: 3.0.0 2161 | util-deprecate: 1.0.2 2162 | 2163 | /postcss-value-parser/4.2.0: 2164 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2165 | 2166 | /postcss/8.4.14: 2167 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 2168 | engines: {node: ^10 || ^12 || >=14} 2169 | dependencies: 2170 | nanoid: 3.3.6 2171 | picocolors: 1.0.0 2172 | source-map-js: 1.0.2 2173 | dev: false 2174 | 2175 | /postcss/8.4.21: 2176 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} 2177 | engines: {node: ^10 || ^12 || >=14} 2178 | dependencies: 2179 | nanoid: 3.3.6 2180 | picocolors: 1.0.0 2181 | source-map-js: 1.0.2 2182 | 2183 | /preact-render-to-string/5.2.6_preact@10.13.2: 2184 | resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} 2185 | peerDependencies: 2186 | preact: '>=10' 2187 | dependencies: 2188 | preact: 10.13.2 2189 | pretty-format: 3.8.0 2190 | dev: false 2191 | 2192 | /preact/10.13.2: 2193 | resolution: {integrity: sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==} 2194 | dev: false 2195 | 2196 | /prelude-ls/1.2.1: 2197 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2198 | engines: {node: '>= 0.8.0'} 2199 | 2200 | /pretty-format/3.8.0: 2201 | resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} 2202 | dev: false 2203 | 2204 | /prisma/4.12.0: 2205 | resolution: {integrity: sha512-xqVper4mbwl32BWzLpdznHAYvYDWQQWK2tBfXjdUD397XaveRyAP7SkBZ6kFlIg8kKayF4hvuaVtYwXd9BodAg==} 2206 | engines: {node: '>=14.17'} 2207 | hasBin: true 2208 | requiresBuild: true 2209 | dependencies: 2210 | '@prisma/engines': 4.12.0 2211 | 2212 | /prop-types/15.8.1: 2213 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2214 | dependencies: 2215 | loose-envify: 1.4.0 2216 | object-assign: 4.1.1 2217 | react-is: 16.13.1 2218 | dev: false 2219 | 2220 | /punycode/2.3.0: 2221 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 2222 | engines: {node: '>=6'} 2223 | 2224 | /queue-microtask/1.2.3: 2225 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2226 | 2227 | /quick-lru/5.1.1: 2228 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 2229 | engines: {node: '>=10'} 2230 | 2231 | /react-dom/18.2.0_react@18.2.0: 2232 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2233 | peerDependencies: 2234 | react: ^18.2.0 2235 | dependencies: 2236 | loose-envify: 1.4.0 2237 | react: 18.2.0 2238 | scheduler: 0.23.0 2239 | dev: false 2240 | 2241 | /react-hot-toast/2.4.0_biqbaboplfbrettd7655fr4n2y: 2242 | resolution: {integrity: sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==} 2243 | engines: {node: '>=10'} 2244 | peerDependencies: 2245 | react: '>=16' 2246 | react-dom: '>=16' 2247 | dependencies: 2248 | goober: 2.1.12 2249 | react: 18.2.0 2250 | react-dom: 18.2.0_react@18.2.0 2251 | transitivePeerDependencies: 2252 | - csstype 2253 | dev: false 2254 | 2255 | /react-is/16.13.1: 2256 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2257 | dev: false 2258 | 2259 | /react/18.2.0: 2260 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2261 | engines: {node: '>=0.10.0'} 2262 | dependencies: 2263 | loose-envify: 1.4.0 2264 | dev: false 2265 | 2266 | /read-cache/1.0.0: 2267 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2268 | dependencies: 2269 | pify: 2.3.0 2270 | 2271 | /readdirp/3.6.0: 2272 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2273 | engines: {node: '>=8.10.0'} 2274 | dependencies: 2275 | picomatch: 2.3.1 2276 | 2277 | /regenerator-runtime/0.13.11: 2278 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 2279 | dev: false 2280 | 2281 | /regexp.prototype.flags/1.4.3: 2282 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 2283 | engines: {node: '>= 0.4'} 2284 | dependencies: 2285 | call-bind: 1.0.2 2286 | define-properties: 1.2.0 2287 | functions-have-names: 1.2.3 2288 | dev: false 2289 | 2290 | /resolve-from/4.0.0: 2291 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2292 | engines: {node: '>=4'} 2293 | 2294 | /resolve/1.22.2: 2295 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 2296 | hasBin: true 2297 | dependencies: 2298 | is-core-module: 2.12.0 2299 | path-parse: 1.0.7 2300 | supports-preserve-symlinks-flag: 1.0.0 2301 | 2302 | /resolve/2.0.0-next.4: 2303 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} 2304 | hasBin: true 2305 | dependencies: 2306 | is-core-module: 2.12.0 2307 | path-parse: 1.0.7 2308 | supports-preserve-symlinks-flag: 1.0.0 2309 | dev: false 2310 | 2311 | /reusify/1.0.4: 2312 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2313 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2314 | 2315 | /rimraf/3.0.2: 2316 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2317 | hasBin: true 2318 | dependencies: 2319 | glob: 7.2.3 2320 | 2321 | /run-parallel/1.2.0: 2322 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2323 | dependencies: 2324 | queue-microtask: 1.2.3 2325 | 2326 | /safe-regex-test/1.0.0: 2327 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 2328 | dependencies: 2329 | call-bind: 1.0.2 2330 | get-intrinsic: 1.2.0 2331 | is-regex: 1.1.4 2332 | dev: false 2333 | 2334 | /scheduler/0.23.0: 2335 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2336 | dependencies: 2337 | loose-envify: 1.4.0 2338 | dev: false 2339 | 2340 | /semver/6.3.0: 2341 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2342 | hasBin: true 2343 | dev: false 2344 | 2345 | /semver/7.4.0: 2346 | resolution: {integrity: sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==} 2347 | engines: {node: '>=10'} 2348 | hasBin: true 2349 | dependencies: 2350 | lru-cache: 6.0.0 2351 | dev: false 2352 | 2353 | /shebang-command/2.0.0: 2354 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2355 | engines: {node: '>=8'} 2356 | dependencies: 2357 | shebang-regex: 3.0.0 2358 | 2359 | /shebang-regex/3.0.0: 2360 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2361 | engines: {node: '>=8'} 2362 | 2363 | /side-channel/1.0.4: 2364 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2365 | dependencies: 2366 | call-bind: 1.0.2 2367 | get-intrinsic: 1.2.0 2368 | object-inspect: 1.12.3 2369 | dev: false 2370 | 2371 | /slash/3.0.0: 2372 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2373 | engines: {node: '>=8'} 2374 | dev: false 2375 | 2376 | /slash/4.0.0: 2377 | resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} 2378 | engines: {node: '>=12'} 2379 | dev: false 2380 | 2381 | /source-map-js/1.0.2: 2382 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2383 | engines: {node: '>=0.10.0'} 2384 | 2385 | /stop-iteration-iterator/1.0.0: 2386 | resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} 2387 | engines: {node: '>= 0.4'} 2388 | dependencies: 2389 | internal-slot: 1.0.5 2390 | dev: false 2391 | 2392 | /string.prototype.matchall/4.0.8: 2393 | resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} 2394 | dependencies: 2395 | call-bind: 1.0.2 2396 | define-properties: 1.2.0 2397 | es-abstract: 1.21.2 2398 | get-intrinsic: 1.2.0 2399 | has-symbols: 1.0.3 2400 | internal-slot: 1.0.5 2401 | regexp.prototype.flags: 1.4.3 2402 | side-channel: 1.0.4 2403 | dev: false 2404 | 2405 | /string.prototype.trim/1.2.7: 2406 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} 2407 | engines: {node: '>= 0.4'} 2408 | dependencies: 2409 | call-bind: 1.0.2 2410 | define-properties: 1.2.0 2411 | es-abstract: 1.21.2 2412 | dev: false 2413 | 2414 | /string.prototype.trimend/1.0.6: 2415 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 2416 | dependencies: 2417 | call-bind: 1.0.2 2418 | define-properties: 1.2.0 2419 | es-abstract: 1.21.2 2420 | dev: false 2421 | 2422 | /string.prototype.trimstart/1.0.6: 2423 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 2424 | dependencies: 2425 | call-bind: 1.0.2 2426 | define-properties: 1.2.0 2427 | es-abstract: 1.21.2 2428 | dev: false 2429 | 2430 | /strip-ansi/6.0.1: 2431 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2432 | engines: {node: '>=8'} 2433 | dependencies: 2434 | ansi-regex: 5.0.1 2435 | 2436 | /strip-bom/3.0.0: 2437 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2438 | engines: {node: '>=4'} 2439 | dev: false 2440 | 2441 | /strip-json-comments/3.1.1: 2442 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2443 | engines: {node: '>=8'} 2444 | 2445 | /styled-jsx/5.1.1_react@18.2.0: 2446 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 2447 | engines: {node: '>= 12.0.0'} 2448 | peerDependencies: 2449 | '@babel/core': '*' 2450 | babel-plugin-macros: '*' 2451 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 2452 | peerDependenciesMeta: 2453 | '@babel/core': 2454 | optional: true 2455 | babel-plugin-macros: 2456 | optional: true 2457 | dependencies: 2458 | client-only: 0.0.1 2459 | react: 18.2.0 2460 | dev: false 2461 | 2462 | /sucrase/3.32.0: 2463 | resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} 2464 | engines: {node: '>=8'} 2465 | hasBin: true 2466 | dependencies: 2467 | '@jridgewell/gen-mapping': 0.3.3 2468 | commander: 4.1.1 2469 | glob: 7.1.6 2470 | lines-and-columns: 1.2.4 2471 | mz: 2.7.0 2472 | pirates: 4.0.5 2473 | ts-interface-checker: 0.1.13 2474 | 2475 | /supports-color/7.2.0: 2476 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2477 | engines: {node: '>=8'} 2478 | dependencies: 2479 | has-flag: 4.0.0 2480 | 2481 | /supports-preserve-symlinks-flag/1.0.0: 2482 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2483 | engines: {node: '>= 0.4'} 2484 | 2485 | /synckit/0.8.5: 2486 | resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} 2487 | engines: {node: ^14.18.0 || >=16.0.0} 2488 | dependencies: 2489 | '@pkgr/utils': 2.3.1 2490 | tslib: 2.5.0 2491 | dev: false 2492 | 2493 | /tailwind-scrollbar/3.0.0_tailwindcss@3.3.1: 2494 | resolution: {integrity: sha512-OkVRX9Q1T769vk979UZ519jhj/j/zNBHql7zPLI+tlhX+ahksYO4ZryWD29lOETDx9Wj1sw+K1OeW7W3+ECQOA==} 2495 | engines: {node: '>=12.13.0'} 2496 | peerDependencies: 2497 | tailwindcss: 3.x 2498 | dependencies: 2499 | tailwindcss: 3.3.1 2500 | dev: true 2501 | 2502 | /tailwindcss/3.3.1: 2503 | resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} 2504 | engines: {node: '>=12.13.0'} 2505 | hasBin: true 2506 | dependencies: 2507 | arg: 5.0.2 2508 | chokidar: 3.5.3 2509 | color-name: 1.1.4 2510 | didyoumean: 1.2.2 2511 | dlv: 1.1.3 2512 | fast-glob: 3.2.12 2513 | glob-parent: 6.0.2 2514 | is-glob: 4.0.3 2515 | jiti: 1.18.2 2516 | lilconfig: 2.1.0 2517 | micromatch: 4.0.5 2518 | normalize-path: 3.0.0 2519 | object-hash: 3.0.0 2520 | picocolors: 1.0.0 2521 | postcss: 8.4.21 2522 | postcss-import: 14.1.0_postcss@8.4.21 2523 | postcss-js: 4.0.1_postcss@8.4.21 2524 | postcss-load-config: 3.1.4_postcss@8.4.21 2525 | postcss-nested: 6.0.0_postcss@8.4.21 2526 | postcss-selector-parser: 6.0.11 2527 | postcss-value-parser: 4.2.0 2528 | quick-lru: 5.1.1 2529 | resolve: 1.22.2 2530 | sucrase: 3.32.0 2531 | transitivePeerDependencies: 2532 | - ts-node 2533 | 2534 | /tapable/2.2.1: 2535 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 2536 | engines: {node: '>=6'} 2537 | dev: false 2538 | 2539 | /text-table/0.2.0: 2540 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2541 | 2542 | /thenify-all/1.6.0: 2543 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2544 | engines: {node: '>=0.8'} 2545 | dependencies: 2546 | thenify: 3.3.1 2547 | 2548 | /thenify/3.3.1: 2549 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2550 | dependencies: 2551 | any-promise: 1.3.0 2552 | 2553 | /tiny-glob/0.2.9: 2554 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 2555 | dependencies: 2556 | globalyzer: 0.1.0 2557 | globrex: 0.1.2 2558 | dev: false 2559 | 2560 | /to-regex-range/5.0.1: 2561 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2562 | engines: {node: '>=8.0'} 2563 | dependencies: 2564 | is-number: 7.0.0 2565 | 2566 | /tr46/0.0.3: 2567 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 2568 | dev: false 2569 | 2570 | /ts-interface-checker/0.1.13: 2571 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2572 | 2573 | /tsconfig-paths/3.14.2: 2574 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} 2575 | dependencies: 2576 | '@types/json5': 0.0.29 2577 | json5: 1.0.2 2578 | minimist: 1.2.8 2579 | strip-bom: 3.0.0 2580 | dev: false 2581 | 2582 | /tslib/1.14.1: 2583 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2584 | dev: false 2585 | 2586 | /tslib/2.5.0: 2587 | resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} 2588 | dev: false 2589 | 2590 | /tsutils/3.21.0_typescript@5.0.4: 2591 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2592 | engines: {node: '>= 6'} 2593 | peerDependencies: 2594 | 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' 2595 | dependencies: 2596 | tslib: 1.14.1 2597 | typescript: 5.0.4 2598 | dev: false 2599 | 2600 | /type-check/0.4.0: 2601 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2602 | engines: {node: '>= 0.8.0'} 2603 | dependencies: 2604 | prelude-ls: 1.2.1 2605 | 2606 | /type-fest/0.20.2: 2607 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2608 | engines: {node: '>=10'} 2609 | 2610 | /type/1.2.0: 2611 | resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} 2612 | dev: false 2613 | 2614 | /type/2.7.2: 2615 | resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} 2616 | dev: false 2617 | 2618 | /typed-array-length/1.0.4: 2619 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 2620 | dependencies: 2621 | call-bind: 1.0.2 2622 | for-each: 0.3.3 2623 | is-typed-array: 1.1.10 2624 | dev: false 2625 | 2626 | /typedarray-to-buffer/3.1.5: 2627 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} 2628 | dependencies: 2629 | is-typedarray: 1.0.0 2630 | dev: false 2631 | 2632 | /typescript/5.0.4: 2633 | resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} 2634 | engines: {node: '>=12.20'} 2635 | hasBin: true 2636 | dev: false 2637 | 2638 | /unbox-primitive/1.0.2: 2639 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2640 | dependencies: 2641 | call-bind: 1.0.2 2642 | has-bigints: 1.0.2 2643 | has-symbols: 1.0.3 2644 | which-boxed-primitive: 1.0.2 2645 | dev: false 2646 | 2647 | /update-browserslist-db/1.0.10_browserslist@4.21.5: 2648 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} 2649 | hasBin: true 2650 | peerDependencies: 2651 | browserslist: '>= 4.21.0' 2652 | dependencies: 2653 | browserslist: 4.21.5 2654 | escalade: 3.1.1 2655 | picocolors: 1.0.0 2656 | dev: false 2657 | 2658 | /uri-js/4.4.1: 2659 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2660 | dependencies: 2661 | punycode: 2.3.0 2662 | 2663 | /utf-8-validate/5.0.10: 2664 | resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} 2665 | engines: {node: '>=6.14.2'} 2666 | requiresBuild: true 2667 | dependencies: 2668 | node-gyp-build: 4.6.0 2669 | dev: false 2670 | 2671 | /util-deprecate/1.0.2: 2672 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2673 | 2674 | /uuid/8.3.2: 2675 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 2676 | hasBin: true 2677 | dev: false 2678 | 2679 | /webidl-conversions/3.0.1: 2680 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 2681 | dev: false 2682 | 2683 | /websocket/1.0.34: 2684 | resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} 2685 | engines: {node: '>=4.0.0'} 2686 | dependencies: 2687 | bufferutil: 4.0.7 2688 | debug: 2.6.9 2689 | es5-ext: 0.10.62 2690 | typedarray-to-buffer: 3.1.5 2691 | utf-8-validate: 5.0.10 2692 | yaeti: 0.0.6 2693 | transitivePeerDependencies: 2694 | - supports-color 2695 | dev: false 2696 | 2697 | /whatwg-url/5.0.0: 2698 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 2699 | dependencies: 2700 | tr46: 0.0.3 2701 | webidl-conversions: 3.0.1 2702 | dev: false 2703 | 2704 | /which-boxed-primitive/1.0.2: 2705 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2706 | dependencies: 2707 | is-bigint: 1.0.4 2708 | is-boolean-object: 1.1.2 2709 | is-number-object: 1.0.7 2710 | is-string: 1.0.7 2711 | is-symbol: 1.0.4 2712 | dev: false 2713 | 2714 | /which-collection/1.0.1: 2715 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 2716 | dependencies: 2717 | is-map: 2.0.2 2718 | is-set: 2.0.2 2719 | is-weakmap: 2.0.1 2720 | is-weakset: 2.0.2 2721 | dev: false 2722 | 2723 | /which-typed-array/1.1.9: 2724 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} 2725 | engines: {node: '>= 0.4'} 2726 | dependencies: 2727 | available-typed-arrays: 1.0.5 2728 | call-bind: 1.0.2 2729 | for-each: 0.3.3 2730 | gopd: 1.0.1 2731 | has-tostringtag: 1.0.0 2732 | is-typed-array: 1.1.10 2733 | dev: false 2734 | 2735 | /which/2.0.2: 2736 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2737 | engines: {node: '>= 8'} 2738 | hasBin: true 2739 | dependencies: 2740 | isexe: 2.0.0 2741 | 2742 | /word-wrap/1.2.3: 2743 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2744 | engines: {node: '>=0.10.0'} 2745 | 2746 | /wrappy/1.0.2: 2747 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2748 | 2749 | /yaeti/0.0.6: 2750 | resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} 2751 | engines: {node: '>=0.10.32'} 2752 | dev: false 2753 | 2754 | /yallist/4.0.0: 2755 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2756 | dev: false 2757 | 2758 | /yaml/1.10.2: 2759 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 2760 | engines: {node: '>= 6'} 2761 | 2762 | /yocto-queue/0.1.0: 2763 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2764 | engines: {node: '>=10'} 2765 | 2766 | /zod/3.21.4: 2767 | resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 2768 | dev: false 2769 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /prisma/schema.prisma: -------------------------------------------------------------------------------- 1 | datasource db { 2 | provider = "postgresql" 3 | url = env("DATABASE_URL") 4 | } 5 | 6 | generator client { 7 | provider = "prisma-client-js" 8 | // previewFeatures = ["referentialActions"] // You won't need this in Prisma 3.X or higher. 9 | } 10 | 11 | model Account { 12 | id String @id @default(cuid()) 13 | userId String 14 | type String 15 | provider String 16 | providerAccountId String 17 | refresh_token String? @db.Text 18 | access_token String? @db.Text 19 | expires_at Int? 20 | token_type String? 21 | scope String? 22 | id_token String? @db.Text 23 | session_state String? 24 | 25 | user User @relation(fields: [userId], references: [id], onDelete: Cascade) 26 | 27 | @@unique([provider, providerAccountId]) 28 | } 29 | 30 | model Session { 31 | id String @id @default(cuid()) 32 | sessionToken String @unique 33 | userId String 34 | expires DateTime 35 | user User @relation(fields: [userId], references: [id], onDelete: Cascade) 36 | } 37 | 38 | model User { 39 | id String @id @default(cuid()) 40 | name String? 41 | email String? @unique 42 | emailVerified DateTime? 43 | image String? 44 | accounts Account[] 45 | sessions Session[] 46 | Threads Thread[] 47 | } 48 | 49 | model VerificationToken { 50 | identifier String 51 | token String @unique 52 | expires DateTime 53 | 54 | @@unique([identifier, token]) 55 | } 56 | 57 | model Thread { 58 | id String @id @default(cuid()) 59 | title String 60 | createdAt DateTime @default(now()) 61 | updatedAt DateTime @updatedAt 62 | authorId String 63 | author User @relation(fields: [authorId], references: [id], onDelete: Cascade) 64 | tweets Tweet[] 65 | } 66 | 67 | model Tweet { 68 | id Int @id @default(autoincrement()) 69 | content String 70 | createdAt DateTime @default(now()) 71 | updatedAt DateTime @updatedAt 72 | threadId String 73 | thread Thread @relation(fields: [threadId], references: [id], onDelete: Cascade) 74 | } 75 | -------------------------------------------------------------------------------- /public/favicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/actions.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { signIn, signOut } from "next-auth/react"; 4 | import { GitHubIcon } from "@/components/icons/GitHub"; 5 | 6 | export function SignOut() { 7 | return ( 8 | 14 | ); 15 | } 16 | 17 | export function SignIn({ label = "Sign in" }: { label?: string }) { 18 | return ( 19 | 26 | ); 27 | } 28 | 29 | export function SignInSmaller({ label = "Sign in" }: { label?: string }) { 30 | return ( 31 | 38 | ); 39 | } 40 | -------------------------------------------------------------------------------- /src/app/api/thread/route.ts: -------------------------------------------------------------------------------- 1 | import { OpenAIStream, OpenAIStreamPayload } from "@/lib/stream"; 2 | 3 | if (!process.env.OPENAI_API_KEY) { 4 | throw new Error("Missing env var from OpenAI"); 5 | } 6 | 7 | export const config = { 8 | runtime: "edge", 9 | }; 10 | 11 | export async function POST(req: Request) { 12 | console.log("ok"); 13 | if (req.method !== "POST") { 14 | return new Response("Method not allowed", { status: 405 }); 15 | } 16 | const { prompt } = (await req.json()) as { 17 | prompt?: string; 18 | }; 19 | 20 | if (!prompt) { 21 | return new Response("No prompt in the request", { status: 400 }); 22 | } 23 | 24 | const payload: OpenAIStreamPayload = { 25 | model: "gpt-3.5-turbo", 26 | messages: [{ role: "user", content: prompt }], 27 | temperature: 0.7, 28 | top_p: 1, 29 | frequency_penalty: 0, 30 | presence_penalty: 0, 31 | max_tokens: 2000, 32 | stream: true, 33 | n: 1, 34 | }; 35 | 36 | const stream = await OpenAIStream(payload); 37 | return new Response(stream); 38 | } 39 | -------------------------------------------------------------------------------- /src/app/create/page.tsx: -------------------------------------------------------------------------------- 1 | import ThreadForm from "@/components/thread-form"; 2 | import { getServerSession } from "next-auth"; 3 | import { authOptions } from "@/pages/api/auth/[...nextauth]"; 4 | import { SignIn } from "../actions"; 5 | import type { Metadata } from "next"; 6 | 7 | export const metadata: Metadata = { 8 | title: "Create" 9 | } 10 | 11 | export default async function Create() { 12 | const session = await getServerSession(authOptions); 13 | 14 | return ( 15 | <> 16 | {session?.user ? ( 17 | 18 | ) : ( 19 |
20 |

21 | You need to be logged in to create a thread 22 |

23 | 24 |
25 | )} 26 | 27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /src/app/dashboard/page.tsx: -------------------------------------------------------------------------------- 1 | import type { Thread } from "@prisma/client"; 2 | import { z } from "zod"; 3 | import { getServerSession } from "next-auth"; 4 | import { authOptions } from "@/pages/api/auth/[...nextauth]"; 5 | import { prisma } from "@/lib/prisma"; 6 | import { SignIn } from "../actions"; 7 | import type { Metadata } from "next"; 8 | 9 | export const metadata: Metadata = { 10 | title: "Dashboard" 11 | } 12 | 13 | const ThreadSchema = z.array( 14 | z.object({ 15 | id: z.string(), 16 | title: z.string(), 17 | createdAt: z.date(), 18 | }) 19 | ); 20 | 21 | async function getDashboardData() { 22 | const session = await getServerSession(authOptions); 23 | 24 | if (!session?.user) { 25 | throw new Error("You need to be logged in to access this page"); 26 | } 27 | 28 | const data = await prisma.thread.findMany({ 29 | where: { 30 | authorId: session.user.id, 31 | }, 32 | orderBy: { 33 | createdAt: "desc", 34 | } 35 | }); 36 | const threads = ThreadSchema.safeParse(data); 37 | 38 | if (!threads.success) { 39 | throw new Error("Invalid response from server"); 40 | } 41 | 42 | return { 43 | threads: threads.data, 44 | session, 45 | }; 46 | } 47 | 48 | export default async function Dashboard() { 49 | const { threads, session } = await getDashboardData(); 50 | 51 | return ( 52 | <> 53 | {session?.user ? ( 54 |
55 |

56 | Your Threads 57 |

58 |
59 | {threads?.map((thread) => ( 60 |
64 | 68 | {thread.title} 69 | 70 |

71 | created {thread.createdAt.toLocaleDateString()} 72 |

73 |
74 | ))} 75 |
76 |
77 | ) : ( 78 |
79 |

80 | You need to be logged in to create a thread 81 |

82 | 83 |
84 | )} 85 | 86 | ); 87 | } 88 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asrvd/supathreads/301cdc5210b3747fb245b85c7e00d0012daba1d8/src/app/favicon.ico -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | @import url("https://api.fontshare.com/v2/css?f[]=satoshi@1,900,700,500,300,400&display=swap"); 2 | 3 | @tailwind base; 4 | @tailwind components; 5 | @tailwind utilities; 6 | 7 | body { 8 | @apply bg-zinc-50 scrollbar-thin scrollbar-track-transparent scrollbar-thumb-zinc-500/50 scrollbar-thumb-rounded-md selection:bg-zinc-300/50; 9 | } 10 | -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable @next/next/no-img-element */ 2 | import "./globals.css"; 3 | import ToastContainer from "@/components/toaster"; 4 | import { getServerSession } from "next-auth/next"; 5 | import { authOptions } from "@/pages/api/auth/[...nextauth]"; 6 | import { signIn, signOut } from "next-auth/react"; 7 | import NavMenu from "@/components/nav-menu"; 8 | import { SignInSmaller } from "./actions"; 9 | import Link from "next/link"; 10 | import type { Metadata } from "next"; 11 | 12 | export const metadata: Metadata = { 13 | title: { 14 | default: "Supathreads", 15 | template: "Supathreads • %s", 16 | }, 17 | description: "Turn your blogs into concise twitter threads.", 18 | robots: { 19 | index: true, 20 | follow: true, 21 | googleBot: { 22 | index: true, 23 | follow: true, 24 | "max-video-preview": -1, 25 | "max-image-preview": "large", 26 | "max-snippet": -1, 27 | }, 28 | }, 29 | icons: { 30 | icon: "/favicon.svg", 31 | shortcut: "/favicon.svg", 32 | }, 33 | }; 34 | 35 | export default async function RootLayout({ 36 | children, 37 | }: { 38 | children: React.ReactNode; 39 | }) { 40 | const session = await getServerSession(authOptions); 41 | 42 | return ( 43 | 44 | 45 |
46 |
47 | 48 | supathreads ~ 49 | 50 |
51 | {session?.user ? ( 52 | 53 | ) : ( 54 | 55 | )} 56 |
57 |
58 | {children} 59 |
60 |

61 | made with {`<3`} by{" "} 62 | 68 | ashish 69 | {" "} 70 | for the{" "} 71 | 77 | supabase AI hackathon 78 | 79 |

80 |

81 | source code on{" "} 82 | 88 | github 89 | 90 | {" | "} 91 | illustrations by{" "} 92 | 98 | popsy 99 | 100 |

101 |
102 |
103 | 104 | 105 | 106 | ); 107 | } 108 | -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable @next/next/no-img-element */ 2 | 3 | import { SignIn } from "./actions"; 4 | import { getServerSession } from "next-auth"; 5 | import { authOptions } from "@/pages/api/auth/[...nextauth]"; 6 | import { NavButton } from "@/components/ui/buttons"; 7 | 8 | export default async function Home() { 9 | const session = await getServerSession(authOptions); 10 | 11 | return ( 12 |
13 |
14 |

15 | turn your blogs into concise twitter threads 16 |

17 | {session?.user ? ( 18 | 19 | ) : ( 20 | 21 | )} 22 |
23 | illustration 28 |
29 | ); 30 | } 31 | -------------------------------------------------------------------------------- /src/app/threads/[id]/page.tsx: -------------------------------------------------------------------------------- 1 | import { prisma } from "@/lib/prisma"; 2 | import { authOptions } from "@/pages/api/auth/[...nextauth]"; 3 | import { getServerSession } from "next-auth"; 4 | import { z } from "zod"; 5 | import { SignIn } from "@/app/actions"; 6 | import { CopyButton } from "@/components/ui/buttons"; 7 | 8 | import type { Metadata } from "next"; 9 | 10 | export const metadata: Metadata = { 11 | title: "Thread" 12 | } 13 | 14 | const ThreadSchema = z.object({ 15 | id: z.string(), 16 | title: z.string(), 17 | createdAt: z.date(), 18 | tweets: z.array( 19 | z.object({ 20 | id: z.number(), 21 | content: z.string(), 22 | }) 23 | ), 24 | }); 25 | 26 | async function getPageData(id: string) { 27 | const session = await getServerSession(authOptions); 28 | 29 | if (!session?.user) { 30 | throw new Error("You need to be logged in to access this page"); 31 | } 32 | 33 | const data = await prisma.thread.findUnique({ 34 | where: { 35 | id, 36 | }, 37 | include: { 38 | tweets: true, 39 | }, 40 | }); 41 | 42 | const thread = ThreadSchema.safeParse(data); 43 | 44 | if (!thread.success) { 45 | throw new Error(thread.error.message); 46 | } 47 | 48 | return { 49 | thread: thread.data, 50 | session, 51 | }; 52 | } 53 | 54 | export default async function Thread({ 55 | params, 56 | }: { 57 | params: { 58 | id: string; 59 | }; 60 | }) { 61 | const { thread, session } = await getPageData(params.id); 62 | 63 | return ( 64 | <> 65 | {session?.user ? ( 66 |
67 |

68 | {thread.title} 69 |

70 |
71 | {thread.tweets.map((tweet) => ( 72 |
76 |

{tweet.content}

77 | 78 |
79 | ))} 80 |
81 |
82 | ) : ( 83 |
84 |

85 | You need to be logged in to create a thread 86 |

87 | 88 |
89 | )} 90 | 91 | ); 92 | } 93 | -------------------------------------------------------------------------------- /src/components/dashboard.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asrvd/supathreads/301cdc5210b3747fb245b85c7e00d0012daba1d8/src/components/dashboard.tsx -------------------------------------------------------------------------------- /src/components/icons/Check.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from "react"; 2 | 3 | export function CheckIcon(props: SVGProps) { 4 | return ( 5 | 12 | 20 | 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /src/components/icons/Copy.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from "react"; 2 | 3 | export function CopyIcon(props: SVGProps) { 4 | return ( 5 | 12 | 19 | 20 | 21 | 22 | 23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /src/components/icons/GitHub.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from "react"; 2 | 3 | export function GitHubIcon(props: SVGProps) { 4 | return ( 5 | 12 | 19 | 20 | 21 | 22 | 23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /src/components/nav-menu.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable @next/next/no-img-element */ 2 | "use client"; 3 | 4 | import { useState, useRef, useEffect } from "react"; 5 | import type { Session } from "next-auth"; 6 | import Link from "next/link"; 7 | import { signOut } from "next-auth/react"; 8 | 9 | const navItems = [ 10 | { 11 | label: "Home", 12 | route: "/", 13 | }, 14 | { 15 | label: "Create", 16 | route: "/create", 17 | }, 18 | { 19 | label: "Dashboard", 20 | route: "/dashboard", 21 | }, 22 | ]; 23 | 24 | export default function NavMenu({ session }: { session: Session }) { 25 | const [isOpen, setIsOpen] = useState(false); 26 | const ref = useRef(null); 27 | const imageRef = useRef(null); 28 | 29 | useEffect(() => { 30 | const handleClickOutside = (event: MouseEvent) => { 31 | if ( 32 | ref.current && 33 | !ref.current.contains(event.target as Node) && 34 | !imageRef.current?.contains(event.target as Node) 35 | ) { 36 | setIsOpen(false); 37 | } 38 | }; 39 | 40 | document.addEventListener("mousedown", handleClickOutside); 41 | return () => { 42 | document.removeEventListener("mousedown", handleClickOutside); 43 | }; 44 | }, [ref]); 45 | 46 | return ( 47 |
48 | user setIsOpen(!isOpen)} 54 | /> 55 | {isOpen && ( 56 |
60 |
61 |

62 | {session.user?.name} 63 |

64 |

{session.user?.email}

65 |
66 |
67 | {navItems.map((item) => ( 68 | 73 | {item.label} 74 | 75 | ))} 76 |
77 |
78 | 84 |
85 |
86 | )} 87 |
88 | ); 89 | } 90 | -------------------------------------------------------------------------------- /src/components/navbar.tsx: -------------------------------------------------------------------------------- 1 | import { getServerSession } from "next-auth/next"; 2 | import { authOptions } from "@/pages/api/auth/[...nextauth]"; 3 | import { useRouter } from "next/navigation"; 4 | 5 | const navItems = [ 6 | { 7 | label: "Home", 8 | route: "/", 9 | }, 10 | { 11 | label: "Create", 12 | route: "/create", 13 | }, 14 | { 15 | label: "Dashboard", 16 | route: "/dashboard", 17 | }, 18 | ]; 19 | 20 | export default async function Navbar() { 21 | const session = await getServerSession(authOptions); 22 | const router = useRouter(); 23 | 24 | return ( 25 |
26 |

supathread

27 |
28 | ); 29 | } 30 | -------------------------------------------------------------------------------- /src/components/thread-form.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import { useState } from "react"; 3 | import { z } from "zod"; 4 | import { UtilButton } from "@/components/ui/buttons"; 5 | import { SignOut } from "@/app/actions"; 6 | import { CopyButton } from "@/components/ui/buttons"; 7 | import { toast } from "react-hot-toast"; 8 | 9 | export const InputSchema = z.object({ 10 | article: z.string().trim().nonempty().max(17000), 11 | numberOfTweets: z.number().max(6).min(1).default(4), 12 | tweetType: z.enum(["short", "medium", "long"]).default("medium"), 13 | }); 14 | 15 | type TweetType = "short" | "medium" | "long"; 16 | 17 | export default function ThreadForm() { 18 | const [article, setArticle] = useState(""); 19 | const [numberOfTweets, setNumberOfTweets] = useState(4); 20 | const [tweetType, setTweetType] = useState("medium"); 21 | const [generatedTweets, setGeneratedTweets] = useState(""); 22 | const [loading, setLoading] = useState(false); 23 | const [showSaveForm, setShowSaveForm] = useState(false); 24 | const [threadTitle, setThreadTitle] = useState(""); 25 | 26 | const generateThread = async () => { 27 | const id = toast.loading("Generating thread..."); 28 | const input = InputSchema.safeParse({ 29 | article, 30 | numberOfTweets, 31 | tweetType, 32 | }); 33 | if (!input.success) { 34 | console.log(input.error); 35 | toast.error("Invalid form input!", { 36 | id, 37 | }); 38 | return; 39 | } 40 | const prompt = `Turn this article into an interesting twitter thread that catches people's attention, your tone should be like that of a famous twitter thread creator, the first tweet should be an introduction tweet to the thread, the thread should consist of ${input.data.numberOfTweets} tweets of ${input.data.tweetType} length each. Keep the links and people's name in the article as it is, and clearly label them like "1." and "2.",separate each tweet with a line gap, tweets should be written in first person - \n ${input.data.article}`; 41 | setGeneratedTweets(""); 42 | setLoading(true); 43 | const response = await fetch("/api/thread", { 44 | method: "POST", 45 | headers: { 46 | "Content-Type": "application/json", 47 | }, 48 | body: JSON.stringify({ 49 | prompt, 50 | }), 51 | }); 52 | 53 | if (!response.ok) { 54 | console.error(response.statusText); 55 | toast.error("Couldn't generate thread!", { 56 | id, 57 | }); 58 | } 59 | 60 | // This data is a ReadableStream 61 | const data = response.body; 62 | if (!data) { 63 | return; 64 | } 65 | 66 | const reader = data.getReader(); 67 | const decoder = new TextDecoder(); 68 | let done = false; 69 | 70 | while (!done) { 71 | const { value, done: doneReading } = await reader.read(); 72 | done = doneReading; 73 | const chunkValue = decoder.decode(value); 74 | setGeneratedTweets((prev) => prev + chunkValue); 75 | } 76 | // scrollToBios(); 77 | setLoading(false); 78 | toast.success("Thread generated successfully!", { 79 | id, 80 | }); 81 | }; 82 | 83 | const toggleSaveForm = async () => { 84 | setShowSaveForm((prev) => !prev); 85 | }; 86 | 87 | const saveThread = async () => { 88 | const id = toast.loading("Saving thread..."); 89 | if (!threadTitle.trim()) { 90 | toast.error("Please enter a thread title!", { 91 | id, 92 | }); 93 | return; 94 | } 95 | const reqBody = { 96 | title: threadTitle, 97 | tweets: generatedTweets.split("\n\n").map((tweet, index) => ({ 98 | content: tweet.trim().slice(3), 99 | })), 100 | }; 101 | 102 | const response = await fetch("/api/threads", { 103 | method: "POST", 104 | headers: { 105 | "Content-Type": "application/json", 106 | }, 107 | body: JSON.stringify(reqBody), 108 | }); 109 | 110 | if (!response.ok) { 111 | console.error(response.statusText); 112 | toast.error("Couldn't save the thread!", { 113 | id, 114 | }); 115 | } 116 | 117 | const data = await response.json(); 118 | console.log(data); 119 | toast.success("Thread saved successfully!", { 120 | id, 121 | }); 122 | }; 123 | 124 | return ( 125 |
126 |

127 | Create a new thread 128 |

129 |
130 |
131 | 137 | setNumberOfTweets(parseInt(e.target.value))} 145 | /> 146 |
147 |
148 | 154 | 163 |
164 |
165 |
166 | 172 |