├── .eslintrc.json ├── .gitignore ├── LICENSE ├── README.md ├── next-env.d.ts ├── next.config.js ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── prisma └── schema.prisma ├── public └── favicon.ico ├── src ├── components │ └── CreateLink.tsx ├── db │ └── client.ts ├── pages │ ├── _app.tsx │ ├── _middleware.ts │ ├── api │ │ ├── get-link │ │ │ └── [slug].ts │ │ └── trpc │ │ │ └── [trpc].ts │ └── index.tsx ├── styles │ └── globals.css └── utils │ └── trpc.ts ├── tailwind.config.js └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/babel", "next/core-web-vitals"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | .pnpm-debug.log* 27 | 28 | # local env files 29 | .env 30 | .env*.local 31 | 32 | # vercel 33 | .vercel 34 | 35 | # typescript 36 | *.tsbuildinfo 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Shoubhit Dash 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 |

DEOXYS

2 | 3 | ![demo](https://us-east-1.tixte.net/uploads/nexxel.needs.rest/brave_7QyixVB0nP.gif) 4 | 5 | Deoxys is a fast and optimized link shortener. Visit the website [here](https://deoxys.nexxel.dev). 6 | 7 | ### Credits 8 | 9 | - [Theo](https://www.youtube.com/c/TheoBrowne1017) 10 | - [Christian](https://github.com/heyglassy) 11 | - [Joltik](https://github.com/TheoBr/joltik) 12 | 13 | ### Stack 14 | Deoxys uses the [t3-stack](https://init.tips). 15 | 16 | - Next.js 17 | - TailwindCSS 18 | - Prisma 19 | - tRPC 20 | - PlanetScale 21 | 22 | This project bootstrapped using [`create-t3-app`](https://www.npmjs.com/package/create-t3-app). Yes I know I misspelled it in the commit. 23 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | } 5 | 6 | module.exports = nextConfig 7 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "deoxys", 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 | "@prisma/client": "^3.14.0", 13 | "@trpc/client": "^9.23.4", 14 | "@trpc/next": "^9.23.4", 15 | "@trpc/react": "^9.23.4", 16 | "@trpc/server": "^9.23.4", 17 | "copy-to-clipboard": "^3.3.1", 18 | "debounce": "^1.2.1", 19 | "next": "12.1.6", 20 | "prisma": "^3.14.0", 21 | "random-word-slugs": "^0.1.6", 22 | "react": "18.1.0", 23 | "react-dom": "18.1.0", 24 | "react-query": "^3.39.0", 25 | "zod": "^3.16.0" 26 | }, 27 | "devDependencies": { 28 | "@types/debounce": "^1.2.1", 29 | "@types/node": "17.0.35", 30 | "@types/react": "18.0.9", 31 | "@types/react-dom": "18.0.4", 32 | "autoprefixer": "^10.4.7", 33 | "eslint": "8.15.0", 34 | "eslint-config-next": "12.1.6", 35 | "postcss": "^8.4.14", 36 | "tailwindcss": "^3.0.24", 37 | "typescript": "4.6.4" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@prisma/client': ^3.14.0 5 | '@trpc/client': ^9.23.4 6 | '@trpc/next': ^9.23.4 7 | '@trpc/react': ^9.23.4 8 | '@trpc/server': ^9.23.4 9 | '@types/debounce': ^1.2.1 10 | '@types/node': 17.0.35 11 | '@types/react': 18.0.9 12 | '@types/react-dom': 18.0.4 13 | autoprefixer: ^10.4.7 14 | copy-to-clipboard: ^3.3.1 15 | debounce: ^1.2.1 16 | eslint: 8.15.0 17 | eslint-config-next: 12.1.6 18 | next: 12.1.6 19 | postcss: ^8.4.14 20 | prisma: ^3.14.0 21 | random-word-slugs: ^0.1.6 22 | react: 18.1.0 23 | react-dom: 18.1.0 24 | react-query: ^3.39.0 25 | tailwindcss: ^3.0.24 26 | typescript: 4.6.4 27 | zod: ^3.16.0 28 | 29 | dependencies: 30 | '@prisma/client': 3.14.0_prisma@3.14.0 31 | '@trpc/client': 9.23.6_@trpc+server@9.23.6 32 | '@trpc/next': 9.23.6_xngnh72t3ynu7hhwulpja2c5vq 33 | '@trpc/react': 9.23.6_h3snv5ddosaop72uxqotb557xm 34 | '@trpc/server': 9.23.6 35 | copy-to-clipboard: 3.3.1 36 | debounce: 1.2.1 37 | next: 12.1.6_ef5jwxihqo6n7gxfmzogljlgcm 38 | prisma: 3.14.0 39 | random-word-slugs: 0.1.6 40 | react: 18.1.0 41 | react-dom: 18.1.0_react@18.1.0 42 | react-query: 3.39.0_ef5jwxihqo6n7gxfmzogljlgcm 43 | zod: 3.17.3 44 | 45 | devDependencies: 46 | '@types/debounce': 1.2.1 47 | '@types/node': 17.0.35 48 | '@types/react': 18.0.9 49 | '@types/react-dom': 18.0.4 50 | autoprefixer: 10.4.7_postcss@8.4.14 51 | eslint: 8.15.0 52 | eslint-config-next: 12.1.6_6vdljae35l7howjttefzzsim3e 53 | postcss: 8.4.14 54 | tailwindcss: 3.0.24 55 | typescript: 4.6.4 56 | 57 | packages: 58 | 59 | /@babel/runtime-corejs3/7.18.0: 60 | resolution: {integrity: sha512-G5FaGZOWORq9zthDjIrjib5XlcddeqLbIiDO3YQsut6j7aGf76xn0umUC/pA6+nApk3hQJF4JzLzg5PCl6ewJg==} 61 | engines: {node: '>=6.9.0'} 62 | dependencies: 63 | core-js-pure: 3.22.7 64 | regenerator-runtime: 0.13.9 65 | dev: true 66 | 67 | /@babel/runtime/7.18.0: 68 | resolution: {integrity: sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==} 69 | engines: {node: '>=6.9.0'} 70 | dependencies: 71 | regenerator-runtime: 0.13.9 72 | 73 | /@eslint/eslintrc/1.3.0: 74 | resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} 75 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 76 | dependencies: 77 | ajv: 6.12.6 78 | debug: 4.3.4 79 | espree: 9.3.2 80 | globals: 13.15.0 81 | ignore: 5.2.0 82 | import-fresh: 3.3.0 83 | js-yaml: 4.1.0 84 | minimatch: 3.1.2 85 | strip-json-comments: 3.1.1 86 | transitivePeerDependencies: 87 | - supports-color 88 | dev: true 89 | 90 | /@humanwhocodes/config-array/0.9.5: 91 | resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} 92 | engines: {node: '>=10.10.0'} 93 | dependencies: 94 | '@humanwhocodes/object-schema': 1.2.1 95 | debug: 4.3.4 96 | minimatch: 3.1.2 97 | transitivePeerDependencies: 98 | - supports-color 99 | dev: true 100 | 101 | /@humanwhocodes/object-schema/1.2.1: 102 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 103 | dev: true 104 | 105 | /@next/env/12.1.6: 106 | resolution: {integrity: sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA==} 107 | dev: false 108 | 109 | /@next/eslint-plugin-next/12.1.6: 110 | resolution: {integrity: sha512-yNUtJ90NEiYFT6TJnNyofKMPYqirKDwpahcbxBgSIuABwYOdkGwzos1ZkYD51Qf0diYwpQZBeVqElTk7Q2WNqw==} 111 | dependencies: 112 | glob: 7.1.7 113 | dev: true 114 | 115 | /@next/swc-android-arm-eabi/12.1.6: 116 | resolution: {integrity: sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ==} 117 | engines: {node: '>= 10'} 118 | cpu: [arm] 119 | os: [android] 120 | requiresBuild: true 121 | dev: false 122 | optional: true 123 | 124 | /@next/swc-android-arm64/12.1.6: 125 | resolution: {integrity: sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew==} 126 | engines: {node: '>= 10'} 127 | cpu: [arm64] 128 | os: [android] 129 | requiresBuild: true 130 | dev: false 131 | optional: true 132 | 133 | /@next/swc-darwin-arm64/12.1.6: 134 | resolution: {integrity: sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw==} 135 | engines: {node: '>= 10'} 136 | cpu: [arm64] 137 | os: [darwin] 138 | requiresBuild: true 139 | dev: false 140 | optional: true 141 | 142 | /@next/swc-darwin-x64/12.1.6: 143 | resolution: {integrity: sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg==} 144 | engines: {node: '>= 10'} 145 | cpu: [x64] 146 | os: [darwin] 147 | requiresBuild: true 148 | dev: false 149 | optional: true 150 | 151 | /@next/swc-linux-arm-gnueabihf/12.1.6: 152 | resolution: {integrity: sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw==} 153 | engines: {node: '>= 10'} 154 | cpu: [arm] 155 | os: [linux] 156 | requiresBuild: true 157 | dev: false 158 | optional: true 159 | 160 | /@next/swc-linux-arm64-gnu/12.1.6: 161 | resolution: {integrity: sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ==} 162 | engines: {node: '>= 10'} 163 | cpu: [arm64] 164 | os: [linux] 165 | requiresBuild: true 166 | dev: false 167 | optional: true 168 | 169 | /@next/swc-linux-arm64-musl/12.1.6: 170 | resolution: {integrity: sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ==} 171 | engines: {node: '>= 10'} 172 | cpu: [arm64] 173 | os: [linux] 174 | requiresBuild: true 175 | dev: false 176 | optional: true 177 | 178 | /@next/swc-linux-x64-gnu/12.1.6: 179 | resolution: {integrity: sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ==} 180 | engines: {node: '>= 10'} 181 | cpu: [x64] 182 | os: [linux] 183 | requiresBuild: true 184 | dev: false 185 | optional: true 186 | 187 | /@next/swc-linux-x64-musl/12.1.6: 188 | resolution: {integrity: sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag==} 189 | engines: {node: '>= 10'} 190 | cpu: [x64] 191 | os: [linux] 192 | requiresBuild: true 193 | dev: false 194 | optional: true 195 | 196 | /@next/swc-win32-arm64-msvc/12.1.6: 197 | resolution: {integrity: sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g==} 198 | engines: {node: '>= 10'} 199 | cpu: [arm64] 200 | os: [win32] 201 | requiresBuild: true 202 | dev: false 203 | optional: true 204 | 205 | /@next/swc-win32-ia32-msvc/12.1.6: 206 | resolution: {integrity: sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA==} 207 | engines: {node: '>= 10'} 208 | cpu: [ia32] 209 | os: [win32] 210 | requiresBuild: true 211 | dev: false 212 | optional: true 213 | 214 | /@next/swc-win32-x64-msvc/12.1.6: 215 | resolution: {integrity: sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA==} 216 | engines: {node: '>= 10'} 217 | cpu: [x64] 218 | os: [win32] 219 | requiresBuild: true 220 | dev: false 221 | optional: true 222 | 223 | /@nodelib/fs.scandir/2.1.5: 224 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 225 | engines: {node: '>= 8'} 226 | dependencies: 227 | '@nodelib/fs.stat': 2.0.5 228 | run-parallel: 1.2.0 229 | dev: true 230 | 231 | /@nodelib/fs.stat/2.0.5: 232 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 233 | engines: {node: '>= 8'} 234 | dev: true 235 | 236 | /@nodelib/fs.walk/1.2.8: 237 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 238 | engines: {node: '>= 8'} 239 | dependencies: 240 | '@nodelib/fs.scandir': 2.1.5 241 | fastq: 1.13.0 242 | dev: true 243 | 244 | /@prisma/client/3.14.0_prisma@3.14.0: 245 | resolution: {integrity: sha512-atb41UpgTR1MCst0VIbiHTMw8lmXnwUvE1KyUCAkq08+wJyjRE78Due+nSf+7uwqQn+fBFYVmoojtinhlLOSaA==} 246 | engines: {node: '>=12.6'} 247 | requiresBuild: true 248 | peerDependencies: 249 | prisma: '*' 250 | peerDependenciesMeta: 251 | prisma: 252 | optional: true 253 | dependencies: 254 | '@prisma/engines-version': 3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a 255 | prisma: 3.14.0 256 | dev: false 257 | 258 | /@prisma/engines-version/3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a: 259 | resolution: {integrity: sha512-D+yHzq4a2r2Rrd0ZOW/mTZbgDIkUkD8ofKgusEI1xPiZz60Daks+UM7Me2ty5FzH3p/TgyhBpRrfIHx+ha20RQ==} 260 | dev: false 261 | 262 | /@prisma/engines/3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a: 263 | resolution: {integrity: sha512-LwZvI3FY6f43xFjQNRuE10JM5R8vJzFTSmbV9X0Wuhv9kscLkjRlZt0BEoiHmO+2HA3B3xxbMfB5du7ZoSFXGg==} 264 | requiresBuild: true 265 | dev: false 266 | 267 | /@rushstack/eslint-patch/1.1.3: 268 | resolution: {integrity: sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==} 269 | dev: true 270 | 271 | /@trpc/client/9.23.6_@trpc+server@9.23.6: 272 | resolution: {integrity: sha512-O7PprFqK5aN5ruO3ZYlV+MDnLkmXkk+iSQCAzWBXIRZ3j8l0ZMMlq2C+zwJ9bfkaLMXiczZ6nMkqb8647dnf6g==} 273 | peerDependencies: 274 | '@trpc/server': 9.23.6 275 | dependencies: 276 | '@babel/runtime': 7.18.0 277 | '@trpc/server': 9.23.6 278 | dev: false 279 | 280 | /@trpc/next/9.23.6_xngnh72t3ynu7hhwulpja2c5vq: 281 | resolution: {integrity: sha512-ET4nAt8c+TzOfmMr5VWpa33hW8i9BxENY2Epk3BjmBZOd53aH+2z6pSNxYy9VGadT+r/rSBFcuVuEP2q6SfGDg==} 282 | peerDependencies: 283 | '@trpc/client': 9.23.6 284 | '@trpc/react': 9.23.6 285 | '@trpc/server': 9.23.6 286 | next: '*' 287 | react: '>=16.8.0' 288 | react-dom: '>=16.8.0' 289 | react-query: ^3.37.0 || ^4.0.0-alpha.4 290 | dependencies: 291 | '@babel/runtime': 7.18.0 292 | '@trpc/client': 9.23.6_@trpc+server@9.23.6 293 | '@trpc/react': 9.23.6_h3snv5ddosaop72uxqotb557xm 294 | '@trpc/server': 9.23.6 295 | next: 12.1.6_ef5jwxihqo6n7gxfmzogljlgcm 296 | react: 18.1.0 297 | react-dom: 18.1.0_react@18.1.0 298 | react-query: 3.39.0_ef5jwxihqo6n7gxfmzogljlgcm 299 | react-ssr-prepass: 1.5.0_react@18.1.0 300 | dev: false 301 | 302 | /@trpc/react/9.23.6_h3snv5ddosaop72uxqotb557xm: 303 | resolution: {integrity: sha512-pgw/sb5o3Q2vPDohQvIaoSuBPi/0uKXY8lHV6pBwiP45abuXZm4/BjQ9gx5oIPmGgX/KSaY/BN1io/NELtjo+A==} 304 | peerDependencies: 305 | '@trpc/client': 9.23.6 306 | '@trpc/server': 9.23.6 307 | react: '>=16.8.0' 308 | react-dom: '>=16.8.0' 309 | react-query: ^3.37.0 || ^4.0.0-alpha.4 310 | dependencies: 311 | '@babel/runtime': 7.18.0 312 | '@trpc/client': 9.23.6_@trpc+server@9.23.6 313 | '@trpc/server': 9.23.6 314 | react: 18.1.0 315 | react-dom: 18.1.0_react@18.1.0 316 | react-query: 3.39.0_ef5jwxihqo6n7gxfmzogljlgcm 317 | dev: false 318 | 319 | /@trpc/server/9.23.6: 320 | resolution: {integrity: sha512-xdoHjv0Km6kr7fBpu91rN3wURWGazUA7+dRquWywWLUDH3EiERg6n0Lkz/YgxH7n+liu6UkRs1Npjt6oo01+xA==} 321 | dev: false 322 | 323 | /@types/debounce/1.2.1: 324 | resolution: {integrity: sha512-epMsEE85fi4lfmJUH/89/iV/LI+F5CvNIvmgs5g5jYFPfhO2S/ae8WSsLOKWdwtoaZw9Q2IhJ4tQ5tFCcS/4HA==} 325 | dev: true 326 | 327 | /@types/json5/0.0.29: 328 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 329 | dev: true 330 | 331 | /@types/node/17.0.35: 332 | resolution: {integrity: sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==} 333 | dev: true 334 | 335 | /@types/prop-types/15.7.5: 336 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 337 | dev: true 338 | 339 | /@types/react-dom/18.0.4: 340 | resolution: {integrity: sha512-FgTtbqPOCI3dzZPZoC2T/sx3L34qxy99ITWn4eoSA95qPyXDMH0ALoAqUp49ITniiJFsXUVBtalh/KffMpg21Q==} 341 | dependencies: 342 | '@types/react': 18.0.9 343 | dev: true 344 | 345 | /@types/react/18.0.9: 346 | resolution: {integrity: sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==} 347 | dependencies: 348 | '@types/prop-types': 15.7.5 349 | '@types/scheduler': 0.16.2 350 | csstype: 3.1.0 351 | dev: true 352 | 353 | /@types/scheduler/0.16.2: 354 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 355 | dev: true 356 | 357 | /@typescript-eslint/parser/5.26.0_hcfsmds2fshutdssjqluwm76uu: 358 | resolution: {integrity: sha512-n/IzU87ttzIdnAH5vQ4BBDnLPly7rC5VnjN3m0xBG82HK6rhRxnCb3w/GyWbNDghPd+NktJqB/wl6+YkzZ5T5Q==} 359 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 360 | peerDependencies: 361 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 362 | typescript: '*' 363 | peerDependenciesMeta: 364 | typescript: 365 | optional: true 366 | dependencies: 367 | '@typescript-eslint/scope-manager': 5.26.0 368 | '@typescript-eslint/types': 5.26.0 369 | '@typescript-eslint/typescript-estree': 5.26.0_typescript@4.6.4 370 | debug: 4.3.4 371 | eslint: 8.15.0 372 | typescript: 4.6.4 373 | transitivePeerDependencies: 374 | - supports-color 375 | dev: true 376 | 377 | /@typescript-eslint/scope-manager/5.26.0: 378 | resolution: {integrity: sha512-gVzTJUESuTwiju/7NiTb4c5oqod8xt5GhMbExKsCTp6adU3mya6AGJ4Pl9xC7x2DX9UYFsjImC0mA62BCY22Iw==} 379 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 380 | dependencies: 381 | '@typescript-eslint/types': 5.26.0 382 | '@typescript-eslint/visitor-keys': 5.26.0 383 | dev: true 384 | 385 | /@typescript-eslint/types/5.26.0: 386 | resolution: {integrity: sha512-8794JZFE1RN4XaExLWLI2oSXsVImNkl79PzTOOWt9h0UHROwJedNOD2IJyfL0NbddFllcktGIO2aOu10avQQyA==} 387 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 388 | dev: true 389 | 390 | /@typescript-eslint/typescript-estree/5.26.0_typescript@4.6.4: 391 | resolution: {integrity: sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==} 392 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 393 | peerDependencies: 394 | typescript: '*' 395 | peerDependenciesMeta: 396 | typescript: 397 | optional: true 398 | dependencies: 399 | '@typescript-eslint/types': 5.26.0 400 | '@typescript-eslint/visitor-keys': 5.26.0 401 | debug: 4.3.4 402 | globby: 11.1.0 403 | is-glob: 4.0.3 404 | semver: 7.3.7 405 | tsutils: 3.21.0_typescript@4.6.4 406 | typescript: 4.6.4 407 | transitivePeerDependencies: 408 | - supports-color 409 | dev: true 410 | 411 | /@typescript-eslint/visitor-keys/5.26.0: 412 | resolution: {integrity: sha512-wei+ffqHanYDOQgg/fS6Hcar6wAWv0CUPQ3TZzOWd2BLfgP539rb49bwua8WRAs7R6kOSLn82rfEu2ro6Llt8Q==} 413 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 414 | dependencies: 415 | '@typescript-eslint/types': 5.26.0 416 | eslint-visitor-keys: 3.3.0 417 | dev: true 418 | 419 | /acorn-jsx/5.3.2_acorn@8.7.1: 420 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 421 | peerDependencies: 422 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 423 | dependencies: 424 | acorn: 8.7.1 425 | dev: true 426 | 427 | /acorn-node/1.8.2: 428 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} 429 | dependencies: 430 | acorn: 7.4.1 431 | acorn-walk: 7.2.0 432 | xtend: 4.0.2 433 | dev: true 434 | 435 | /acorn-walk/7.2.0: 436 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 437 | engines: {node: '>=0.4.0'} 438 | dev: true 439 | 440 | /acorn/7.4.1: 441 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 442 | engines: {node: '>=0.4.0'} 443 | hasBin: true 444 | dev: true 445 | 446 | /acorn/8.7.1: 447 | resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} 448 | engines: {node: '>=0.4.0'} 449 | hasBin: true 450 | dev: true 451 | 452 | /ajv/6.12.6: 453 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 454 | dependencies: 455 | fast-deep-equal: 3.1.3 456 | fast-json-stable-stringify: 2.1.0 457 | json-schema-traverse: 0.4.1 458 | uri-js: 4.4.1 459 | dev: true 460 | 461 | /ansi-regex/5.0.1: 462 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 463 | engines: {node: '>=8'} 464 | dev: true 465 | 466 | /ansi-styles/4.3.0: 467 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 468 | engines: {node: '>=8'} 469 | dependencies: 470 | color-convert: 2.0.1 471 | dev: true 472 | 473 | /anymatch/3.1.2: 474 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 475 | engines: {node: '>= 8'} 476 | dependencies: 477 | normalize-path: 3.0.0 478 | picomatch: 2.3.1 479 | dev: true 480 | 481 | /arg/5.0.1: 482 | resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==} 483 | dev: true 484 | 485 | /argparse/2.0.1: 486 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 487 | dev: true 488 | 489 | /aria-query/4.2.2: 490 | resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} 491 | engines: {node: '>=6.0'} 492 | dependencies: 493 | '@babel/runtime': 7.18.0 494 | '@babel/runtime-corejs3': 7.18.0 495 | dev: true 496 | 497 | /array-includes/3.1.5: 498 | resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} 499 | engines: {node: '>= 0.4'} 500 | dependencies: 501 | call-bind: 1.0.2 502 | define-properties: 1.1.4 503 | es-abstract: 1.20.1 504 | get-intrinsic: 1.1.1 505 | is-string: 1.0.7 506 | dev: true 507 | 508 | /array-union/2.1.0: 509 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 510 | engines: {node: '>=8'} 511 | dev: true 512 | 513 | /array.prototype.flat/1.3.0: 514 | resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} 515 | engines: {node: '>= 0.4'} 516 | dependencies: 517 | call-bind: 1.0.2 518 | define-properties: 1.1.4 519 | es-abstract: 1.20.1 520 | es-shim-unscopables: 1.0.0 521 | dev: true 522 | 523 | /array.prototype.flatmap/1.3.0: 524 | resolution: {integrity: sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==} 525 | engines: {node: '>= 0.4'} 526 | dependencies: 527 | call-bind: 1.0.2 528 | define-properties: 1.1.4 529 | es-abstract: 1.20.1 530 | es-shim-unscopables: 1.0.0 531 | dev: true 532 | 533 | /ast-types-flow/0.0.7: 534 | resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} 535 | dev: true 536 | 537 | /autoprefixer/10.4.7_postcss@8.4.14: 538 | resolution: {integrity: sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==} 539 | engines: {node: ^10 || ^12 || >=14} 540 | hasBin: true 541 | peerDependencies: 542 | postcss: ^8.1.0 543 | dependencies: 544 | browserslist: 4.20.3 545 | caniuse-lite: 1.0.30001342 546 | fraction.js: 4.2.0 547 | normalize-range: 0.1.2 548 | picocolors: 1.0.0 549 | postcss: 8.4.14 550 | postcss-value-parser: 4.2.0 551 | dev: true 552 | 553 | /axe-core/4.4.2: 554 | resolution: {integrity: sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA==} 555 | engines: {node: '>=12'} 556 | dev: true 557 | 558 | /axobject-query/2.2.0: 559 | resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==} 560 | dev: true 561 | 562 | /balanced-match/1.0.2: 563 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 564 | 565 | /big-integer/1.6.51: 566 | resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} 567 | engines: {node: '>=0.6'} 568 | dev: false 569 | 570 | /binary-extensions/2.2.0: 571 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 572 | engines: {node: '>=8'} 573 | dev: true 574 | 575 | /brace-expansion/1.1.11: 576 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 577 | dependencies: 578 | balanced-match: 1.0.2 579 | concat-map: 0.0.1 580 | 581 | /braces/3.0.2: 582 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 583 | engines: {node: '>=8'} 584 | dependencies: 585 | fill-range: 7.0.1 586 | dev: true 587 | 588 | /broadcast-channel/3.7.0: 589 | resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} 590 | dependencies: 591 | '@babel/runtime': 7.18.0 592 | detect-node: 2.1.0 593 | js-sha3: 0.8.0 594 | microseconds: 0.2.0 595 | nano-time: 1.0.0 596 | oblivious-set: 1.0.0 597 | rimraf: 3.0.2 598 | unload: 2.2.0 599 | dev: false 600 | 601 | /browserslist/4.20.3: 602 | resolution: {integrity: sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==} 603 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 604 | hasBin: true 605 | dependencies: 606 | caniuse-lite: 1.0.30001342 607 | electron-to-chromium: 1.4.138 608 | escalade: 3.1.1 609 | node-releases: 2.0.5 610 | picocolors: 1.0.0 611 | dev: true 612 | 613 | /call-bind/1.0.2: 614 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 615 | dependencies: 616 | function-bind: 1.1.1 617 | get-intrinsic: 1.1.1 618 | dev: true 619 | 620 | /callsites/3.1.0: 621 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 622 | engines: {node: '>=6'} 623 | dev: true 624 | 625 | /camelcase-css/2.0.1: 626 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 627 | engines: {node: '>= 6'} 628 | dev: true 629 | 630 | /caniuse-lite/1.0.30001342: 631 | resolution: {integrity: sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA==} 632 | 633 | /chalk/4.1.2: 634 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 635 | engines: {node: '>=10'} 636 | dependencies: 637 | ansi-styles: 4.3.0 638 | supports-color: 7.2.0 639 | dev: true 640 | 641 | /chokidar/3.5.3: 642 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 643 | engines: {node: '>= 8.10.0'} 644 | dependencies: 645 | anymatch: 3.1.2 646 | braces: 3.0.2 647 | glob-parent: 5.1.2 648 | is-binary-path: 2.1.0 649 | is-glob: 4.0.3 650 | normalize-path: 3.0.0 651 | readdirp: 3.6.0 652 | optionalDependencies: 653 | fsevents: 2.3.2 654 | dev: true 655 | 656 | /color-convert/2.0.1: 657 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 658 | engines: {node: '>=7.0.0'} 659 | dependencies: 660 | color-name: 1.1.4 661 | dev: true 662 | 663 | /color-name/1.1.4: 664 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 665 | dev: true 666 | 667 | /concat-map/0.0.1: 668 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 669 | 670 | /copy-to-clipboard/3.3.1: 671 | resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} 672 | dependencies: 673 | toggle-selection: 1.0.6 674 | dev: false 675 | 676 | /core-js-pure/3.22.7: 677 | resolution: {integrity: sha512-wTriFxiZI+C8msGeh7fJcbC/a0V8fdInN1oS2eK79DMBGs8iIJiXhtFJCiT3rBa8w6zroHWW3p8ArlujZ/Mz+w==} 678 | requiresBuild: true 679 | dev: true 680 | 681 | /cross-spawn/7.0.3: 682 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 683 | engines: {node: '>= 8'} 684 | dependencies: 685 | path-key: 3.1.1 686 | shebang-command: 2.0.0 687 | which: 2.0.2 688 | dev: true 689 | 690 | /cssesc/3.0.0: 691 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 692 | engines: {node: '>=4'} 693 | hasBin: true 694 | dev: true 695 | 696 | /csstype/3.1.0: 697 | resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} 698 | dev: true 699 | 700 | /damerau-levenshtein/1.0.8: 701 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 702 | dev: true 703 | 704 | /debounce/1.2.1: 705 | resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} 706 | dev: false 707 | 708 | /debug/2.6.9: 709 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 710 | peerDependencies: 711 | supports-color: '*' 712 | peerDependenciesMeta: 713 | supports-color: 714 | optional: true 715 | dependencies: 716 | ms: 2.0.0 717 | dev: true 718 | 719 | /debug/3.2.7: 720 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 721 | peerDependencies: 722 | supports-color: '*' 723 | peerDependenciesMeta: 724 | supports-color: 725 | optional: true 726 | dependencies: 727 | ms: 2.1.3 728 | dev: true 729 | 730 | /debug/4.3.4: 731 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 732 | engines: {node: '>=6.0'} 733 | peerDependencies: 734 | supports-color: '*' 735 | peerDependenciesMeta: 736 | supports-color: 737 | optional: true 738 | dependencies: 739 | ms: 2.1.2 740 | dev: true 741 | 742 | /deep-is/0.1.4: 743 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 744 | dev: true 745 | 746 | /define-properties/1.1.4: 747 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 748 | engines: {node: '>= 0.4'} 749 | dependencies: 750 | has-property-descriptors: 1.0.0 751 | object-keys: 1.1.1 752 | dev: true 753 | 754 | /defined/1.0.0: 755 | resolution: {integrity: sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=} 756 | dev: true 757 | 758 | /detect-node/2.1.0: 759 | resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} 760 | dev: false 761 | 762 | /detective/5.2.0: 763 | resolution: {integrity: sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==} 764 | engines: {node: '>=0.8.0'} 765 | hasBin: true 766 | dependencies: 767 | acorn-node: 1.8.2 768 | defined: 1.0.0 769 | minimist: 1.2.6 770 | dev: true 771 | 772 | /didyoumean/1.2.2: 773 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 774 | dev: true 775 | 776 | /dir-glob/3.0.1: 777 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 778 | engines: {node: '>=8'} 779 | dependencies: 780 | path-type: 4.0.0 781 | dev: true 782 | 783 | /dlv/1.1.3: 784 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 785 | dev: true 786 | 787 | /doctrine/2.1.0: 788 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 789 | engines: {node: '>=0.10.0'} 790 | dependencies: 791 | esutils: 2.0.3 792 | dev: true 793 | 794 | /doctrine/3.0.0: 795 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 796 | engines: {node: '>=6.0.0'} 797 | dependencies: 798 | esutils: 2.0.3 799 | dev: true 800 | 801 | /electron-to-chromium/1.4.138: 802 | resolution: {integrity: sha512-IOyp2Seq3w4QLln+yZWcMF3VXhhduz4bwg9gfI+CnP5TkzwNXQ8FCZuwwPsnes73AfWdf5J2n2OXdUwDUspDPQ==} 803 | dev: true 804 | 805 | /emoji-regex/9.2.2: 806 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 807 | dev: true 808 | 809 | /es-abstract/1.20.1: 810 | resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} 811 | engines: {node: '>= 0.4'} 812 | dependencies: 813 | call-bind: 1.0.2 814 | es-to-primitive: 1.2.1 815 | function-bind: 1.1.1 816 | function.prototype.name: 1.1.5 817 | get-intrinsic: 1.1.1 818 | get-symbol-description: 1.0.0 819 | has: 1.0.3 820 | has-property-descriptors: 1.0.0 821 | has-symbols: 1.0.3 822 | internal-slot: 1.0.3 823 | is-callable: 1.2.4 824 | is-negative-zero: 2.0.2 825 | is-regex: 1.1.4 826 | is-shared-array-buffer: 1.0.2 827 | is-string: 1.0.7 828 | is-weakref: 1.0.2 829 | object-inspect: 1.12.1 830 | object-keys: 1.1.1 831 | object.assign: 4.1.2 832 | regexp.prototype.flags: 1.4.3 833 | string.prototype.trimend: 1.0.5 834 | string.prototype.trimstart: 1.0.5 835 | unbox-primitive: 1.0.2 836 | dev: true 837 | 838 | /es-shim-unscopables/1.0.0: 839 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 840 | dependencies: 841 | has: 1.0.3 842 | dev: true 843 | 844 | /es-to-primitive/1.2.1: 845 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 846 | engines: {node: '>= 0.4'} 847 | dependencies: 848 | is-callable: 1.2.4 849 | is-date-object: 1.0.5 850 | is-symbol: 1.0.4 851 | dev: true 852 | 853 | /escalade/3.1.1: 854 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 855 | engines: {node: '>=6'} 856 | dev: true 857 | 858 | /escape-string-regexp/4.0.0: 859 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 860 | engines: {node: '>=10'} 861 | dev: true 862 | 863 | /eslint-config-next/12.1.6_6vdljae35l7howjttefzzsim3e: 864 | resolution: {integrity: sha512-qoiS3g/EPzfCTkGkaPBSX9W0NGE/B1wNO3oWrd76QszVGrdpLggNqcO8+LR6MB0CNqtp9Q8NoeVrxNVbzM9hqA==} 865 | peerDependencies: 866 | eslint: ^7.23.0 || ^8.0.0 867 | next: '>=10.2.0' 868 | typescript: '>=3.3.1' 869 | peerDependenciesMeta: 870 | typescript: 871 | optional: true 872 | dependencies: 873 | '@next/eslint-plugin-next': 12.1.6 874 | '@rushstack/eslint-patch': 1.1.3 875 | '@typescript-eslint/parser': 5.26.0_hcfsmds2fshutdssjqluwm76uu 876 | eslint: 8.15.0 877 | eslint-import-resolver-node: 0.3.6 878 | eslint-import-resolver-typescript: 2.7.1_gwd37gqv3vjv3xlpl7ju3ag2qu 879 | eslint-plugin-import: 2.26.0_w7vyenmttn5y2zryvpdemshvcq 880 | eslint-plugin-jsx-a11y: 6.5.1_eslint@8.15.0 881 | eslint-plugin-react: 7.30.0_eslint@8.15.0 882 | eslint-plugin-react-hooks: 4.5.0_eslint@8.15.0 883 | next: 12.1.6_ef5jwxihqo6n7gxfmzogljlgcm 884 | typescript: 4.6.4 885 | transitivePeerDependencies: 886 | - eslint-import-resolver-webpack 887 | - supports-color 888 | dev: true 889 | 890 | /eslint-import-resolver-node/0.3.6: 891 | resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} 892 | dependencies: 893 | debug: 3.2.7 894 | resolve: 1.22.0 895 | transitivePeerDependencies: 896 | - supports-color 897 | dev: true 898 | 899 | /eslint-import-resolver-typescript/2.7.1_gwd37gqv3vjv3xlpl7ju3ag2qu: 900 | resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} 901 | engines: {node: '>=4'} 902 | peerDependencies: 903 | eslint: '*' 904 | eslint-plugin-import: '*' 905 | dependencies: 906 | debug: 4.3.4 907 | eslint: 8.15.0 908 | eslint-plugin-import: 2.26.0_w7vyenmttn5y2zryvpdemshvcq 909 | glob: 7.2.3 910 | is-glob: 4.0.3 911 | resolve: 1.22.0 912 | tsconfig-paths: 3.14.1 913 | transitivePeerDependencies: 914 | - supports-color 915 | dev: true 916 | 917 | /eslint-module-utils/2.7.3_yxrttxwxgn5axzfjkhhzgts2eq: 918 | resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} 919 | engines: {node: '>=4'} 920 | peerDependencies: 921 | '@typescript-eslint/parser': '*' 922 | eslint-import-resolver-node: '*' 923 | eslint-import-resolver-typescript: '*' 924 | eslint-import-resolver-webpack: '*' 925 | peerDependenciesMeta: 926 | '@typescript-eslint/parser': 927 | optional: true 928 | eslint-import-resolver-node: 929 | optional: true 930 | eslint-import-resolver-typescript: 931 | optional: true 932 | eslint-import-resolver-webpack: 933 | optional: true 934 | dependencies: 935 | '@typescript-eslint/parser': 5.26.0_hcfsmds2fshutdssjqluwm76uu 936 | debug: 3.2.7 937 | eslint-import-resolver-node: 0.3.6 938 | eslint-import-resolver-typescript: 2.7.1_gwd37gqv3vjv3xlpl7ju3ag2qu 939 | find-up: 2.1.0 940 | transitivePeerDependencies: 941 | - supports-color 942 | dev: true 943 | 944 | /eslint-plugin-import/2.26.0_w7vyenmttn5y2zryvpdemshvcq: 945 | resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} 946 | engines: {node: '>=4'} 947 | peerDependencies: 948 | '@typescript-eslint/parser': '*' 949 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 950 | peerDependenciesMeta: 951 | '@typescript-eslint/parser': 952 | optional: true 953 | dependencies: 954 | '@typescript-eslint/parser': 5.26.0_hcfsmds2fshutdssjqluwm76uu 955 | array-includes: 3.1.5 956 | array.prototype.flat: 1.3.0 957 | debug: 2.6.9 958 | doctrine: 2.1.0 959 | eslint: 8.15.0 960 | eslint-import-resolver-node: 0.3.6 961 | eslint-module-utils: 2.7.3_yxrttxwxgn5axzfjkhhzgts2eq 962 | has: 1.0.3 963 | is-core-module: 2.9.0 964 | is-glob: 4.0.3 965 | minimatch: 3.1.2 966 | object.values: 1.1.5 967 | resolve: 1.22.0 968 | tsconfig-paths: 3.14.1 969 | transitivePeerDependencies: 970 | - eslint-import-resolver-typescript 971 | - eslint-import-resolver-webpack 972 | - supports-color 973 | dev: true 974 | 975 | /eslint-plugin-jsx-a11y/6.5.1_eslint@8.15.0: 976 | resolution: {integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==} 977 | engines: {node: '>=4.0'} 978 | peerDependencies: 979 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 980 | dependencies: 981 | '@babel/runtime': 7.18.0 982 | aria-query: 4.2.2 983 | array-includes: 3.1.5 984 | ast-types-flow: 0.0.7 985 | axe-core: 4.4.2 986 | axobject-query: 2.2.0 987 | damerau-levenshtein: 1.0.8 988 | emoji-regex: 9.2.2 989 | eslint: 8.15.0 990 | has: 1.0.3 991 | jsx-ast-utils: 3.3.0 992 | language-tags: 1.0.5 993 | minimatch: 3.1.2 994 | dev: true 995 | 996 | /eslint-plugin-react-hooks/4.5.0_eslint@8.15.0: 997 | resolution: {integrity: sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==} 998 | engines: {node: '>=10'} 999 | peerDependencies: 1000 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1001 | dependencies: 1002 | eslint: 8.15.0 1003 | dev: true 1004 | 1005 | /eslint-plugin-react/7.30.0_eslint@8.15.0: 1006 | resolution: {integrity: sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==} 1007 | engines: {node: '>=4'} 1008 | peerDependencies: 1009 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1010 | dependencies: 1011 | array-includes: 3.1.5 1012 | array.prototype.flatmap: 1.3.0 1013 | doctrine: 2.1.0 1014 | eslint: 8.15.0 1015 | estraverse: 5.3.0 1016 | jsx-ast-utils: 3.3.0 1017 | minimatch: 3.1.2 1018 | object.entries: 1.1.5 1019 | object.fromentries: 2.0.5 1020 | object.hasown: 1.1.1 1021 | object.values: 1.1.5 1022 | prop-types: 15.8.1 1023 | resolve: 2.0.0-next.3 1024 | semver: 6.3.0 1025 | string.prototype.matchall: 4.0.7 1026 | dev: true 1027 | 1028 | /eslint-scope/7.1.1: 1029 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 1030 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1031 | dependencies: 1032 | esrecurse: 4.3.0 1033 | estraverse: 5.3.0 1034 | dev: true 1035 | 1036 | /eslint-utils/3.0.0_eslint@8.15.0: 1037 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1038 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1039 | peerDependencies: 1040 | eslint: '>=5' 1041 | dependencies: 1042 | eslint: 8.15.0 1043 | eslint-visitor-keys: 2.1.0 1044 | dev: true 1045 | 1046 | /eslint-visitor-keys/2.1.0: 1047 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1048 | engines: {node: '>=10'} 1049 | dev: true 1050 | 1051 | /eslint-visitor-keys/3.3.0: 1052 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 1053 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1054 | dev: true 1055 | 1056 | /eslint/8.15.0: 1057 | resolution: {integrity: sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==} 1058 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1059 | hasBin: true 1060 | dependencies: 1061 | '@eslint/eslintrc': 1.3.0 1062 | '@humanwhocodes/config-array': 0.9.5 1063 | ajv: 6.12.6 1064 | chalk: 4.1.2 1065 | cross-spawn: 7.0.3 1066 | debug: 4.3.4 1067 | doctrine: 3.0.0 1068 | escape-string-regexp: 4.0.0 1069 | eslint-scope: 7.1.1 1070 | eslint-utils: 3.0.0_eslint@8.15.0 1071 | eslint-visitor-keys: 3.3.0 1072 | espree: 9.3.2 1073 | esquery: 1.4.0 1074 | esutils: 2.0.3 1075 | fast-deep-equal: 3.1.3 1076 | file-entry-cache: 6.0.1 1077 | functional-red-black-tree: 1.0.1 1078 | glob-parent: 6.0.2 1079 | globals: 13.15.0 1080 | ignore: 5.2.0 1081 | import-fresh: 3.3.0 1082 | imurmurhash: 0.1.4 1083 | is-glob: 4.0.3 1084 | js-yaml: 4.1.0 1085 | json-stable-stringify-without-jsonify: 1.0.1 1086 | levn: 0.4.1 1087 | lodash.merge: 4.6.2 1088 | minimatch: 3.1.2 1089 | natural-compare: 1.4.0 1090 | optionator: 0.9.1 1091 | regexpp: 3.2.0 1092 | strip-ansi: 6.0.1 1093 | strip-json-comments: 3.1.1 1094 | text-table: 0.2.0 1095 | v8-compile-cache: 2.3.0 1096 | transitivePeerDependencies: 1097 | - supports-color 1098 | dev: true 1099 | 1100 | /espree/9.3.2: 1101 | resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==} 1102 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1103 | dependencies: 1104 | acorn: 8.7.1 1105 | acorn-jsx: 5.3.2_acorn@8.7.1 1106 | eslint-visitor-keys: 3.3.0 1107 | dev: true 1108 | 1109 | /esquery/1.4.0: 1110 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1111 | engines: {node: '>=0.10'} 1112 | dependencies: 1113 | estraverse: 5.3.0 1114 | dev: true 1115 | 1116 | /esrecurse/4.3.0: 1117 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1118 | engines: {node: '>=4.0'} 1119 | dependencies: 1120 | estraverse: 5.3.0 1121 | dev: true 1122 | 1123 | /estraverse/5.3.0: 1124 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1125 | engines: {node: '>=4.0'} 1126 | dev: true 1127 | 1128 | /esutils/2.0.3: 1129 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1130 | engines: {node: '>=0.10.0'} 1131 | dev: true 1132 | 1133 | /fast-deep-equal/3.1.3: 1134 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1135 | dev: true 1136 | 1137 | /fast-glob/3.2.11: 1138 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 1139 | engines: {node: '>=8.6.0'} 1140 | dependencies: 1141 | '@nodelib/fs.stat': 2.0.5 1142 | '@nodelib/fs.walk': 1.2.8 1143 | glob-parent: 5.1.2 1144 | merge2: 1.4.1 1145 | micromatch: 4.0.5 1146 | dev: true 1147 | 1148 | /fast-json-stable-stringify/2.1.0: 1149 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1150 | dev: true 1151 | 1152 | /fast-levenshtein/2.0.6: 1153 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 1154 | dev: true 1155 | 1156 | /fastq/1.13.0: 1157 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1158 | dependencies: 1159 | reusify: 1.0.4 1160 | dev: true 1161 | 1162 | /file-entry-cache/6.0.1: 1163 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1164 | engines: {node: ^10.12.0 || >=12.0.0} 1165 | dependencies: 1166 | flat-cache: 3.0.4 1167 | dev: true 1168 | 1169 | /fill-range/7.0.1: 1170 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1171 | engines: {node: '>=8'} 1172 | dependencies: 1173 | to-regex-range: 5.0.1 1174 | dev: true 1175 | 1176 | /find-up/2.1.0: 1177 | resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} 1178 | engines: {node: '>=4'} 1179 | dependencies: 1180 | locate-path: 2.0.0 1181 | dev: true 1182 | 1183 | /flat-cache/3.0.4: 1184 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1185 | engines: {node: ^10.12.0 || >=12.0.0} 1186 | dependencies: 1187 | flatted: 3.2.5 1188 | rimraf: 3.0.2 1189 | dev: true 1190 | 1191 | /flatted/3.2.5: 1192 | resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} 1193 | dev: true 1194 | 1195 | /fraction.js/4.2.0: 1196 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 1197 | dev: true 1198 | 1199 | /fs.realpath/1.0.0: 1200 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1201 | 1202 | /fsevents/2.3.2: 1203 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1204 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1205 | os: [darwin] 1206 | requiresBuild: true 1207 | dev: true 1208 | optional: true 1209 | 1210 | /function-bind/1.1.1: 1211 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1212 | dev: true 1213 | 1214 | /function.prototype.name/1.1.5: 1215 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1216 | engines: {node: '>= 0.4'} 1217 | dependencies: 1218 | call-bind: 1.0.2 1219 | define-properties: 1.1.4 1220 | es-abstract: 1.20.1 1221 | functions-have-names: 1.2.3 1222 | dev: true 1223 | 1224 | /functional-red-black-tree/1.0.1: 1225 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} 1226 | dev: true 1227 | 1228 | /functions-have-names/1.2.3: 1229 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1230 | dev: true 1231 | 1232 | /get-intrinsic/1.1.1: 1233 | resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} 1234 | dependencies: 1235 | function-bind: 1.1.1 1236 | has: 1.0.3 1237 | has-symbols: 1.0.3 1238 | dev: true 1239 | 1240 | /get-symbol-description/1.0.0: 1241 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1242 | engines: {node: '>= 0.4'} 1243 | dependencies: 1244 | call-bind: 1.0.2 1245 | get-intrinsic: 1.1.1 1246 | dev: true 1247 | 1248 | /glob-parent/5.1.2: 1249 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1250 | engines: {node: '>= 6'} 1251 | dependencies: 1252 | is-glob: 4.0.3 1253 | dev: true 1254 | 1255 | /glob-parent/6.0.2: 1256 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1257 | engines: {node: '>=10.13.0'} 1258 | dependencies: 1259 | is-glob: 4.0.3 1260 | dev: true 1261 | 1262 | /glob/7.1.7: 1263 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1264 | dependencies: 1265 | fs.realpath: 1.0.0 1266 | inflight: 1.0.6 1267 | inherits: 2.0.4 1268 | minimatch: 3.1.2 1269 | once: 1.4.0 1270 | path-is-absolute: 1.0.1 1271 | dev: true 1272 | 1273 | /glob/7.2.3: 1274 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1275 | dependencies: 1276 | fs.realpath: 1.0.0 1277 | inflight: 1.0.6 1278 | inherits: 2.0.4 1279 | minimatch: 3.1.2 1280 | once: 1.4.0 1281 | path-is-absolute: 1.0.1 1282 | 1283 | /globals/13.15.0: 1284 | resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==} 1285 | engines: {node: '>=8'} 1286 | dependencies: 1287 | type-fest: 0.20.2 1288 | dev: true 1289 | 1290 | /globby/11.1.0: 1291 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1292 | engines: {node: '>=10'} 1293 | dependencies: 1294 | array-union: 2.1.0 1295 | dir-glob: 3.0.1 1296 | fast-glob: 3.2.11 1297 | ignore: 5.2.0 1298 | merge2: 1.4.1 1299 | slash: 3.0.0 1300 | dev: true 1301 | 1302 | /has-bigints/1.0.2: 1303 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1304 | dev: true 1305 | 1306 | /has-flag/4.0.0: 1307 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1308 | engines: {node: '>=8'} 1309 | dev: true 1310 | 1311 | /has-property-descriptors/1.0.0: 1312 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1313 | dependencies: 1314 | get-intrinsic: 1.1.1 1315 | dev: true 1316 | 1317 | /has-symbols/1.0.3: 1318 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1319 | engines: {node: '>= 0.4'} 1320 | dev: true 1321 | 1322 | /has-tostringtag/1.0.0: 1323 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1324 | engines: {node: '>= 0.4'} 1325 | dependencies: 1326 | has-symbols: 1.0.3 1327 | dev: true 1328 | 1329 | /has/1.0.3: 1330 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1331 | engines: {node: '>= 0.4.0'} 1332 | dependencies: 1333 | function-bind: 1.1.1 1334 | dev: true 1335 | 1336 | /ignore/5.2.0: 1337 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 1338 | engines: {node: '>= 4'} 1339 | dev: true 1340 | 1341 | /import-fresh/3.3.0: 1342 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1343 | engines: {node: '>=6'} 1344 | dependencies: 1345 | parent-module: 1.0.1 1346 | resolve-from: 4.0.0 1347 | dev: true 1348 | 1349 | /imurmurhash/0.1.4: 1350 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 1351 | engines: {node: '>=0.8.19'} 1352 | dev: true 1353 | 1354 | /inflight/1.0.6: 1355 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1356 | dependencies: 1357 | once: 1.4.0 1358 | wrappy: 1.0.2 1359 | 1360 | /inherits/2.0.4: 1361 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1362 | 1363 | /internal-slot/1.0.3: 1364 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 1365 | engines: {node: '>= 0.4'} 1366 | dependencies: 1367 | get-intrinsic: 1.1.1 1368 | has: 1.0.3 1369 | side-channel: 1.0.4 1370 | dev: true 1371 | 1372 | /is-bigint/1.0.4: 1373 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1374 | dependencies: 1375 | has-bigints: 1.0.2 1376 | dev: true 1377 | 1378 | /is-binary-path/2.1.0: 1379 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1380 | engines: {node: '>=8'} 1381 | dependencies: 1382 | binary-extensions: 2.2.0 1383 | dev: true 1384 | 1385 | /is-boolean-object/1.1.2: 1386 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1387 | engines: {node: '>= 0.4'} 1388 | dependencies: 1389 | call-bind: 1.0.2 1390 | has-tostringtag: 1.0.0 1391 | dev: true 1392 | 1393 | /is-callable/1.2.4: 1394 | resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} 1395 | engines: {node: '>= 0.4'} 1396 | dev: true 1397 | 1398 | /is-core-module/2.9.0: 1399 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} 1400 | dependencies: 1401 | has: 1.0.3 1402 | dev: true 1403 | 1404 | /is-date-object/1.0.5: 1405 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1406 | engines: {node: '>= 0.4'} 1407 | dependencies: 1408 | has-tostringtag: 1.0.0 1409 | dev: true 1410 | 1411 | /is-extglob/2.1.1: 1412 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 1413 | engines: {node: '>=0.10.0'} 1414 | dev: true 1415 | 1416 | /is-glob/4.0.3: 1417 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1418 | engines: {node: '>=0.10.0'} 1419 | dependencies: 1420 | is-extglob: 2.1.1 1421 | dev: true 1422 | 1423 | /is-negative-zero/2.0.2: 1424 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1425 | engines: {node: '>= 0.4'} 1426 | dev: true 1427 | 1428 | /is-number-object/1.0.7: 1429 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1430 | engines: {node: '>= 0.4'} 1431 | dependencies: 1432 | has-tostringtag: 1.0.0 1433 | dev: true 1434 | 1435 | /is-number/7.0.0: 1436 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1437 | engines: {node: '>=0.12.0'} 1438 | dev: true 1439 | 1440 | /is-regex/1.1.4: 1441 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1442 | engines: {node: '>= 0.4'} 1443 | dependencies: 1444 | call-bind: 1.0.2 1445 | has-tostringtag: 1.0.0 1446 | dev: true 1447 | 1448 | /is-shared-array-buffer/1.0.2: 1449 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1450 | dependencies: 1451 | call-bind: 1.0.2 1452 | dev: true 1453 | 1454 | /is-string/1.0.7: 1455 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1456 | engines: {node: '>= 0.4'} 1457 | dependencies: 1458 | has-tostringtag: 1.0.0 1459 | dev: true 1460 | 1461 | /is-symbol/1.0.4: 1462 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1463 | engines: {node: '>= 0.4'} 1464 | dependencies: 1465 | has-symbols: 1.0.3 1466 | dev: true 1467 | 1468 | /is-weakref/1.0.2: 1469 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1470 | dependencies: 1471 | call-bind: 1.0.2 1472 | dev: true 1473 | 1474 | /isexe/2.0.0: 1475 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 1476 | dev: true 1477 | 1478 | /js-sha3/0.8.0: 1479 | resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} 1480 | dev: false 1481 | 1482 | /js-tokens/4.0.0: 1483 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1484 | 1485 | /js-yaml/4.1.0: 1486 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1487 | hasBin: true 1488 | dependencies: 1489 | argparse: 2.0.1 1490 | dev: true 1491 | 1492 | /json-schema-traverse/0.4.1: 1493 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1494 | dev: true 1495 | 1496 | /json-stable-stringify-without-jsonify/1.0.1: 1497 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} 1498 | dev: true 1499 | 1500 | /json5/1.0.1: 1501 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} 1502 | hasBin: true 1503 | dependencies: 1504 | minimist: 1.2.6 1505 | dev: true 1506 | 1507 | /jsx-ast-utils/3.3.0: 1508 | resolution: {integrity: sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==} 1509 | engines: {node: '>=4.0'} 1510 | dependencies: 1511 | array-includes: 3.1.5 1512 | object.assign: 4.1.2 1513 | dev: true 1514 | 1515 | /language-subtag-registry/0.3.21: 1516 | resolution: {integrity: sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==} 1517 | dev: true 1518 | 1519 | /language-tags/1.0.5: 1520 | resolution: {integrity: sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=} 1521 | dependencies: 1522 | language-subtag-registry: 0.3.21 1523 | dev: true 1524 | 1525 | /levn/0.4.1: 1526 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1527 | engines: {node: '>= 0.8.0'} 1528 | dependencies: 1529 | prelude-ls: 1.2.1 1530 | type-check: 0.4.0 1531 | dev: true 1532 | 1533 | /lilconfig/2.0.5: 1534 | resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} 1535 | engines: {node: '>=10'} 1536 | dev: true 1537 | 1538 | /locate-path/2.0.0: 1539 | resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} 1540 | engines: {node: '>=4'} 1541 | dependencies: 1542 | p-locate: 2.0.0 1543 | path-exists: 3.0.0 1544 | dev: true 1545 | 1546 | /lodash.merge/4.6.2: 1547 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1548 | dev: true 1549 | 1550 | /loose-envify/1.4.0: 1551 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1552 | hasBin: true 1553 | dependencies: 1554 | js-tokens: 4.0.0 1555 | 1556 | /lru-cache/6.0.0: 1557 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1558 | engines: {node: '>=10'} 1559 | dependencies: 1560 | yallist: 4.0.0 1561 | dev: true 1562 | 1563 | /match-sorter/6.3.1: 1564 | resolution: {integrity: sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==} 1565 | dependencies: 1566 | '@babel/runtime': 7.18.0 1567 | remove-accents: 0.4.2 1568 | dev: false 1569 | 1570 | /merge2/1.4.1: 1571 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1572 | engines: {node: '>= 8'} 1573 | dev: true 1574 | 1575 | /micromatch/4.0.5: 1576 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1577 | engines: {node: '>=8.6'} 1578 | dependencies: 1579 | braces: 3.0.2 1580 | picomatch: 2.3.1 1581 | dev: true 1582 | 1583 | /microseconds/0.2.0: 1584 | resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==} 1585 | dev: false 1586 | 1587 | /minimatch/3.1.2: 1588 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1589 | dependencies: 1590 | brace-expansion: 1.1.11 1591 | 1592 | /minimist/1.2.6: 1593 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 1594 | dev: true 1595 | 1596 | /ms/2.0.0: 1597 | resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} 1598 | dev: true 1599 | 1600 | /ms/2.1.2: 1601 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1602 | dev: true 1603 | 1604 | /ms/2.1.3: 1605 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1606 | dev: true 1607 | 1608 | /nano-time/1.0.0: 1609 | resolution: {integrity: sha1-sFVPaa2J4i0JB/ehKwmTpdlhN+8=} 1610 | dependencies: 1611 | big-integer: 1.6.51 1612 | dev: false 1613 | 1614 | /nanoid/3.3.4: 1615 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1616 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1617 | hasBin: true 1618 | 1619 | /natural-compare/1.4.0: 1620 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 1621 | dev: true 1622 | 1623 | /next/12.1.6_ef5jwxihqo6n7gxfmzogljlgcm: 1624 | resolution: {integrity: sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A==} 1625 | engines: {node: '>=12.22.0'} 1626 | hasBin: true 1627 | peerDependencies: 1628 | fibers: '>= 3.1.0' 1629 | node-sass: ^6.0.0 || ^7.0.0 1630 | react: ^17.0.2 || ^18.0.0-0 1631 | react-dom: ^17.0.2 || ^18.0.0-0 1632 | sass: ^1.3.0 1633 | peerDependenciesMeta: 1634 | fibers: 1635 | optional: true 1636 | node-sass: 1637 | optional: true 1638 | sass: 1639 | optional: true 1640 | dependencies: 1641 | '@next/env': 12.1.6 1642 | caniuse-lite: 1.0.30001342 1643 | postcss: 8.4.5 1644 | react: 18.1.0 1645 | react-dom: 18.1.0_react@18.1.0 1646 | styled-jsx: 5.0.2_react@18.1.0 1647 | optionalDependencies: 1648 | '@next/swc-android-arm-eabi': 12.1.6 1649 | '@next/swc-android-arm64': 12.1.6 1650 | '@next/swc-darwin-arm64': 12.1.6 1651 | '@next/swc-darwin-x64': 12.1.6 1652 | '@next/swc-linux-arm-gnueabihf': 12.1.6 1653 | '@next/swc-linux-arm64-gnu': 12.1.6 1654 | '@next/swc-linux-arm64-musl': 12.1.6 1655 | '@next/swc-linux-x64-gnu': 12.1.6 1656 | '@next/swc-linux-x64-musl': 12.1.6 1657 | '@next/swc-win32-arm64-msvc': 12.1.6 1658 | '@next/swc-win32-ia32-msvc': 12.1.6 1659 | '@next/swc-win32-x64-msvc': 12.1.6 1660 | transitivePeerDependencies: 1661 | - '@babel/core' 1662 | - babel-plugin-macros 1663 | dev: false 1664 | 1665 | /node-releases/2.0.5: 1666 | resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} 1667 | dev: true 1668 | 1669 | /normalize-path/3.0.0: 1670 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1671 | engines: {node: '>=0.10.0'} 1672 | dev: true 1673 | 1674 | /normalize-range/0.1.2: 1675 | resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=} 1676 | engines: {node: '>=0.10.0'} 1677 | dev: true 1678 | 1679 | /object-assign/4.1.1: 1680 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} 1681 | engines: {node: '>=0.10.0'} 1682 | dev: true 1683 | 1684 | /object-hash/3.0.0: 1685 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1686 | engines: {node: '>= 6'} 1687 | dev: true 1688 | 1689 | /object-inspect/1.12.1: 1690 | resolution: {integrity: sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==} 1691 | dev: true 1692 | 1693 | /object-keys/1.1.1: 1694 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1695 | engines: {node: '>= 0.4'} 1696 | dev: true 1697 | 1698 | /object.assign/4.1.2: 1699 | resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} 1700 | engines: {node: '>= 0.4'} 1701 | dependencies: 1702 | call-bind: 1.0.2 1703 | define-properties: 1.1.4 1704 | has-symbols: 1.0.3 1705 | object-keys: 1.1.1 1706 | dev: true 1707 | 1708 | /object.entries/1.1.5: 1709 | resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} 1710 | engines: {node: '>= 0.4'} 1711 | dependencies: 1712 | call-bind: 1.0.2 1713 | define-properties: 1.1.4 1714 | es-abstract: 1.20.1 1715 | dev: true 1716 | 1717 | /object.fromentries/2.0.5: 1718 | resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==} 1719 | engines: {node: '>= 0.4'} 1720 | dependencies: 1721 | call-bind: 1.0.2 1722 | define-properties: 1.1.4 1723 | es-abstract: 1.20.1 1724 | dev: true 1725 | 1726 | /object.hasown/1.1.1: 1727 | resolution: {integrity: sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==} 1728 | dependencies: 1729 | define-properties: 1.1.4 1730 | es-abstract: 1.20.1 1731 | dev: true 1732 | 1733 | /object.values/1.1.5: 1734 | resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} 1735 | engines: {node: '>= 0.4'} 1736 | dependencies: 1737 | call-bind: 1.0.2 1738 | define-properties: 1.1.4 1739 | es-abstract: 1.20.1 1740 | dev: true 1741 | 1742 | /oblivious-set/1.0.0: 1743 | resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==} 1744 | dev: false 1745 | 1746 | /once/1.4.0: 1747 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 1748 | dependencies: 1749 | wrappy: 1.0.2 1750 | 1751 | /optionator/0.9.1: 1752 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1753 | engines: {node: '>= 0.8.0'} 1754 | dependencies: 1755 | deep-is: 0.1.4 1756 | fast-levenshtein: 2.0.6 1757 | levn: 0.4.1 1758 | prelude-ls: 1.2.1 1759 | type-check: 0.4.0 1760 | word-wrap: 1.2.3 1761 | dev: true 1762 | 1763 | /p-limit/1.3.0: 1764 | resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} 1765 | engines: {node: '>=4'} 1766 | dependencies: 1767 | p-try: 1.0.0 1768 | dev: true 1769 | 1770 | /p-locate/2.0.0: 1771 | resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} 1772 | engines: {node: '>=4'} 1773 | dependencies: 1774 | p-limit: 1.3.0 1775 | dev: true 1776 | 1777 | /p-try/1.0.0: 1778 | resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} 1779 | engines: {node: '>=4'} 1780 | dev: true 1781 | 1782 | /parent-module/1.0.1: 1783 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1784 | engines: {node: '>=6'} 1785 | dependencies: 1786 | callsites: 3.1.0 1787 | dev: true 1788 | 1789 | /path-exists/3.0.0: 1790 | resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} 1791 | engines: {node: '>=4'} 1792 | dev: true 1793 | 1794 | /path-is-absolute/1.0.1: 1795 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 1796 | engines: {node: '>=0.10.0'} 1797 | 1798 | /path-key/3.1.1: 1799 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1800 | engines: {node: '>=8'} 1801 | dev: true 1802 | 1803 | /path-parse/1.0.7: 1804 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1805 | dev: true 1806 | 1807 | /path-type/4.0.0: 1808 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1809 | engines: {node: '>=8'} 1810 | dev: true 1811 | 1812 | /picocolors/1.0.0: 1813 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1814 | 1815 | /picomatch/2.3.1: 1816 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1817 | engines: {node: '>=8.6'} 1818 | dev: true 1819 | 1820 | /postcss-js/4.0.0_postcss@8.4.14: 1821 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} 1822 | engines: {node: ^12 || ^14 || >= 16} 1823 | peerDependencies: 1824 | postcss: ^8.3.3 1825 | dependencies: 1826 | camelcase-css: 2.0.1 1827 | postcss: 8.4.14 1828 | dev: true 1829 | 1830 | /postcss-load-config/3.1.4_postcss@8.4.14: 1831 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1832 | engines: {node: '>= 10'} 1833 | peerDependencies: 1834 | postcss: '>=8.0.9' 1835 | ts-node: '>=9.0.0' 1836 | peerDependenciesMeta: 1837 | postcss: 1838 | optional: true 1839 | ts-node: 1840 | optional: true 1841 | dependencies: 1842 | lilconfig: 2.0.5 1843 | postcss: 8.4.14 1844 | yaml: 1.10.2 1845 | dev: true 1846 | 1847 | /postcss-nested/5.0.6_postcss@8.4.14: 1848 | resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} 1849 | engines: {node: '>=12.0'} 1850 | peerDependencies: 1851 | postcss: ^8.2.14 1852 | dependencies: 1853 | postcss: 8.4.14 1854 | postcss-selector-parser: 6.0.10 1855 | dev: true 1856 | 1857 | /postcss-selector-parser/6.0.10: 1858 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} 1859 | engines: {node: '>=4'} 1860 | dependencies: 1861 | cssesc: 3.0.0 1862 | util-deprecate: 1.0.2 1863 | dev: true 1864 | 1865 | /postcss-value-parser/4.2.0: 1866 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1867 | dev: true 1868 | 1869 | /postcss/8.4.14: 1870 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 1871 | engines: {node: ^10 || ^12 || >=14} 1872 | dependencies: 1873 | nanoid: 3.3.4 1874 | picocolors: 1.0.0 1875 | source-map-js: 1.0.2 1876 | dev: true 1877 | 1878 | /postcss/8.4.5: 1879 | resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} 1880 | engines: {node: ^10 || ^12 || >=14} 1881 | dependencies: 1882 | nanoid: 3.3.4 1883 | picocolors: 1.0.0 1884 | source-map-js: 1.0.2 1885 | dev: false 1886 | 1887 | /prelude-ls/1.2.1: 1888 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1889 | engines: {node: '>= 0.8.0'} 1890 | dev: true 1891 | 1892 | /prisma/3.14.0: 1893 | resolution: {integrity: sha512-l9MOgNCn/paDE+i1K2fp9NZ+Du4trzPTJsGkaQHVBufTGqzoYHuNk8JfzXuIn0Gte6/ZjyKj652Jq/Lc1tp2yw==} 1894 | engines: {node: '>=12.6'} 1895 | hasBin: true 1896 | requiresBuild: true 1897 | dependencies: 1898 | '@prisma/engines': 3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a 1899 | dev: false 1900 | 1901 | /prop-types/15.8.1: 1902 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1903 | dependencies: 1904 | loose-envify: 1.4.0 1905 | object-assign: 4.1.1 1906 | react-is: 16.13.1 1907 | dev: true 1908 | 1909 | /punycode/2.1.1: 1910 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 1911 | engines: {node: '>=6'} 1912 | dev: true 1913 | 1914 | /queue-microtask/1.2.3: 1915 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1916 | dev: true 1917 | 1918 | /quick-lru/5.1.1: 1919 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 1920 | engines: {node: '>=10'} 1921 | dev: true 1922 | 1923 | /random-word-slugs/0.1.6: 1924 | resolution: {integrity: sha512-EVPGKyhXTdnBlMCrqBvby3nf9Jz+W/rVuP2nOi68aDZa6VJ2OXvz+VDCwl8jULBLZ1Ht8wscRA+/SogeI9NYGw==} 1925 | dev: false 1926 | 1927 | /react-dom/18.1.0_react@18.1.0: 1928 | resolution: {integrity: sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==} 1929 | peerDependencies: 1930 | react: ^18.1.0 1931 | dependencies: 1932 | loose-envify: 1.4.0 1933 | react: 18.1.0 1934 | scheduler: 0.22.0 1935 | dev: false 1936 | 1937 | /react-is/16.13.1: 1938 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1939 | dev: true 1940 | 1941 | /react-query/3.39.0_ef5jwxihqo6n7gxfmzogljlgcm: 1942 | resolution: {integrity: sha512-Od0IkSuS79WJOhzWBx/ys0x13+7wFqgnn64vBqqAAnZ9whocVhl/y1padD5uuZ6EIkXbFbInax0qvY7zGM0thA==} 1943 | peerDependencies: 1944 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1945 | react-dom: '*' 1946 | react-native: '*' 1947 | peerDependenciesMeta: 1948 | react-dom: 1949 | optional: true 1950 | react-native: 1951 | optional: true 1952 | dependencies: 1953 | '@babel/runtime': 7.18.0 1954 | broadcast-channel: 3.7.0 1955 | match-sorter: 6.3.1 1956 | react: 18.1.0 1957 | react-dom: 18.1.0_react@18.1.0 1958 | dev: false 1959 | 1960 | /react-ssr-prepass/1.5.0_react@18.1.0: 1961 | resolution: {integrity: sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==} 1962 | peerDependencies: 1963 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1964 | dependencies: 1965 | react: 18.1.0 1966 | dev: false 1967 | 1968 | /react/18.1.0: 1969 | resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==} 1970 | engines: {node: '>=0.10.0'} 1971 | dependencies: 1972 | loose-envify: 1.4.0 1973 | dev: false 1974 | 1975 | /readdirp/3.6.0: 1976 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1977 | engines: {node: '>=8.10.0'} 1978 | dependencies: 1979 | picomatch: 2.3.1 1980 | dev: true 1981 | 1982 | /regenerator-runtime/0.13.9: 1983 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 1984 | 1985 | /regexp.prototype.flags/1.4.3: 1986 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 1987 | engines: {node: '>= 0.4'} 1988 | dependencies: 1989 | call-bind: 1.0.2 1990 | define-properties: 1.1.4 1991 | functions-have-names: 1.2.3 1992 | dev: true 1993 | 1994 | /regexpp/3.2.0: 1995 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 1996 | engines: {node: '>=8'} 1997 | dev: true 1998 | 1999 | /remove-accents/0.4.2: 2000 | resolution: {integrity: sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U=} 2001 | dev: false 2002 | 2003 | /resolve-from/4.0.0: 2004 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2005 | engines: {node: '>=4'} 2006 | dev: true 2007 | 2008 | /resolve/1.22.0: 2009 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} 2010 | hasBin: true 2011 | dependencies: 2012 | is-core-module: 2.9.0 2013 | path-parse: 1.0.7 2014 | supports-preserve-symlinks-flag: 1.0.0 2015 | dev: true 2016 | 2017 | /resolve/2.0.0-next.3: 2018 | resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} 2019 | dependencies: 2020 | is-core-module: 2.9.0 2021 | path-parse: 1.0.7 2022 | dev: true 2023 | 2024 | /reusify/1.0.4: 2025 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2026 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2027 | dev: true 2028 | 2029 | /rimraf/3.0.2: 2030 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2031 | hasBin: true 2032 | dependencies: 2033 | glob: 7.2.3 2034 | 2035 | /run-parallel/1.2.0: 2036 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2037 | dependencies: 2038 | queue-microtask: 1.2.3 2039 | dev: true 2040 | 2041 | /scheduler/0.22.0: 2042 | resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==} 2043 | dependencies: 2044 | loose-envify: 1.4.0 2045 | dev: false 2046 | 2047 | /semver/6.3.0: 2048 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2049 | hasBin: true 2050 | dev: true 2051 | 2052 | /semver/7.3.7: 2053 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 2054 | engines: {node: '>=10'} 2055 | hasBin: true 2056 | dependencies: 2057 | lru-cache: 6.0.0 2058 | dev: true 2059 | 2060 | /shebang-command/2.0.0: 2061 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2062 | engines: {node: '>=8'} 2063 | dependencies: 2064 | shebang-regex: 3.0.0 2065 | dev: true 2066 | 2067 | /shebang-regex/3.0.0: 2068 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2069 | engines: {node: '>=8'} 2070 | dev: true 2071 | 2072 | /side-channel/1.0.4: 2073 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2074 | dependencies: 2075 | call-bind: 1.0.2 2076 | get-intrinsic: 1.1.1 2077 | object-inspect: 1.12.1 2078 | dev: true 2079 | 2080 | /slash/3.0.0: 2081 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2082 | engines: {node: '>=8'} 2083 | dev: true 2084 | 2085 | /source-map-js/1.0.2: 2086 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2087 | engines: {node: '>=0.10.0'} 2088 | 2089 | /string.prototype.matchall/4.0.7: 2090 | resolution: {integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==} 2091 | dependencies: 2092 | call-bind: 1.0.2 2093 | define-properties: 1.1.4 2094 | es-abstract: 1.20.1 2095 | get-intrinsic: 1.1.1 2096 | has-symbols: 1.0.3 2097 | internal-slot: 1.0.3 2098 | regexp.prototype.flags: 1.4.3 2099 | side-channel: 1.0.4 2100 | dev: true 2101 | 2102 | /string.prototype.trimend/1.0.5: 2103 | resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} 2104 | dependencies: 2105 | call-bind: 1.0.2 2106 | define-properties: 1.1.4 2107 | es-abstract: 1.20.1 2108 | dev: true 2109 | 2110 | /string.prototype.trimstart/1.0.5: 2111 | resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} 2112 | dependencies: 2113 | call-bind: 1.0.2 2114 | define-properties: 1.1.4 2115 | es-abstract: 1.20.1 2116 | dev: true 2117 | 2118 | /strip-ansi/6.0.1: 2119 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2120 | engines: {node: '>=8'} 2121 | dependencies: 2122 | ansi-regex: 5.0.1 2123 | dev: true 2124 | 2125 | /strip-bom/3.0.0: 2126 | resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} 2127 | engines: {node: '>=4'} 2128 | dev: true 2129 | 2130 | /strip-json-comments/3.1.1: 2131 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2132 | engines: {node: '>=8'} 2133 | dev: true 2134 | 2135 | /styled-jsx/5.0.2_react@18.1.0: 2136 | resolution: {integrity: sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==} 2137 | engines: {node: '>= 12.0.0'} 2138 | peerDependencies: 2139 | '@babel/core': '*' 2140 | babel-plugin-macros: '*' 2141 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 2142 | peerDependenciesMeta: 2143 | '@babel/core': 2144 | optional: true 2145 | babel-plugin-macros: 2146 | optional: true 2147 | dependencies: 2148 | react: 18.1.0 2149 | dev: false 2150 | 2151 | /supports-color/7.2.0: 2152 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2153 | engines: {node: '>=8'} 2154 | dependencies: 2155 | has-flag: 4.0.0 2156 | dev: true 2157 | 2158 | /supports-preserve-symlinks-flag/1.0.0: 2159 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2160 | engines: {node: '>= 0.4'} 2161 | dev: true 2162 | 2163 | /tailwindcss/3.0.24: 2164 | resolution: {integrity: sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==} 2165 | engines: {node: '>=12.13.0'} 2166 | hasBin: true 2167 | dependencies: 2168 | arg: 5.0.1 2169 | chokidar: 3.5.3 2170 | color-name: 1.1.4 2171 | detective: 5.2.0 2172 | didyoumean: 1.2.2 2173 | dlv: 1.1.3 2174 | fast-glob: 3.2.11 2175 | glob-parent: 6.0.2 2176 | is-glob: 4.0.3 2177 | lilconfig: 2.0.5 2178 | normalize-path: 3.0.0 2179 | object-hash: 3.0.0 2180 | picocolors: 1.0.0 2181 | postcss: 8.4.14 2182 | postcss-js: 4.0.0_postcss@8.4.14 2183 | postcss-load-config: 3.1.4_postcss@8.4.14 2184 | postcss-nested: 5.0.6_postcss@8.4.14 2185 | postcss-selector-parser: 6.0.10 2186 | postcss-value-parser: 4.2.0 2187 | quick-lru: 5.1.1 2188 | resolve: 1.22.0 2189 | transitivePeerDependencies: 2190 | - ts-node 2191 | dev: true 2192 | 2193 | /text-table/0.2.0: 2194 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} 2195 | dev: true 2196 | 2197 | /to-regex-range/5.0.1: 2198 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2199 | engines: {node: '>=8.0'} 2200 | dependencies: 2201 | is-number: 7.0.0 2202 | dev: true 2203 | 2204 | /toggle-selection/1.0.6: 2205 | resolution: {integrity: sha1-bkWxJj8gF/oKzH2J14sVuL932jI=} 2206 | dev: false 2207 | 2208 | /tsconfig-paths/3.14.1: 2209 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} 2210 | dependencies: 2211 | '@types/json5': 0.0.29 2212 | json5: 1.0.1 2213 | minimist: 1.2.6 2214 | strip-bom: 3.0.0 2215 | dev: true 2216 | 2217 | /tslib/1.14.1: 2218 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2219 | dev: true 2220 | 2221 | /tsutils/3.21.0_typescript@4.6.4: 2222 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2223 | engines: {node: '>= 6'} 2224 | peerDependencies: 2225 | 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' 2226 | dependencies: 2227 | tslib: 1.14.1 2228 | typescript: 4.6.4 2229 | dev: true 2230 | 2231 | /type-check/0.4.0: 2232 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2233 | engines: {node: '>= 0.8.0'} 2234 | dependencies: 2235 | prelude-ls: 1.2.1 2236 | dev: true 2237 | 2238 | /type-fest/0.20.2: 2239 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2240 | engines: {node: '>=10'} 2241 | dev: true 2242 | 2243 | /typescript/4.6.4: 2244 | resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} 2245 | engines: {node: '>=4.2.0'} 2246 | hasBin: true 2247 | dev: true 2248 | 2249 | /unbox-primitive/1.0.2: 2250 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2251 | dependencies: 2252 | call-bind: 1.0.2 2253 | has-bigints: 1.0.2 2254 | has-symbols: 1.0.3 2255 | which-boxed-primitive: 1.0.2 2256 | dev: true 2257 | 2258 | /unload/2.2.0: 2259 | resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} 2260 | dependencies: 2261 | '@babel/runtime': 7.18.0 2262 | detect-node: 2.1.0 2263 | dev: false 2264 | 2265 | /uri-js/4.4.1: 2266 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2267 | dependencies: 2268 | punycode: 2.1.1 2269 | dev: true 2270 | 2271 | /util-deprecate/1.0.2: 2272 | resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} 2273 | dev: true 2274 | 2275 | /v8-compile-cache/2.3.0: 2276 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 2277 | dev: true 2278 | 2279 | /which-boxed-primitive/1.0.2: 2280 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2281 | dependencies: 2282 | is-bigint: 1.0.4 2283 | is-boolean-object: 1.1.2 2284 | is-number-object: 1.0.7 2285 | is-string: 1.0.7 2286 | is-symbol: 1.0.4 2287 | dev: true 2288 | 2289 | /which/2.0.2: 2290 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2291 | engines: {node: '>= 8'} 2292 | hasBin: true 2293 | dependencies: 2294 | isexe: 2.0.0 2295 | dev: true 2296 | 2297 | /word-wrap/1.2.3: 2298 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2299 | engines: {node: '>=0.10.0'} 2300 | dev: true 2301 | 2302 | /wrappy/1.0.2: 2303 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 2304 | 2305 | /xtend/4.0.2: 2306 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 2307 | engines: {node: '>=0.4'} 2308 | dev: true 2309 | 2310 | /yallist/4.0.0: 2311 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2312 | dev: true 2313 | 2314 | /yaml/1.10.2: 2315 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 2316 | engines: {node: '>= 6'} 2317 | dev: true 2318 | 2319 | /zod/3.17.3: 2320 | resolution: {integrity: sha512-4oKP5zvG6GGbMlqBkI5FESOAweldEhSOZ6LI6cG+JzUT7ofj1ZOC0PJudpQOpT1iqOFpYYtX5Pw0+o403y4bcg==} 2321 | dev: false 2322 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /prisma/schema.prisma: -------------------------------------------------------------------------------- 1 | generator client { 2 | provider = "prisma-client-js" 3 | previewFeatures = ["referentialIntegrity"] 4 | } 5 | 6 | datasource db { 7 | provider = "mysql" 8 | url = env("DATABASE_URL") 9 | referentialIntegrity = "prisma" 10 | } 11 | 12 | model ShortLink { 13 | id Int @id @default(autoincrement()) 14 | createdAt DateTime @default(now()) 15 | url String @db.VarChar(3000) 16 | slug String @unique 17 | 18 | @@index([slug]) 19 | } 20 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nexxeln/deoxys/0b1f5cdccf28bbbe9d7729949e17d73c6546f0d3/public/favicon.ico -------------------------------------------------------------------------------- /src/components/CreateLink.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import { generateSlug } from "random-word-slugs"; 3 | import { debounce } from "debounce"; 4 | import copy from "copy-to-clipboard"; 5 | 6 | import { trpc } from "../utils/trpc"; 7 | 8 | type Form = { 9 | slug: string; 10 | url: string; 11 | }; 12 | 13 | const CreateLink = () => { 14 | const [form, setForm] = useState
({ slug: "", url: "" }); 15 | const url = location.origin; 16 | 17 | const checkSlug = trpc.useQuery(["checkSlug", { slug: form.slug }], { 18 | refetchOnReconnect: false, 19 | refetchOnMount: false, 20 | refetchOnWindowFocus: false, 21 | }); 22 | 23 | const createShortLink = trpc.useMutation(["createShortLink"]); 24 | 25 | if (createShortLink.status === "success") { 26 | return ( 27 |
28 | Here's your link! 29 | 30 |
31 |

{`${url}/${form.slug}`}

32 | 40 |
41 | 42 | 51 |
52 | ); 53 | } 54 | 55 | return ( 56 | ) => { 58 | event.preventDefault(); 59 | createShortLink.mutate({ ...form }); 60 | }} 61 | className="mt-6" 62 | > 63 | {checkSlug.data?.used ? ( 64 | 65 | This link has already been used 66 | 67 | ) : ( 68 | 69 | {url}/{form.slug} 70 | 71 | )} 72 | 73 |
74 | 75 |
76 | { 79 | setForm({ 80 | ...form, 81 | slug: e.target.value.toLowerCase(), 82 | }); 83 | 84 | debounce(checkSlug.refetch, 100); 85 | }} 86 | minLength={1} 87 | maxLength={50} 88 | placeholder="cat-in-hat" 89 | className={`w-full px-4 py-2 rounded-md focus:outline-none border-2 placeholder:text-gray-400 ${ 90 | checkSlug.data?.used 91 | ? "border-red-500 border-opacity-75" 92 | : "border-gray-200" 93 | } font-normal bg-black`} 94 | value={form.slug} 95 | pattern={"^[-a-zA-Z0-9]+$"} 96 | title="Only alphanumeric characters and hyphens are allowed. No spaces." 97 | required 98 | /> 99 | { 104 | const slug = generateSlug(); 105 | 106 | setForm({ 107 | ...form, 108 | slug, 109 | }); 110 | 111 | checkSlug.refetch(); 112 | }} 113 | /> 114 |
115 |
116 | Link 117 | setForm({ ...form, url: e.target.value })} 122 | placeholder="https://duckduckgo.com" 123 | className="block w-full px-4 py-2 font-normal bg-black border-2 border-gray-200 rounded-md focus:outline-none placeholder:text-gray-400" 124 | required 125 | /> 126 |
127 | 135 | 136 | ); 137 | }; 138 | 139 | export default CreateLink; 140 | -------------------------------------------------------------------------------- /src/db/client.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | 3 | declare global { 4 | // allow global `var` declarations 5 | // eslint-disable-next-line no-var 6 | var prisma: PrismaClient | undefined; 7 | } 8 | 9 | export const prisma = 10 | global.prisma || 11 | new PrismaClient({ 12 | log: ["query"], 13 | }); 14 | 15 | if (process.env.NODE_ENV !== "production") global.prisma = prisma; 16 | -------------------------------------------------------------------------------- /src/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import { withTRPC } from "@trpc/next"; 2 | import { AppType } from "next/dist/shared/lib/utils"; 3 | import { AppRouter } from "./api/trpc/[trpc]"; 4 | import "../styles/globals.css"; 5 | 6 | const MyApp: AppType = ({ Component, pageProps }) => { 7 | return ; 8 | }; 9 | 10 | function getBaseUrl() { 11 | if (process.browser) return ""; // Browser should use current path 12 | if (process.env.VERCEL_URL) return `https://${process.env.VERCEL_URL}`; // SSR should use vercel url 13 | 14 | return `http://localhost:${process.env.PORT ?? 3000}`; // dev SSR should use localhost 15 | } 16 | 17 | export default withTRPC({ 18 | config() { 19 | const url = `${getBaseUrl()}/api/trpc`; 20 | 21 | return { 22 | url, 23 | }; 24 | }, 25 | ssr: false, 26 | })(MyApp); 27 | -------------------------------------------------------------------------------- /src/pages/_middleware.ts: -------------------------------------------------------------------------------- 1 | import { NextFetchEvent, NextRequest, NextResponse } from "next/server"; 2 | 3 | export async function middleware(req: NextRequest, event: NextFetchEvent) { 4 | if ( 5 | req.nextUrl.pathname.startsWith("/api/") || 6 | req.nextUrl.pathname === "/" 7 | ) { 8 | return; 9 | } 10 | const slug = req.nextUrl.pathname.split("/").pop(); 11 | 12 | const fetchSlug = await fetch(`${req.nextUrl.origin}/api/get-link/${slug}`); 13 | 14 | if (fetchSlug.status === 404) { 15 | return NextResponse.redirect(req.nextUrl.origin); 16 | } 17 | 18 | const data = await fetchSlug.json(); 19 | 20 | if (data?.url) { 21 | return NextResponse.redirect(data.url); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/pages/api/get-link/[slug].ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from "next"; 2 | 3 | import { prisma } from "../../../db/client"; 4 | 5 | export default async (req: NextApiRequest, res: NextApiResponse) => { 6 | const slug = req.query["slug"]; 7 | 8 | if (!slug || typeof slug !== "string") { 9 | res.status(404).json({ message: "please provide a slug" }); 10 | 11 | return; 12 | } 13 | 14 | const data = await prisma.shortLink.findFirst({ 15 | where: { 16 | slug: { 17 | equals: slug, 18 | }, 19 | }, 20 | }); 21 | 22 | if (!data) { 23 | res.status(404).json({ message: "short link not found" }); 24 | 25 | return; 26 | } 27 | 28 | res.setHeader("Content-Type", "application/json"); 29 | res.setHeader("Access-Control-Allow-Origin", "*"); 30 | res.setHeader("Cache-Control", "s-maxage=1000000000, stale-while-revalidate"); 31 | 32 | res.json(data); 33 | 34 | return; 35 | }; 36 | -------------------------------------------------------------------------------- /src/pages/api/trpc/[trpc].ts: -------------------------------------------------------------------------------- 1 | import * as trpc from "@trpc/server"; 2 | import * as trpcNext from "@trpc/server/adapters/next"; 3 | import { z } from "zod"; 4 | 5 | import { prisma } from "../../../db/client"; 6 | 7 | export const appRouter = trpc 8 | .router() 9 | .query("checkSlug", { 10 | input: z.object({ slug: z.string() }), 11 | async resolve({ input }) { 12 | const slugCount = await prisma.shortLink.count({ 13 | where: { 14 | slug: { 15 | equals: input.slug, 16 | }, 17 | }, 18 | }); 19 | 20 | return { used: slugCount > 0 }; 21 | }, 22 | }) 23 | .mutation("createShortLink", { 24 | input: z.object({ slug: z.string(), url: z.string() }), 25 | async resolve({ input }) { 26 | try { 27 | await prisma.shortLink.create({ 28 | data: { 29 | slug: input.slug, 30 | url: input.url, 31 | }, 32 | }); 33 | } catch (error) { 34 | console.log(error); 35 | } 36 | }, 37 | }); 38 | 39 | export type AppRouter = typeof appRouter; 40 | 41 | export default trpcNext.createNextApiHandler({ 42 | router: appRouter, 43 | createContext: () => null, 44 | }); 45 | -------------------------------------------------------------------------------- /src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import type { NextPage } from "next"; 2 | import dynamic from "next/dynamic"; 3 | import Head from "next/head"; 4 | import { Suspense } from "react"; 5 | 6 | const CreateLink = dynamic(() => import("../components/CreateLink"), { 7 | ssr: false, 8 | }); 9 | 10 | const Home: NextPage = () => { 11 | return ( 12 | <> 13 | 14 | Deoxys 15 | 16 | 17 | 18 |
19 |
20 | 21 |

22 | deoxys 23 |

24 |

a fast link shortener

25 | 26 |
27 |
28 |
29 | 30 | ); 31 | }; 32 | 33 | export default Home; 34 | -------------------------------------------------------------------------------- /src/styles/globals.css: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&display=swap"); 2 | 3 | @tailwind base; 4 | @tailwind components; 5 | @tailwind utilities; 6 | 7 | html, 8 | body { 9 | @apply font-manrope; 10 | } 11 | -------------------------------------------------------------------------------- /src/utils/trpc.ts: -------------------------------------------------------------------------------- 1 | import type { AppRouter } from "../pages/api/trpc/[trpc]"; 2 | import { createReactQueryHooks } from "@trpc/react"; 3 | 4 | export const trpc = createReactQueryHooks(); 5 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: ["./src/**/*.{ts,tsx}"], 3 | theme: { 4 | extend: { 5 | fontFamily: { 6 | manrope: ["Manrope", "sans-serif"], 7 | }, 8 | }, 9 | }, 10 | plugins: [], 11 | }; 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true, 17 | "noUncheckedIndexedAccess": true 18 | }, 19 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], 20 | "exclude": ["node_modules"] 21 | } 22 | --------------------------------------------------------------------------------