├── .github └── workflows │ └── build.yml ├── .gitignore ├── .husky └── pre-commit ├── LICENSE ├── README.md ├── lint-staged.config.cjs ├── options.html ├── package.json ├── pnpm-lock.yaml ├── postcss.config.cjs ├── public ├── cover.png ├── icon.png ├── icon128.png ├── icon16.png ├── icon32.png ├── icon48.png └── manifest.json ├── sidePanel.html ├── src ├── background.ts ├── content-script.ts ├── deploy.ts ├── options.css ├── options.tsx ├── sidePanel.css └── sidePanel.tsx ├── tailwind.config.js ├── tsconfig.json └── vite.config.ts /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - name: Checkout Repo 17 | uses: actions/checkout@v4 18 | 19 | - name: Install pnpm 20 | uses: pnpm/action-setup@v2 21 | 22 | - name: Set node 23 | uses: actions/setup-node@v3 24 | with: 25 | node-version: lts/* 26 | 27 | - name: Setup 28 | run: npm i -g @antfu/ni 29 | 30 | - name: Install 31 | run: nci 32 | 33 | - name: Lint 34 | run: nr style 35 | 36 | - name: Build 37 | run: nr build 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | npm-debug.log 2 | node_modules/ 3 | dist/ 4 | tmp/ 5 | .DS_Store 6 | dist.zip 7 | .env.local -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Yuhang 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 | # Artifacts for ChatGPT 2 | 3 | Instantly preview and deploy artifacts crafted by ChatGPT. 4 | 5 | [![Watch the video](https://img.youtube.com/vi/DbcAerEBaQQ/maxresdefault.jpg)](https://youtu.be/DbcAerEBaQQ) 6 | 7 | Get the extension in Chrome web store: https://chromewebstore.google.com/detail/artifacts-for-chatgpt/mmedfkcijabkebmohholddkhmilonida 8 | 9 | ## How it works 10 | 11 | - Bootstrapped from [Chrome Extension Starter](https://github.com/MichaelYuhe/chrome-extension-starter) 12 | - Inspired by [Claude Artifacts](https://www.anthropic.com/news/claude-3-5-sonnet). 13 | - Get artifacts from ChatGPT through DOM monitoring. 14 | - Preview the artifacts in the extension sidepanel(HTML only for now). 15 | - Deploy the HTML file to [Zeabur](https://zeabur.com) with a random domain. 16 | 17 | ## Roadmap 18 | 19 | [ ] Support React and other web frameworks. 20 | 21 | [ ] Allow deploy with custom domains. 22 | 23 | [x] Publish to Chrome Web Store 24 | 25 | [ ] Support for other browsers 26 | 27 | ## Sponsor 28 | 29 | > This extension is free forever, if you love this extension, you can buy me a coffee here :D 30 | 31 | Buy Me A Coffee 32 | -------------------------------------------------------------------------------- /lint-staged.config.cjs: -------------------------------------------------------------------------------- 1 | /** 2 | * https://github.com/vercel/next.js/blob/canary/lint-staged.config.js 3 | */ 4 | 5 | const { quote } = require("shell-quote"); 6 | 7 | const isWin = process.platform === "win32"; 8 | 9 | module.exports = { 10 | "**/*.{js,jsx,cjs,mjs,ts,tsx,mts,cts,md,json}": (filenames) => { 11 | const escapedFileNames = filenames 12 | .map((filename) => `"${isWin ? filename : escape([filename])}"`) 13 | .join(" "); 14 | return [ 15 | `prettier --write ${escapedFileNames}`, 16 | `git add ${escapedFileNames}`, 17 | ]; 18 | }, 19 | }; 20 | 21 | function escape(str) { 22 | const escaped = quote(str); 23 | return escaped.replace(/\\@/g, "@"); 24 | } 25 | -------------------------------------------------------------------------------- /options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Options 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chrome-extension-starter", 3 | "private": true, 4 | "type": "module", 5 | "packageManager": "pnpm@9.1.3", 6 | "scripts": { 7 | "prepare": "husky install", 8 | "dev": "vite build --watch", 9 | "build": "vite build", 10 | "style": "prettier --check \"src/**/*.{ts,tsx}\"", 11 | "style:fix": "prettier --write \"src/**/*.{ts,tsx}\"" 12 | }, 13 | "author": "MichaelYuhe", 14 | "license": "MIT", 15 | "dependencies": { 16 | "@zeabur/zeabur-js": "0.0.1-alpha2", 17 | "jszip": "^3.10.1", 18 | "react": "^18.2.0", 19 | "react-dom": "^18.2.0", 20 | "react-syntax-highlighter": "^15.5.0" 21 | }, 22 | "prettier": { 23 | "tabWidth": 2 24 | }, 25 | "devDependencies": { 26 | "@tailwindcss/forms": "^0.5.7", 27 | "@types/chrome": "0.0.158", 28 | "@types/node": "^20.10.4", 29 | "@types/react": "^18.0.29", 30 | "@types/react-dom": "^18.0.11", 31 | "@types/react-syntax-highlighter": "^15.5.13", 32 | "@vitejs/plugin-react-swc": "^3.5.0", 33 | "autoprefixer": "^10.4.16", 34 | "husky": "^8.0.3", 35 | "lint-staged": "^15.2.0", 36 | "postcss": "^8.4.32", 37 | "prettier": "^2.2.1", 38 | "shell-quote": "^1.8.1", 39 | "tailwindcss": "^3.3.6", 40 | "typescript": "^5.0.4", 41 | "vite": "^5.0.7" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@zeabur/zeabur-js': 12 | specifier: 0.0.1-alpha2 13 | version: 0.0.1-alpha2 14 | jszip: 15 | specifier: ^3.10.1 16 | version: 3.10.1 17 | react: 18 | specifier: ^18.2.0 19 | version: 18.2.0 20 | react-dom: 21 | specifier: ^18.2.0 22 | version: 18.2.0(react@18.2.0) 23 | react-syntax-highlighter: 24 | specifier: ^15.5.0 25 | version: 15.5.0(react@18.2.0) 26 | devDependencies: 27 | '@tailwindcss/forms': 28 | specifier: ^0.5.7 29 | version: 0.5.7(tailwindcss@3.3.6) 30 | '@types/chrome': 31 | specifier: 0.0.158 32 | version: 0.0.158 33 | '@types/node': 34 | specifier: ^20.10.4 35 | version: 20.10.4 36 | '@types/react': 37 | specifier: ^18.0.29 38 | version: 18.0.29 39 | '@types/react-dom': 40 | specifier: ^18.0.11 41 | version: 18.0.11 42 | '@types/react-syntax-highlighter': 43 | specifier: ^15.5.13 44 | version: 15.5.13 45 | '@vitejs/plugin-react-swc': 46 | specifier: ^3.5.0 47 | version: 3.5.0(vite@5.0.7(@types/node@20.10.4)) 48 | autoprefixer: 49 | specifier: ^10.4.16 50 | version: 10.4.16(postcss@8.4.32) 51 | husky: 52 | specifier: ^8.0.3 53 | version: 8.0.3 54 | lint-staged: 55 | specifier: ^15.2.0 56 | version: 15.2.0 57 | postcss: 58 | specifier: ^8.4.32 59 | version: 8.4.32 60 | prettier: 61 | specifier: ^2.2.1 62 | version: 2.2.1 63 | shell-quote: 64 | specifier: ^1.8.1 65 | version: 1.8.1 66 | tailwindcss: 67 | specifier: ^3.3.6 68 | version: 3.3.6 69 | typescript: 70 | specifier: ^5.0.4 71 | version: 5.0.4 72 | vite: 73 | specifier: ^5.0.7 74 | version: 5.0.7(@types/node@20.10.4) 75 | 76 | packages: 77 | 78 | '@alloc/quick-lru@5.2.0': 79 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 80 | engines: {node: '>=10'} 81 | 82 | '@babel/runtime@7.24.7': 83 | resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} 84 | engines: {node: '>=6.9.0'} 85 | 86 | '@esbuild/android-arm64@0.19.8': 87 | resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} 88 | engines: {node: '>=12'} 89 | cpu: [arm64] 90 | os: [android] 91 | 92 | '@esbuild/android-arm@0.19.8': 93 | resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} 94 | engines: {node: '>=12'} 95 | cpu: [arm] 96 | os: [android] 97 | 98 | '@esbuild/android-x64@0.19.8': 99 | resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} 100 | engines: {node: '>=12'} 101 | cpu: [x64] 102 | os: [android] 103 | 104 | '@esbuild/darwin-arm64@0.19.8': 105 | resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} 106 | engines: {node: '>=12'} 107 | cpu: [arm64] 108 | os: [darwin] 109 | 110 | '@esbuild/darwin-x64@0.19.8': 111 | resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} 112 | engines: {node: '>=12'} 113 | cpu: [x64] 114 | os: [darwin] 115 | 116 | '@esbuild/freebsd-arm64@0.19.8': 117 | resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} 118 | engines: {node: '>=12'} 119 | cpu: [arm64] 120 | os: [freebsd] 121 | 122 | '@esbuild/freebsd-x64@0.19.8': 123 | resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} 124 | engines: {node: '>=12'} 125 | cpu: [x64] 126 | os: [freebsd] 127 | 128 | '@esbuild/linux-arm64@0.19.8': 129 | resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} 130 | engines: {node: '>=12'} 131 | cpu: [arm64] 132 | os: [linux] 133 | 134 | '@esbuild/linux-arm@0.19.8': 135 | resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} 136 | engines: {node: '>=12'} 137 | cpu: [arm] 138 | os: [linux] 139 | 140 | '@esbuild/linux-ia32@0.19.8': 141 | resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} 142 | engines: {node: '>=12'} 143 | cpu: [ia32] 144 | os: [linux] 145 | 146 | '@esbuild/linux-loong64@0.19.8': 147 | resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} 148 | engines: {node: '>=12'} 149 | cpu: [loong64] 150 | os: [linux] 151 | 152 | '@esbuild/linux-mips64el@0.19.8': 153 | resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} 154 | engines: {node: '>=12'} 155 | cpu: [mips64el] 156 | os: [linux] 157 | 158 | '@esbuild/linux-ppc64@0.19.8': 159 | resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} 160 | engines: {node: '>=12'} 161 | cpu: [ppc64] 162 | os: [linux] 163 | 164 | '@esbuild/linux-riscv64@0.19.8': 165 | resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} 166 | engines: {node: '>=12'} 167 | cpu: [riscv64] 168 | os: [linux] 169 | 170 | '@esbuild/linux-s390x@0.19.8': 171 | resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} 172 | engines: {node: '>=12'} 173 | cpu: [s390x] 174 | os: [linux] 175 | 176 | '@esbuild/linux-x64@0.19.8': 177 | resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} 178 | engines: {node: '>=12'} 179 | cpu: [x64] 180 | os: [linux] 181 | 182 | '@esbuild/netbsd-x64@0.19.8': 183 | resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} 184 | engines: {node: '>=12'} 185 | cpu: [x64] 186 | os: [netbsd] 187 | 188 | '@esbuild/openbsd-x64@0.19.8': 189 | resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} 190 | engines: {node: '>=12'} 191 | cpu: [x64] 192 | os: [openbsd] 193 | 194 | '@esbuild/sunos-x64@0.19.8': 195 | resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} 196 | engines: {node: '>=12'} 197 | cpu: [x64] 198 | os: [sunos] 199 | 200 | '@esbuild/win32-arm64@0.19.8': 201 | resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} 202 | engines: {node: '>=12'} 203 | cpu: [arm64] 204 | os: [win32] 205 | 206 | '@esbuild/win32-ia32@0.19.8': 207 | resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} 208 | engines: {node: '>=12'} 209 | cpu: [ia32] 210 | os: [win32] 211 | 212 | '@esbuild/win32-x64@0.19.8': 213 | resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} 214 | engines: {node: '>=12'} 215 | cpu: [x64] 216 | os: [win32] 217 | 218 | '@jridgewell/gen-mapping@0.3.3': 219 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 220 | engines: {node: '>=6.0.0'} 221 | 222 | '@jridgewell/resolve-uri@3.1.1': 223 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 224 | engines: {node: '>=6.0.0'} 225 | 226 | '@jridgewell/set-array@1.1.2': 227 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 228 | engines: {node: '>=6.0.0'} 229 | 230 | '@jridgewell/sourcemap-codec@1.4.15': 231 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 232 | 233 | '@jridgewell/trace-mapping@0.3.20': 234 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} 235 | 236 | '@nodelib/fs.scandir@2.1.5': 237 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 238 | engines: {node: '>= 8'} 239 | 240 | '@nodelib/fs.stat@2.0.5': 241 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 242 | engines: {node: '>= 8'} 243 | 244 | '@nodelib/fs.walk@1.2.8': 245 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 246 | engines: {node: '>= 8'} 247 | 248 | '@rollup/rollup-android-arm-eabi@4.7.0': 249 | resolution: {integrity: sha512-rGku10pL1StFlFvXX5pEv88KdGW6DHUghsxyP/aRYb9eH+74jTGJ3U0S/rtlsQ4yYq1Hcc7AMkoJOb1xu29Fxw==} 250 | cpu: [arm] 251 | os: [android] 252 | 253 | '@rollup/rollup-android-arm64@4.7.0': 254 | resolution: {integrity: sha512-/EBw0cuJ/KVHiU2qyVYUhogXz7W2vXxBzeE9xtVIMC+RyitlY2vvaoysMUqASpkUtoNIHlnKTu/l7mXOPgnKOA==} 255 | cpu: [arm64] 256 | os: [android] 257 | 258 | '@rollup/rollup-darwin-arm64@4.7.0': 259 | resolution: {integrity: sha512-4VXG1bgvClJdbEYYjQ85RkOtwN8sqI3uCxH0HC5w9fKdqzRzgG39K7GAehATGS8jghA7zNoS5CjSKkDEqWmNZg==} 260 | cpu: [arm64] 261 | os: [darwin] 262 | 263 | '@rollup/rollup-darwin-x64@4.7.0': 264 | resolution: {integrity: sha512-/ImhO+T/RWJ96hUbxiCn2yWI0/MeQZV/aeukQQfhxiSXuZJfyqtdHPUPrc84jxCfXTxbJLmg4q+GBETeb61aNw==} 265 | cpu: [x64] 266 | os: [darwin] 267 | 268 | '@rollup/rollup-linux-arm-gnueabihf@4.7.0': 269 | resolution: {integrity: sha512-zhye8POvTyUXlKbfPBVqoHy3t43gIgffY+7qBFqFxNqVtltQLtWeHNAbrMnXiLIfYmxcoL/feuLDote2tx+Qbg==} 270 | cpu: [arm] 271 | os: [linux] 272 | 273 | '@rollup/rollup-linux-arm64-gnu@4.7.0': 274 | resolution: {integrity: sha512-RAdr3OJnUum6Vs83cQmKjxdTg31zJnLLTkjhcFt0auxM6jw00GD6IPFF42uasYPr/wGC6TRm7FsQiJyk0qIEfg==} 275 | cpu: [arm64] 276 | os: [linux] 277 | 278 | '@rollup/rollup-linux-arm64-musl@4.7.0': 279 | resolution: {integrity: sha512-nhWwYsiJwZGq7SyR3afS3EekEOsEAlrNMpPC4ZDKn5ooYSEjDLe9W/xGvoIV8/F/+HNIY6jY8lIdXjjxfxopXw==} 280 | cpu: [arm64] 281 | os: [linux] 282 | 283 | '@rollup/rollup-linux-riscv64-gnu@4.7.0': 284 | resolution: {integrity: sha512-rlfy5RnQG1aop1BL/gjdH42M2geMUyVQqd52GJVirqYc787A/XVvl3kQ5NG/43KXgOgE9HXgCaEH05kzQ+hLoA==} 285 | cpu: [riscv64] 286 | os: [linux] 287 | 288 | '@rollup/rollup-linux-x64-gnu@4.7.0': 289 | resolution: {integrity: sha512-cCkoGlGWfBobdDtiiypxf79q6k3/iRVGu1HVLbD92gWV5WZbmuWJCgRM4x2N6i7ljGn1cGytPn9ZAfS8UwF6vg==} 290 | cpu: [x64] 291 | os: [linux] 292 | 293 | '@rollup/rollup-linux-x64-musl@4.7.0': 294 | resolution: {integrity: sha512-R2oBf2p/Arc1m+tWmiWbpHBjEcJnHVnv6bsypu4tcKdrYTpDfl1UT9qTyfkIL1iiii5D4WHxUHCg5X0pzqmxFg==} 295 | cpu: [x64] 296 | os: [linux] 297 | 298 | '@rollup/rollup-win32-arm64-msvc@4.7.0': 299 | resolution: {integrity: sha512-CPtgaQL1aaPc80m8SCVEoxFGHxKYIt3zQYC3AccL/SqqiWXblo3pgToHuBwR8eCP2Toa+X1WmTR/QKFMykws7g==} 300 | cpu: [arm64] 301 | os: [win32] 302 | 303 | '@rollup/rollup-win32-ia32-msvc@4.7.0': 304 | resolution: {integrity: sha512-pmioUlttNh9GXF5x2CzNa7Z8kmRTyhEzzAC+2WOOapjewMbl+3tGuAnxbwc5JyG8Jsz2+hf/QD/n5VjimOZ63g==} 305 | cpu: [ia32] 306 | os: [win32] 307 | 308 | '@rollup/rollup-win32-x64-msvc@4.7.0': 309 | resolution: {integrity: sha512-SeZzC2QhhdBQUm3U0c8+c/P6UlRyBcLL2Xp5KX7z46WXZxzR8RJSIWL9wSUeBTgxog5LTPJuPj0WOT9lvrtP7Q==} 310 | cpu: [x64] 311 | os: [win32] 312 | 313 | '@swc/core-darwin-arm64@1.3.100': 314 | resolution: {integrity: sha512-XVWFsKe6ei+SsDbwmsuRkYck1SXRpO60Hioa4hoLwR8fxbA9eVp6enZtMxzVVMBi8ej5seZ4HZQeAWepbukiBw==} 315 | engines: {node: '>=10'} 316 | cpu: [arm64] 317 | os: [darwin] 318 | 319 | '@swc/core-darwin-x64@1.3.100': 320 | resolution: {integrity: sha512-KF/MXrnH1nakm1wbt4XV8FS7kvqD9TGmVxeJ0U4bbvxXMvzeYUurzg3AJUTXYmXDhH/VXOYJE5N5RkwZZPs5iA==} 321 | engines: {node: '>=10'} 322 | cpu: [x64] 323 | os: [darwin] 324 | 325 | '@swc/core-linux-arm64-gnu@1.3.100': 326 | resolution: {integrity: sha512-p8hikNnAEJrw5vHCtKiFT4hdlQxk1V7vqPmvUDgL/qe2menQDK/i12tbz7/3BEQ4UqUPnvwpmVn2d19RdEMNxw==} 327 | engines: {node: '>=10'} 328 | cpu: [arm64] 329 | os: [linux] 330 | 331 | '@swc/core-linux-arm64-musl@1.3.100': 332 | resolution: {integrity: sha512-BWx/0EeY89WC4q3AaIaBSGfQxkYxIlS3mX19dwy2FWJs/O+fMvF9oLk/CyJPOZzbp+1DjGeeoGFuDYpiNO91JA==} 333 | engines: {node: '>=10'} 334 | cpu: [arm64] 335 | os: [linux] 336 | 337 | '@swc/core-linux-x64-gnu@1.3.100': 338 | resolution: {integrity: sha512-XUdGu3dxAkjsahLYnm8WijPfKebo+jHgHphDxaW0ovI6sTdmEGFDew7QzKZRlbYL2jRkUuuKuDGvD6lO5frmhA==} 339 | engines: {node: '>=10'} 340 | cpu: [x64] 341 | os: [linux] 342 | 343 | '@swc/core-linux-x64-musl@1.3.100': 344 | resolution: {integrity: sha512-PhoXKf+f0OaNW/GCuXjJ0/KfK9EJX7z2gko+7nVnEA0p3aaPtbP6cq1Ubbl6CMoPL+Ci3gZ7nYumDqXNc3CtLQ==} 345 | engines: {node: '>=10'} 346 | cpu: [x64] 347 | os: [linux] 348 | 349 | '@swc/core-win32-arm64-msvc@1.3.100': 350 | resolution: {integrity: sha512-PwLADZN6F9cXn4Jw52FeP/MCLVHm8vwouZZSOoOScDtihjY495SSjdPnlosMaRSR4wJQssGwiD/4MbpgQPqbAw==} 351 | engines: {node: '>=10'} 352 | cpu: [arm64] 353 | os: [win32] 354 | 355 | '@swc/core-win32-ia32-msvc@1.3.100': 356 | resolution: {integrity: sha512-0f6nicKSLlDKlyPRl2JEmkpBV4aeDfRQg6n8mPqgL7bliZIcDahG0ej+HxgNjZfS3e0yjDxsNRa6sAqWU2Z60A==} 357 | engines: {node: '>=10'} 358 | cpu: [ia32] 359 | os: [win32] 360 | 361 | '@swc/core-win32-x64-msvc@1.3.100': 362 | resolution: {integrity: sha512-b7J0rPoMkRTa3XyUGt8PwCaIBuYWsL2DqbirrQKRESzgCvif5iNpqaM6kjIjI/5y5q1Ycv564CB51YDpiS8EtQ==} 363 | engines: {node: '>=10'} 364 | cpu: [x64] 365 | os: [win32] 366 | 367 | '@swc/core@1.3.100': 368 | resolution: {integrity: sha512-7dKgTyxJjlrMwFZYb1auj3Xq0D8ZBe+5oeIgfMlRU05doXZypYJe0LAk0yjj3WdbwYzpF+T1PLxwTWizI0pckw==} 369 | engines: {node: '>=10'} 370 | peerDependencies: 371 | '@swc/helpers': ^0.5.0 372 | peerDependenciesMeta: 373 | '@swc/helpers': 374 | optional: true 375 | 376 | '@swc/counter@0.1.2': 377 | resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} 378 | 379 | '@swc/types@0.1.5': 380 | resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} 381 | 382 | '@tailwindcss/forms@0.5.7': 383 | resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==} 384 | peerDependencies: 385 | tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' 386 | 387 | '@types/chrome@0.0.158': 388 | resolution: {integrity: sha512-sjBs9E/XDlYyLf3YkPYIN6sFZ/d9LbwMSK+BYphenFdkk39M5P8xcRfykk54RgZr8/QMex1yKlX5EB52TaqhsQ==} 389 | 390 | '@types/filesystem@0.0.35': 391 | resolution: {integrity: sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==} 392 | 393 | '@types/filewriter@0.0.32': 394 | resolution: {integrity: sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg==} 395 | 396 | '@types/har-format@1.2.15': 397 | resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} 398 | 399 | '@types/hast@2.3.10': 400 | resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} 401 | 402 | '@types/node@20.10.4': 403 | resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==} 404 | 405 | '@types/prop-types@15.7.11': 406 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} 407 | 408 | '@types/react-dom@18.0.11': 409 | resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} 410 | 411 | '@types/react-syntax-highlighter@15.5.13': 412 | resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==} 413 | 414 | '@types/react@18.0.29': 415 | resolution: {integrity: sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==} 416 | 417 | '@types/scheduler@0.16.8': 418 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} 419 | 420 | '@types/unist@2.0.10': 421 | resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} 422 | 423 | '@vitejs/plugin-react-swc@3.5.0': 424 | resolution: {integrity: sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==} 425 | peerDependencies: 426 | vite: ^4 || ^5 427 | 428 | '@zeabur/zeabur-js@0.0.1-alpha2': 429 | resolution: {integrity: sha512-QPrG0UziErZEKKkR1e6ZJwfFgDV6KNcDuLoHPbkS13ORmZN36ZE6KNJy8ILRjWzVOVGVrhj1i1lHEOwc1R9fAQ==} 430 | 431 | ansi-escapes@6.2.0: 432 | resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} 433 | engines: {node: '>=14.16'} 434 | 435 | ansi-regex@6.0.1: 436 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 437 | engines: {node: '>=12'} 438 | 439 | ansi-styles@6.2.1: 440 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 441 | engines: {node: '>=12'} 442 | 443 | any-promise@1.3.0: 444 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 445 | 446 | anymatch@3.1.3: 447 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 448 | engines: {node: '>= 8'} 449 | 450 | arg@5.0.2: 451 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 452 | 453 | autoprefixer@10.4.16: 454 | resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} 455 | engines: {node: ^10 || ^12 || >=14} 456 | hasBin: true 457 | peerDependencies: 458 | postcss: ^8.1.0 459 | 460 | balanced-match@1.0.2: 461 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 462 | 463 | binary-extensions@2.2.0: 464 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 465 | engines: {node: '>=8'} 466 | 467 | brace-expansion@1.1.11: 468 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 469 | 470 | braces@3.0.2: 471 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 472 | engines: {node: '>=8'} 473 | 474 | browserslist@4.22.2: 475 | resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} 476 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 477 | hasBin: true 478 | 479 | camelcase-css@2.0.1: 480 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 481 | engines: {node: '>= 6'} 482 | 483 | caniuse-lite@1.0.30001566: 484 | resolution: {integrity: sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==} 485 | 486 | chalk@5.3.0: 487 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 488 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 489 | 490 | character-entities-legacy@1.1.4: 491 | resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} 492 | 493 | character-entities@1.2.4: 494 | resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} 495 | 496 | character-reference-invalid@1.1.4: 497 | resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} 498 | 499 | chokidar@3.5.3: 500 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 501 | engines: {node: '>= 8.10.0'} 502 | 503 | cli-cursor@4.0.0: 504 | resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} 505 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 506 | 507 | cli-truncate@4.0.0: 508 | resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} 509 | engines: {node: '>=18'} 510 | 511 | colorette@2.0.20: 512 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 513 | 514 | comma-separated-tokens@1.0.8: 515 | resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} 516 | 517 | commander@11.1.0: 518 | resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} 519 | engines: {node: '>=16'} 520 | 521 | commander@4.1.1: 522 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 523 | engines: {node: '>= 6'} 524 | 525 | concat-map@0.0.1: 526 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 527 | 528 | core-util-is@1.0.3: 529 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 530 | 531 | cross-spawn@7.0.3: 532 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 533 | engines: {node: '>= 8'} 534 | 535 | cssesc@3.0.0: 536 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 537 | engines: {node: '>=4'} 538 | hasBin: true 539 | 540 | csstype@3.1.3: 541 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 542 | 543 | debug@4.3.4: 544 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 545 | engines: {node: '>=6.0'} 546 | peerDependencies: 547 | supports-color: '*' 548 | peerDependenciesMeta: 549 | supports-color: 550 | optional: true 551 | 552 | didyoumean@1.2.2: 553 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 554 | 555 | dlv@1.1.3: 556 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 557 | 558 | electron-to-chromium@1.4.608: 559 | resolution: {integrity: sha512-J2f/3iIIm3Mo0npneITZ2UPe4B1bg8fTNrFjD8715F/k1BvbviRuqYGkET1PgprrczXYTHFvotbBOmUp6KE0uA==} 560 | 561 | emoji-regex@10.3.0: 562 | resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} 563 | 564 | esbuild@0.19.8: 565 | resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} 566 | engines: {node: '>=12'} 567 | hasBin: true 568 | 569 | escalade@3.1.1: 570 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 571 | engines: {node: '>=6'} 572 | 573 | eventemitter3@5.0.1: 574 | resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} 575 | 576 | execa@8.0.1: 577 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 578 | engines: {node: '>=16.17'} 579 | 580 | fast-glob@3.3.2: 581 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 582 | engines: {node: '>=8.6.0'} 583 | 584 | fastq@1.15.0: 585 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 586 | 587 | fault@1.0.4: 588 | resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} 589 | 590 | fill-range@7.0.1: 591 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 592 | engines: {node: '>=8'} 593 | 594 | format@0.2.2: 595 | resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} 596 | engines: {node: '>=0.4.x'} 597 | 598 | fraction.js@4.3.7: 599 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 600 | 601 | fs.realpath@1.0.0: 602 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 603 | 604 | fsevents@2.3.3: 605 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 606 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 607 | os: [darwin] 608 | 609 | function-bind@1.1.2: 610 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 611 | 612 | get-east-asian-width@1.2.0: 613 | resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} 614 | engines: {node: '>=18'} 615 | 616 | get-stream@8.0.1: 617 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 618 | engines: {node: '>=16'} 619 | 620 | glob-parent@5.1.2: 621 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 622 | engines: {node: '>= 6'} 623 | 624 | glob-parent@6.0.2: 625 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 626 | engines: {node: '>=10.13.0'} 627 | 628 | glob@7.1.6: 629 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 630 | 631 | hasown@2.0.0: 632 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} 633 | engines: {node: '>= 0.4'} 634 | 635 | hast-util-parse-selector@2.2.5: 636 | resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} 637 | 638 | hastscript@6.0.0: 639 | resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} 640 | 641 | highlight.js@10.7.3: 642 | resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} 643 | 644 | human-signals@5.0.0: 645 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 646 | engines: {node: '>=16.17.0'} 647 | 648 | husky@8.0.3: 649 | resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} 650 | engines: {node: '>=14'} 651 | hasBin: true 652 | 653 | immediate@3.0.6: 654 | resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} 655 | 656 | inflight@1.0.6: 657 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 658 | 659 | inherits@2.0.4: 660 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 661 | 662 | is-alphabetical@1.0.4: 663 | resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} 664 | 665 | is-alphanumerical@1.0.4: 666 | resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} 667 | 668 | is-binary-path@2.1.0: 669 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 670 | engines: {node: '>=8'} 671 | 672 | is-core-module@2.13.1: 673 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 674 | 675 | is-decimal@1.0.4: 676 | resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} 677 | 678 | is-extglob@2.1.1: 679 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 680 | engines: {node: '>=0.10.0'} 681 | 682 | is-fullwidth-code-point@4.0.0: 683 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 684 | engines: {node: '>=12'} 685 | 686 | is-fullwidth-code-point@5.0.0: 687 | resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} 688 | engines: {node: '>=18'} 689 | 690 | is-glob@4.0.3: 691 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 692 | engines: {node: '>=0.10.0'} 693 | 694 | is-hexadecimal@1.0.4: 695 | resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} 696 | 697 | is-number@7.0.0: 698 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 699 | engines: {node: '>=0.12.0'} 700 | 701 | is-stream@3.0.0: 702 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 703 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 704 | 705 | isarray@1.0.0: 706 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 707 | 708 | isexe@2.0.0: 709 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 710 | 711 | jiti@1.21.0: 712 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 713 | hasBin: true 714 | 715 | js-tokens@4.0.0: 716 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 717 | 718 | jszip@3.10.1: 719 | resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} 720 | 721 | lie@3.3.0: 722 | resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} 723 | 724 | lilconfig@2.1.0: 725 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 726 | engines: {node: '>=10'} 727 | 728 | lilconfig@3.0.0: 729 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} 730 | engines: {node: '>=14'} 731 | 732 | lines-and-columns@1.2.4: 733 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 734 | 735 | lint-staged@15.2.0: 736 | resolution: {integrity: sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==} 737 | engines: {node: '>=18.12.0'} 738 | hasBin: true 739 | 740 | listr2@8.0.0: 741 | resolution: {integrity: sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==} 742 | engines: {node: '>=18.0.0'} 743 | 744 | log-update@6.0.0: 745 | resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} 746 | engines: {node: '>=18'} 747 | 748 | loose-envify@1.4.0: 749 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 750 | hasBin: true 751 | 752 | lowlight@1.20.0: 753 | resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} 754 | 755 | merge-stream@2.0.0: 756 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 757 | 758 | merge2@1.4.1: 759 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 760 | engines: {node: '>= 8'} 761 | 762 | micromatch@4.0.5: 763 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 764 | engines: {node: '>=8.6'} 765 | 766 | mimic-fn@2.1.0: 767 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 768 | engines: {node: '>=6'} 769 | 770 | mimic-fn@4.0.0: 771 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 772 | engines: {node: '>=12'} 773 | 774 | mini-svg-data-uri@1.4.4: 775 | resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} 776 | hasBin: true 777 | 778 | minimatch@3.1.2: 779 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 780 | 781 | ms@2.1.2: 782 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 783 | 784 | mz@2.7.0: 785 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 786 | 787 | nanoid@3.3.7: 788 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 789 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 790 | hasBin: true 791 | 792 | node-releases@2.0.14: 793 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 794 | 795 | normalize-path@3.0.0: 796 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 797 | engines: {node: '>=0.10.0'} 798 | 799 | normalize-range@0.1.2: 800 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 801 | engines: {node: '>=0.10.0'} 802 | 803 | npm-run-path@5.1.0: 804 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} 805 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 806 | 807 | object-assign@4.1.1: 808 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 809 | engines: {node: '>=0.10.0'} 810 | 811 | object-hash@3.0.0: 812 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 813 | engines: {node: '>= 6'} 814 | 815 | once@1.4.0: 816 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 817 | 818 | onetime@5.1.2: 819 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 820 | engines: {node: '>=6'} 821 | 822 | onetime@6.0.0: 823 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 824 | engines: {node: '>=12'} 825 | 826 | pako@1.0.11: 827 | resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} 828 | 829 | parse-entities@2.0.0: 830 | resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} 831 | 832 | path-is-absolute@1.0.1: 833 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 834 | engines: {node: '>=0.10.0'} 835 | 836 | path-key@3.1.1: 837 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 838 | engines: {node: '>=8'} 839 | 840 | path-key@4.0.0: 841 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 842 | engines: {node: '>=12'} 843 | 844 | path-parse@1.0.7: 845 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 846 | 847 | picocolors@1.0.0: 848 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 849 | 850 | picomatch@2.3.1: 851 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 852 | engines: {node: '>=8.6'} 853 | 854 | pidtree@0.6.0: 855 | resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} 856 | engines: {node: '>=0.10'} 857 | hasBin: true 858 | 859 | pify@2.3.0: 860 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 861 | engines: {node: '>=0.10.0'} 862 | 863 | pirates@4.0.6: 864 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 865 | engines: {node: '>= 6'} 866 | 867 | postcss-import@15.1.0: 868 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 869 | engines: {node: '>=14.0.0'} 870 | peerDependencies: 871 | postcss: ^8.0.0 872 | 873 | postcss-js@4.0.1: 874 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 875 | engines: {node: ^12 || ^14 || >= 16} 876 | peerDependencies: 877 | postcss: ^8.4.21 878 | 879 | postcss-load-config@4.0.2: 880 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 881 | engines: {node: '>= 14'} 882 | peerDependencies: 883 | postcss: '>=8.0.9' 884 | ts-node: '>=9.0.0' 885 | peerDependenciesMeta: 886 | postcss: 887 | optional: true 888 | ts-node: 889 | optional: true 890 | 891 | postcss-nested@6.0.1: 892 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 893 | engines: {node: '>=12.0'} 894 | peerDependencies: 895 | postcss: ^8.2.14 896 | 897 | postcss-selector-parser@6.0.13: 898 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} 899 | engines: {node: '>=4'} 900 | 901 | postcss-value-parser@4.2.0: 902 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 903 | 904 | postcss@8.4.32: 905 | resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} 906 | engines: {node: ^10 || ^12 || >=14} 907 | 908 | prettier@2.2.1: 909 | resolution: {integrity: sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==} 910 | engines: {node: '>=10.13.0'} 911 | hasBin: true 912 | 913 | prismjs@1.27.0: 914 | resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} 915 | engines: {node: '>=6'} 916 | 917 | prismjs@1.29.0: 918 | resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} 919 | engines: {node: '>=6'} 920 | 921 | process-nextick-args@2.0.1: 922 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 923 | 924 | property-information@5.6.0: 925 | resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} 926 | 927 | queue-microtask@1.2.3: 928 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 929 | 930 | react-dom@18.2.0: 931 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 932 | peerDependencies: 933 | react: ^18.2.0 934 | 935 | react-syntax-highlighter@15.5.0: 936 | resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==} 937 | peerDependencies: 938 | react: '>= 0.14.0' 939 | 940 | react@18.2.0: 941 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 942 | engines: {node: '>=0.10.0'} 943 | 944 | read-cache@1.0.0: 945 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 946 | 947 | readable-stream@2.3.8: 948 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} 949 | 950 | readdirp@3.6.0: 951 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 952 | engines: {node: '>=8.10.0'} 953 | 954 | refractor@3.6.0: 955 | resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} 956 | 957 | regenerator-runtime@0.14.1: 958 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 959 | 960 | resolve@1.22.8: 961 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 962 | hasBin: true 963 | 964 | restore-cursor@4.0.0: 965 | resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} 966 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 967 | 968 | reusify@1.0.4: 969 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 970 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 971 | 972 | rfdc@1.3.0: 973 | resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} 974 | 975 | rollup@4.7.0: 976 | resolution: {integrity: sha512-7Kw0dUP4BWH78zaZCqF1rPyQ8D5DSU6URG45v1dqS/faNsx9WXyess00uTOZxKr7oR/4TOjO1CPudT8L1UsEgw==} 977 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 978 | hasBin: true 979 | 980 | run-parallel@1.2.0: 981 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 982 | 983 | safe-buffer@5.1.2: 984 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 985 | 986 | scheduler@0.23.0: 987 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 988 | 989 | setimmediate@1.0.5: 990 | resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} 991 | 992 | shebang-command@2.0.0: 993 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 994 | engines: {node: '>=8'} 995 | 996 | shebang-regex@3.0.0: 997 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 998 | engines: {node: '>=8'} 999 | 1000 | shell-quote@1.8.1: 1001 | resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} 1002 | 1003 | signal-exit@3.0.7: 1004 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1005 | 1006 | signal-exit@4.1.0: 1007 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1008 | engines: {node: '>=14'} 1009 | 1010 | slice-ansi@5.0.0: 1011 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 1012 | engines: {node: '>=12'} 1013 | 1014 | slice-ansi@7.1.0: 1015 | resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} 1016 | engines: {node: '>=18'} 1017 | 1018 | source-map-js@1.0.2: 1019 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1020 | engines: {node: '>=0.10.0'} 1021 | 1022 | space-separated-tokens@1.1.5: 1023 | resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} 1024 | 1025 | string-argv@0.3.2: 1026 | resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} 1027 | engines: {node: '>=0.6.19'} 1028 | 1029 | string-width@7.0.0: 1030 | resolution: {integrity: sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==} 1031 | engines: {node: '>=18'} 1032 | 1033 | string_decoder@1.1.1: 1034 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 1035 | 1036 | strip-ansi@7.1.0: 1037 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1038 | engines: {node: '>=12'} 1039 | 1040 | strip-final-newline@3.0.0: 1041 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 1042 | engines: {node: '>=12'} 1043 | 1044 | sucrase@3.34.0: 1045 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} 1046 | engines: {node: '>=8'} 1047 | hasBin: true 1048 | 1049 | supports-preserve-symlinks-flag@1.0.0: 1050 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1051 | engines: {node: '>= 0.4'} 1052 | 1053 | tailwindcss@3.3.6: 1054 | resolution: {integrity: sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==} 1055 | engines: {node: '>=14.0.0'} 1056 | hasBin: true 1057 | 1058 | thenify-all@1.6.0: 1059 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1060 | engines: {node: '>=0.8'} 1061 | 1062 | thenify@3.3.1: 1063 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1064 | 1065 | to-regex-range@5.0.1: 1066 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1067 | engines: {node: '>=8.0'} 1068 | 1069 | ts-interface-checker@0.1.13: 1070 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1071 | 1072 | type-fest@3.13.1: 1073 | resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} 1074 | engines: {node: '>=14.16'} 1075 | 1076 | typescript@5.0.4: 1077 | resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} 1078 | engines: {node: '>=12.20'} 1079 | hasBin: true 1080 | 1081 | undici-types@5.26.5: 1082 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 1083 | 1084 | update-browserslist-db@1.0.13: 1085 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 1086 | hasBin: true 1087 | peerDependencies: 1088 | browserslist: '>= 4.21.0' 1089 | 1090 | util-deprecate@1.0.2: 1091 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1092 | 1093 | vite@5.0.7: 1094 | resolution: {integrity: sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==} 1095 | engines: {node: ^18.0.0 || >=20.0.0} 1096 | hasBin: true 1097 | peerDependencies: 1098 | '@types/node': ^18.0.0 || >=20.0.0 1099 | less: '*' 1100 | lightningcss: ^1.21.0 1101 | sass: '*' 1102 | stylus: '*' 1103 | sugarss: '*' 1104 | terser: ^5.4.0 1105 | peerDependenciesMeta: 1106 | '@types/node': 1107 | optional: true 1108 | less: 1109 | optional: true 1110 | lightningcss: 1111 | optional: true 1112 | sass: 1113 | optional: true 1114 | stylus: 1115 | optional: true 1116 | sugarss: 1117 | optional: true 1118 | terser: 1119 | optional: true 1120 | 1121 | which@2.0.2: 1122 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1123 | engines: {node: '>= 8'} 1124 | hasBin: true 1125 | 1126 | wrap-ansi@9.0.0: 1127 | resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} 1128 | engines: {node: '>=18'} 1129 | 1130 | wrappy@1.0.2: 1131 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1132 | 1133 | xtend@4.0.2: 1134 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 1135 | engines: {node: '>=0.4'} 1136 | 1137 | yaml@2.3.4: 1138 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 1139 | engines: {node: '>= 14'} 1140 | 1141 | snapshots: 1142 | 1143 | '@alloc/quick-lru@5.2.0': {} 1144 | 1145 | '@babel/runtime@7.24.7': 1146 | dependencies: 1147 | regenerator-runtime: 0.14.1 1148 | 1149 | '@esbuild/android-arm64@0.19.8': 1150 | optional: true 1151 | 1152 | '@esbuild/android-arm@0.19.8': 1153 | optional: true 1154 | 1155 | '@esbuild/android-x64@0.19.8': 1156 | optional: true 1157 | 1158 | '@esbuild/darwin-arm64@0.19.8': 1159 | optional: true 1160 | 1161 | '@esbuild/darwin-x64@0.19.8': 1162 | optional: true 1163 | 1164 | '@esbuild/freebsd-arm64@0.19.8': 1165 | optional: true 1166 | 1167 | '@esbuild/freebsd-x64@0.19.8': 1168 | optional: true 1169 | 1170 | '@esbuild/linux-arm64@0.19.8': 1171 | optional: true 1172 | 1173 | '@esbuild/linux-arm@0.19.8': 1174 | optional: true 1175 | 1176 | '@esbuild/linux-ia32@0.19.8': 1177 | optional: true 1178 | 1179 | '@esbuild/linux-loong64@0.19.8': 1180 | optional: true 1181 | 1182 | '@esbuild/linux-mips64el@0.19.8': 1183 | optional: true 1184 | 1185 | '@esbuild/linux-ppc64@0.19.8': 1186 | optional: true 1187 | 1188 | '@esbuild/linux-riscv64@0.19.8': 1189 | optional: true 1190 | 1191 | '@esbuild/linux-s390x@0.19.8': 1192 | optional: true 1193 | 1194 | '@esbuild/linux-x64@0.19.8': 1195 | optional: true 1196 | 1197 | '@esbuild/netbsd-x64@0.19.8': 1198 | optional: true 1199 | 1200 | '@esbuild/openbsd-x64@0.19.8': 1201 | optional: true 1202 | 1203 | '@esbuild/sunos-x64@0.19.8': 1204 | optional: true 1205 | 1206 | '@esbuild/win32-arm64@0.19.8': 1207 | optional: true 1208 | 1209 | '@esbuild/win32-ia32@0.19.8': 1210 | optional: true 1211 | 1212 | '@esbuild/win32-x64@0.19.8': 1213 | optional: true 1214 | 1215 | '@jridgewell/gen-mapping@0.3.3': 1216 | dependencies: 1217 | '@jridgewell/set-array': 1.1.2 1218 | '@jridgewell/sourcemap-codec': 1.4.15 1219 | '@jridgewell/trace-mapping': 0.3.20 1220 | 1221 | '@jridgewell/resolve-uri@3.1.1': {} 1222 | 1223 | '@jridgewell/set-array@1.1.2': {} 1224 | 1225 | '@jridgewell/sourcemap-codec@1.4.15': {} 1226 | 1227 | '@jridgewell/trace-mapping@0.3.20': 1228 | dependencies: 1229 | '@jridgewell/resolve-uri': 3.1.1 1230 | '@jridgewell/sourcemap-codec': 1.4.15 1231 | 1232 | '@nodelib/fs.scandir@2.1.5': 1233 | dependencies: 1234 | '@nodelib/fs.stat': 2.0.5 1235 | run-parallel: 1.2.0 1236 | 1237 | '@nodelib/fs.stat@2.0.5': {} 1238 | 1239 | '@nodelib/fs.walk@1.2.8': 1240 | dependencies: 1241 | '@nodelib/fs.scandir': 2.1.5 1242 | fastq: 1.15.0 1243 | 1244 | '@rollup/rollup-android-arm-eabi@4.7.0': 1245 | optional: true 1246 | 1247 | '@rollup/rollup-android-arm64@4.7.0': 1248 | optional: true 1249 | 1250 | '@rollup/rollup-darwin-arm64@4.7.0': 1251 | optional: true 1252 | 1253 | '@rollup/rollup-darwin-x64@4.7.0': 1254 | optional: true 1255 | 1256 | '@rollup/rollup-linux-arm-gnueabihf@4.7.0': 1257 | optional: true 1258 | 1259 | '@rollup/rollup-linux-arm64-gnu@4.7.0': 1260 | optional: true 1261 | 1262 | '@rollup/rollup-linux-arm64-musl@4.7.0': 1263 | optional: true 1264 | 1265 | '@rollup/rollup-linux-riscv64-gnu@4.7.0': 1266 | optional: true 1267 | 1268 | '@rollup/rollup-linux-x64-gnu@4.7.0': 1269 | optional: true 1270 | 1271 | '@rollup/rollup-linux-x64-musl@4.7.0': 1272 | optional: true 1273 | 1274 | '@rollup/rollup-win32-arm64-msvc@4.7.0': 1275 | optional: true 1276 | 1277 | '@rollup/rollup-win32-ia32-msvc@4.7.0': 1278 | optional: true 1279 | 1280 | '@rollup/rollup-win32-x64-msvc@4.7.0': 1281 | optional: true 1282 | 1283 | '@swc/core-darwin-arm64@1.3.100': 1284 | optional: true 1285 | 1286 | '@swc/core-darwin-x64@1.3.100': 1287 | optional: true 1288 | 1289 | '@swc/core-linux-arm64-gnu@1.3.100': 1290 | optional: true 1291 | 1292 | '@swc/core-linux-arm64-musl@1.3.100': 1293 | optional: true 1294 | 1295 | '@swc/core-linux-x64-gnu@1.3.100': 1296 | optional: true 1297 | 1298 | '@swc/core-linux-x64-musl@1.3.100': 1299 | optional: true 1300 | 1301 | '@swc/core-win32-arm64-msvc@1.3.100': 1302 | optional: true 1303 | 1304 | '@swc/core-win32-ia32-msvc@1.3.100': 1305 | optional: true 1306 | 1307 | '@swc/core-win32-x64-msvc@1.3.100': 1308 | optional: true 1309 | 1310 | '@swc/core@1.3.100': 1311 | dependencies: 1312 | '@swc/counter': 0.1.2 1313 | '@swc/types': 0.1.5 1314 | optionalDependencies: 1315 | '@swc/core-darwin-arm64': 1.3.100 1316 | '@swc/core-darwin-x64': 1.3.100 1317 | '@swc/core-linux-arm64-gnu': 1.3.100 1318 | '@swc/core-linux-arm64-musl': 1.3.100 1319 | '@swc/core-linux-x64-gnu': 1.3.100 1320 | '@swc/core-linux-x64-musl': 1.3.100 1321 | '@swc/core-win32-arm64-msvc': 1.3.100 1322 | '@swc/core-win32-ia32-msvc': 1.3.100 1323 | '@swc/core-win32-x64-msvc': 1.3.100 1324 | 1325 | '@swc/counter@0.1.2': {} 1326 | 1327 | '@swc/types@0.1.5': {} 1328 | 1329 | '@tailwindcss/forms@0.5.7(tailwindcss@3.3.6)': 1330 | dependencies: 1331 | mini-svg-data-uri: 1.4.4 1332 | tailwindcss: 3.3.6 1333 | 1334 | '@types/chrome@0.0.158': 1335 | dependencies: 1336 | '@types/filesystem': 0.0.35 1337 | '@types/har-format': 1.2.15 1338 | 1339 | '@types/filesystem@0.0.35': 1340 | dependencies: 1341 | '@types/filewriter': 0.0.32 1342 | 1343 | '@types/filewriter@0.0.32': {} 1344 | 1345 | '@types/har-format@1.2.15': {} 1346 | 1347 | '@types/hast@2.3.10': 1348 | dependencies: 1349 | '@types/unist': 2.0.10 1350 | 1351 | '@types/node@20.10.4': 1352 | dependencies: 1353 | undici-types: 5.26.5 1354 | 1355 | '@types/prop-types@15.7.11': {} 1356 | 1357 | '@types/react-dom@18.0.11': 1358 | dependencies: 1359 | '@types/react': 18.0.29 1360 | 1361 | '@types/react-syntax-highlighter@15.5.13': 1362 | dependencies: 1363 | '@types/react': 18.0.29 1364 | 1365 | '@types/react@18.0.29': 1366 | dependencies: 1367 | '@types/prop-types': 15.7.11 1368 | '@types/scheduler': 0.16.8 1369 | csstype: 3.1.3 1370 | 1371 | '@types/scheduler@0.16.8': {} 1372 | 1373 | '@types/unist@2.0.10': {} 1374 | 1375 | '@vitejs/plugin-react-swc@3.5.0(vite@5.0.7(@types/node@20.10.4))': 1376 | dependencies: 1377 | '@swc/core': 1.3.100 1378 | vite: 5.0.7(@types/node@20.10.4) 1379 | transitivePeerDependencies: 1380 | - '@swc/helpers' 1381 | 1382 | '@zeabur/zeabur-js@0.0.1-alpha2': {} 1383 | 1384 | ansi-escapes@6.2.0: 1385 | dependencies: 1386 | type-fest: 3.13.1 1387 | 1388 | ansi-regex@6.0.1: {} 1389 | 1390 | ansi-styles@6.2.1: {} 1391 | 1392 | any-promise@1.3.0: {} 1393 | 1394 | anymatch@3.1.3: 1395 | dependencies: 1396 | normalize-path: 3.0.0 1397 | picomatch: 2.3.1 1398 | 1399 | arg@5.0.2: {} 1400 | 1401 | autoprefixer@10.4.16(postcss@8.4.32): 1402 | dependencies: 1403 | browserslist: 4.22.2 1404 | caniuse-lite: 1.0.30001566 1405 | fraction.js: 4.3.7 1406 | normalize-range: 0.1.2 1407 | picocolors: 1.0.0 1408 | postcss: 8.4.32 1409 | postcss-value-parser: 4.2.0 1410 | 1411 | balanced-match@1.0.2: {} 1412 | 1413 | binary-extensions@2.2.0: {} 1414 | 1415 | brace-expansion@1.1.11: 1416 | dependencies: 1417 | balanced-match: 1.0.2 1418 | concat-map: 0.0.1 1419 | 1420 | braces@3.0.2: 1421 | dependencies: 1422 | fill-range: 7.0.1 1423 | 1424 | browserslist@4.22.2: 1425 | dependencies: 1426 | caniuse-lite: 1.0.30001566 1427 | electron-to-chromium: 1.4.608 1428 | node-releases: 2.0.14 1429 | update-browserslist-db: 1.0.13(browserslist@4.22.2) 1430 | 1431 | camelcase-css@2.0.1: {} 1432 | 1433 | caniuse-lite@1.0.30001566: {} 1434 | 1435 | chalk@5.3.0: {} 1436 | 1437 | character-entities-legacy@1.1.4: {} 1438 | 1439 | character-entities@1.2.4: {} 1440 | 1441 | character-reference-invalid@1.1.4: {} 1442 | 1443 | chokidar@3.5.3: 1444 | dependencies: 1445 | anymatch: 3.1.3 1446 | braces: 3.0.2 1447 | glob-parent: 5.1.2 1448 | is-binary-path: 2.1.0 1449 | is-glob: 4.0.3 1450 | normalize-path: 3.0.0 1451 | readdirp: 3.6.0 1452 | optionalDependencies: 1453 | fsevents: 2.3.3 1454 | 1455 | cli-cursor@4.0.0: 1456 | dependencies: 1457 | restore-cursor: 4.0.0 1458 | 1459 | cli-truncate@4.0.0: 1460 | dependencies: 1461 | slice-ansi: 5.0.0 1462 | string-width: 7.0.0 1463 | 1464 | colorette@2.0.20: {} 1465 | 1466 | comma-separated-tokens@1.0.8: {} 1467 | 1468 | commander@11.1.0: {} 1469 | 1470 | commander@4.1.1: {} 1471 | 1472 | concat-map@0.0.1: {} 1473 | 1474 | core-util-is@1.0.3: {} 1475 | 1476 | cross-spawn@7.0.3: 1477 | dependencies: 1478 | path-key: 3.1.1 1479 | shebang-command: 2.0.0 1480 | which: 2.0.2 1481 | 1482 | cssesc@3.0.0: {} 1483 | 1484 | csstype@3.1.3: {} 1485 | 1486 | debug@4.3.4: 1487 | dependencies: 1488 | ms: 2.1.2 1489 | 1490 | didyoumean@1.2.2: {} 1491 | 1492 | dlv@1.1.3: {} 1493 | 1494 | electron-to-chromium@1.4.608: {} 1495 | 1496 | emoji-regex@10.3.0: {} 1497 | 1498 | esbuild@0.19.8: 1499 | optionalDependencies: 1500 | '@esbuild/android-arm': 0.19.8 1501 | '@esbuild/android-arm64': 0.19.8 1502 | '@esbuild/android-x64': 0.19.8 1503 | '@esbuild/darwin-arm64': 0.19.8 1504 | '@esbuild/darwin-x64': 0.19.8 1505 | '@esbuild/freebsd-arm64': 0.19.8 1506 | '@esbuild/freebsd-x64': 0.19.8 1507 | '@esbuild/linux-arm': 0.19.8 1508 | '@esbuild/linux-arm64': 0.19.8 1509 | '@esbuild/linux-ia32': 0.19.8 1510 | '@esbuild/linux-loong64': 0.19.8 1511 | '@esbuild/linux-mips64el': 0.19.8 1512 | '@esbuild/linux-ppc64': 0.19.8 1513 | '@esbuild/linux-riscv64': 0.19.8 1514 | '@esbuild/linux-s390x': 0.19.8 1515 | '@esbuild/linux-x64': 0.19.8 1516 | '@esbuild/netbsd-x64': 0.19.8 1517 | '@esbuild/openbsd-x64': 0.19.8 1518 | '@esbuild/sunos-x64': 0.19.8 1519 | '@esbuild/win32-arm64': 0.19.8 1520 | '@esbuild/win32-ia32': 0.19.8 1521 | '@esbuild/win32-x64': 0.19.8 1522 | 1523 | escalade@3.1.1: {} 1524 | 1525 | eventemitter3@5.0.1: {} 1526 | 1527 | execa@8.0.1: 1528 | dependencies: 1529 | cross-spawn: 7.0.3 1530 | get-stream: 8.0.1 1531 | human-signals: 5.0.0 1532 | is-stream: 3.0.0 1533 | merge-stream: 2.0.0 1534 | npm-run-path: 5.1.0 1535 | onetime: 6.0.0 1536 | signal-exit: 4.1.0 1537 | strip-final-newline: 3.0.0 1538 | 1539 | fast-glob@3.3.2: 1540 | dependencies: 1541 | '@nodelib/fs.stat': 2.0.5 1542 | '@nodelib/fs.walk': 1.2.8 1543 | glob-parent: 5.1.2 1544 | merge2: 1.4.1 1545 | micromatch: 4.0.5 1546 | 1547 | fastq@1.15.0: 1548 | dependencies: 1549 | reusify: 1.0.4 1550 | 1551 | fault@1.0.4: 1552 | dependencies: 1553 | format: 0.2.2 1554 | 1555 | fill-range@7.0.1: 1556 | dependencies: 1557 | to-regex-range: 5.0.1 1558 | 1559 | format@0.2.2: {} 1560 | 1561 | fraction.js@4.3.7: {} 1562 | 1563 | fs.realpath@1.0.0: {} 1564 | 1565 | fsevents@2.3.3: 1566 | optional: true 1567 | 1568 | function-bind@1.1.2: {} 1569 | 1570 | get-east-asian-width@1.2.0: {} 1571 | 1572 | get-stream@8.0.1: {} 1573 | 1574 | glob-parent@5.1.2: 1575 | dependencies: 1576 | is-glob: 4.0.3 1577 | 1578 | glob-parent@6.0.2: 1579 | dependencies: 1580 | is-glob: 4.0.3 1581 | 1582 | glob@7.1.6: 1583 | dependencies: 1584 | fs.realpath: 1.0.0 1585 | inflight: 1.0.6 1586 | inherits: 2.0.4 1587 | minimatch: 3.1.2 1588 | once: 1.4.0 1589 | path-is-absolute: 1.0.1 1590 | 1591 | hasown@2.0.0: 1592 | dependencies: 1593 | function-bind: 1.1.2 1594 | 1595 | hast-util-parse-selector@2.2.5: {} 1596 | 1597 | hastscript@6.0.0: 1598 | dependencies: 1599 | '@types/hast': 2.3.10 1600 | comma-separated-tokens: 1.0.8 1601 | hast-util-parse-selector: 2.2.5 1602 | property-information: 5.6.0 1603 | space-separated-tokens: 1.1.5 1604 | 1605 | highlight.js@10.7.3: {} 1606 | 1607 | human-signals@5.0.0: {} 1608 | 1609 | husky@8.0.3: {} 1610 | 1611 | immediate@3.0.6: {} 1612 | 1613 | inflight@1.0.6: 1614 | dependencies: 1615 | once: 1.4.0 1616 | wrappy: 1.0.2 1617 | 1618 | inherits@2.0.4: {} 1619 | 1620 | is-alphabetical@1.0.4: {} 1621 | 1622 | is-alphanumerical@1.0.4: 1623 | dependencies: 1624 | is-alphabetical: 1.0.4 1625 | is-decimal: 1.0.4 1626 | 1627 | is-binary-path@2.1.0: 1628 | dependencies: 1629 | binary-extensions: 2.2.0 1630 | 1631 | is-core-module@2.13.1: 1632 | dependencies: 1633 | hasown: 2.0.0 1634 | 1635 | is-decimal@1.0.4: {} 1636 | 1637 | is-extglob@2.1.1: {} 1638 | 1639 | is-fullwidth-code-point@4.0.0: {} 1640 | 1641 | is-fullwidth-code-point@5.0.0: 1642 | dependencies: 1643 | get-east-asian-width: 1.2.0 1644 | 1645 | is-glob@4.0.3: 1646 | dependencies: 1647 | is-extglob: 2.1.1 1648 | 1649 | is-hexadecimal@1.0.4: {} 1650 | 1651 | is-number@7.0.0: {} 1652 | 1653 | is-stream@3.0.0: {} 1654 | 1655 | isarray@1.0.0: {} 1656 | 1657 | isexe@2.0.0: {} 1658 | 1659 | jiti@1.21.0: {} 1660 | 1661 | js-tokens@4.0.0: {} 1662 | 1663 | jszip@3.10.1: 1664 | dependencies: 1665 | lie: 3.3.0 1666 | pako: 1.0.11 1667 | readable-stream: 2.3.8 1668 | setimmediate: 1.0.5 1669 | 1670 | lie@3.3.0: 1671 | dependencies: 1672 | immediate: 3.0.6 1673 | 1674 | lilconfig@2.1.0: {} 1675 | 1676 | lilconfig@3.0.0: {} 1677 | 1678 | lines-and-columns@1.2.4: {} 1679 | 1680 | lint-staged@15.2.0: 1681 | dependencies: 1682 | chalk: 5.3.0 1683 | commander: 11.1.0 1684 | debug: 4.3.4 1685 | execa: 8.0.1 1686 | lilconfig: 3.0.0 1687 | listr2: 8.0.0 1688 | micromatch: 4.0.5 1689 | pidtree: 0.6.0 1690 | string-argv: 0.3.2 1691 | yaml: 2.3.4 1692 | transitivePeerDependencies: 1693 | - supports-color 1694 | 1695 | listr2@8.0.0: 1696 | dependencies: 1697 | cli-truncate: 4.0.0 1698 | colorette: 2.0.20 1699 | eventemitter3: 5.0.1 1700 | log-update: 6.0.0 1701 | rfdc: 1.3.0 1702 | wrap-ansi: 9.0.0 1703 | 1704 | log-update@6.0.0: 1705 | dependencies: 1706 | ansi-escapes: 6.2.0 1707 | cli-cursor: 4.0.0 1708 | slice-ansi: 7.1.0 1709 | strip-ansi: 7.1.0 1710 | wrap-ansi: 9.0.0 1711 | 1712 | loose-envify@1.4.0: 1713 | dependencies: 1714 | js-tokens: 4.0.0 1715 | 1716 | lowlight@1.20.0: 1717 | dependencies: 1718 | fault: 1.0.4 1719 | highlight.js: 10.7.3 1720 | 1721 | merge-stream@2.0.0: {} 1722 | 1723 | merge2@1.4.1: {} 1724 | 1725 | micromatch@4.0.5: 1726 | dependencies: 1727 | braces: 3.0.2 1728 | picomatch: 2.3.1 1729 | 1730 | mimic-fn@2.1.0: {} 1731 | 1732 | mimic-fn@4.0.0: {} 1733 | 1734 | mini-svg-data-uri@1.4.4: {} 1735 | 1736 | minimatch@3.1.2: 1737 | dependencies: 1738 | brace-expansion: 1.1.11 1739 | 1740 | ms@2.1.2: {} 1741 | 1742 | mz@2.7.0: 1743 | dependencies: 1744 | any-promise: 1.3.0 1745 | object-assign: 4.1.1 1746 | thenify-all: 1.6.0 1747 | 1748 | nanoid@3.3.7: {} 1749 | 1750 | node-releases@2.0.14: {} 1751 | 1752 | normalize-path@3.0.0: {} 1753 | 1754 | normalize-range@0.1.2: {} 1755 | 1756 | npm-run-path@5.1.0: 1757 | dependencies: 1758 | path-key: 4.0.0 1759 | 1760 | object-assign@4.1.1: {} 1761 | 1762 | object-hash@3.0.0: {} 1763 | 1764 | once@1.4.0: 1765 | dependencies: 1766 | wrappy: 1.0.2 1767 | 1768 | onetime@5.1.2: 1769 | dependencies: 1770 | mimic-fn: 2.1.0 1771 | 1772 | onetime@6.0.0: 1773 | dependencies: 1774 | mimic-fn: 4.0.0 1775 | 1776 | pako@1.0.11: {} 1777 | 1778 | parse-entities@2.0.0: 1779 | dependencies: 1780 | character-entities: 1.2.4 1781 | character-entities-legacy: 1.1.4 1782 | character-reference-invalid: 1.1.4 1783 | is-alphanumerical: 1.0.4 1784 | is-decimal: 1.0.4 1785 | is-hexadecimal: 1.0.4 1786 | 1787 | path-is-absolute@1.0.1: {} 1788 | 1789 | path-key@3.1.1: {} 1790 | 1791 | path-key@4.0.0: {} 1792 | 1793 | path-parse@1.0.7: {} 1794 | 1795 | picocolors@1.0.0: {} 1796 | 1797 | picomatch@2.3.1: {} 1798 | 1799 | pidtree@0.6.0: {} 1800 | 1801 | pify@2.3.0: {} 1802 | 1803 | pirates@4.0.6: {} 1804 | 1805 | postcss-import@15.1.0(postcss@8.4.32): 1806 | dependencies: 1807 | postcss: 8.4.32 1808 | postcss-value-parser: 4.2.0 1809 | read-cache: 1.0.0 1810 | resolve: 1.22.8 1811 | 1812 | postcss-js@4.0.1(postcss@8.4.32): 1813 | dependencies: 1814 | camelcase-css: 2.0.1 1815 | postcss: 8.4.32 1816 | 1817 | postcss-load-config@4.0.2(postcss@8.4.32): 1818 | dependencies: 1819 | lilconfig: 3.0.0 1820 | yaml: 2.3.4 1821 | optionalDependencies: 1822 | postcss: 8.4.32 1823 | 1824 | postcss-nested@6.0.1(postcss@8.4.32): 1825 | dependencies: 1826 | postcss: 8.4.32 1827 | postcss-selector-parser: 6.0.13 1828 | 1829 | postcss-selector-parser@6.0.13: 1830 | dependencies: 1831 | cssesc: 3.0.0 1832 | util-deprecate: 1.0.2 1833 | 1834 | postcss-value-parser@4.2.0: {} 1835 | 1836 | postcss@8.4.32: 1837 | dependencies: 1838 | nanoid: 3.3.7 1839 | picocolors: 1.0.0 1840 | source-map-js: 1.0.2 1841 | 1842 | prettier@2.2.1: {} 1843 | 1844 | prismjs@1.27.0: {} 1845 | 1846 | prismjs@1.29.0: {} 1847 | 1848 | process-nextick-args@2.0.1: {} 1849 | 1850 | property-information@5.6.0: 1851 | dependencies: 1852 | xtend: 4.0.2 1853 | 1854 | queue-microtask@1.2.3: {} 1855 | 1856 | react-dom@18.2.0(react@18.2.0): 1857 | dependencies: 1858 | loose-envify: 1.4.0 1859 | react: 18.2.0 1860 | scheduler: 0.23.0 1861 | 1862 | react-syntax-highlighter@15.5.0(react@18.2.0): 1863 | dependencies: 1864 | '@babel/runtime': 7.24.7 1865 | highlight.js: 10.7.3 1866 | lowlight: 1.20.0 1867 | prismjs: 1.29.0 1868 | react: 18.2.0 1869 | refractor: 3.6.0 1870 | 1871 | react@18.2.0: 1872 | dependencies: 1873 | loose-envify: 1.4.0 1874 | 1875 | read-cache@1.0.0: 1876 | dependencies: 1877 | pify: 2.3.0 1878 | 1879 | readable-stream@2.3.8: 1880 | dependencies: 1881 | core-util-is: 1.0.3 1882 | inherits: 2.0.4 1883 | isarray: 1.0.0 1884 | process-nextick-args: 2.0.1 1885 | safe-buffer: 5.1.2 1886 | string_decoder: 1.1.1 1887 | util-deprecate: 1.0.2 1888 | 1889 | readdirp@3.6.0: 1890 | dependencies: 1891 | picomatch: 2.3.1 1892 | 1893 | refractor@3.6.0: 1894 | dependencies: 1895 | hastscript: 6.0.0 1896 | parse-entities: 2.0.0 1897 | prismjs: 1.27.0 1898 | 1899 | regenerator-runtime@0.14.1: {} 1900 | 1901 | resolve@1.22.8: 1902 | dependencies: 1903 | is-core-module: 2.13.1 1904 | path-parse: 1.0.7 1905 | supports-preserve-symlinks-flag: 1.0.0 1906 | 1907 | restore-cursor@4.0.0: 1908 | dependencies: 1909 | onetime: 5.1.2 1910 | signal-exit: 3.0.7 1911 | 1912 | reusify@1.0.4: {} 1913 | 1914 | rfdc@1.3.0: {} 1915 | 1916 | rollup@4.7.0: 1917 | optionalDependencies: 1918 | '@rollup/rollup-android-arm-eabi': 4.7.0 1919 | '@rollup/rollup-android-arm64': 4.7.0 1920 | '@rollup/rollup-darwin-arm64': 4.7.0 1921 | '@rollup/rollup-darwin-x64': 4.7.0 1922 | '@rollup/rollup-linux-arm-gnueabihf': 4.7.0 1923 | '@rollup/rollup-linux-arm64-gnu': 4.7.0 1924 | '@rollup/rollup-linux-arm64-musl': 4.7.0 1925 | '@rollup/rollup-linux-riscv64-gnu': 4.7.0 1926 | '@rollup/rollup-linux-x64-gnu': 4.7.0 1927 | '@rollup/rollup-linux-x64-musl': 4.7.0 1928 | '@rollup/rollup-win32-arm64-msvc': 4.7.0 1929 | '@rollup/rollup-win32-ia32-msvc': 4.7.0 1930 | '@rollup/rollup-win32-x64-msvc': 4.7.0 1931 | fsevents: 2.3.3 1932 | 1933 | run-parallel@1.2.0: 1934 | dependencies: 1935 | queue-microtask: 1.2.3 1936 | 1937 | safe-buffer@5.1.2: {} 1938 | 1939 | scheduler@0.23.0: 1940 | dependencies: 1941 | loose-envify: 1.4.0 1942 | 1943 | setimmediate@1.0.5: {} 1944 | 1945 | shebang-command@2.0.0: 1946 | dependencies: 1947 | shebang-regex: 3.0.0 1948 | 1949 | shebang-regex@3.0.0: {} 1950 | 1951 | shell-quote@1.8.1: {} 1952 | 1953 | signal-exit@3.0.7: {} 1954 | 1955 | signal-exit@4.1.0: {} 1956 | 1957 | slice-ansi@5.0.0: 1958 | dependencies: 1959 | ansi-styles: 6.2.1 1960 | is-fullwidth-code-point: 4.0.0 1961 | 1962 | slice-ansi@7.1.0: 1963 | dependencies: 1964 | ansi-styles: 6.2.1 1965 | is-fullwidth-code-point: 5.0.0 1966 | 1967 | source-map-js@1.0.2: {} 1968 | 1969 | space-separated-tokens@1.1.5: {} 1970 | 1971 | string-argv@0.3.2: {} 1972 | 1973 | string-width@7.0.0: 1974 | dependencies: 1975 | emoji-regex: 10.3.0 1976 | get-east-asian-width: 1.2.0 1977 | strip-ansi: 7.1.0 1978 | 1979 | string_decoder@1.1.1: 1980 | dependencies: 1981 | safe-buffer: 5.1.2 1982 | 1983 | strip-ansi@7.1.0: 1984 | dependencies: 1985 | ansi-regex: 6.0.1 1986 | 1987 | strip-final-newline@3.0.0: {} 1988 | 1989 | sucrase@3.34.0: 1990 | dependencies: 1991 | '@jridgewell/gen-mapping': 0.3.3 1992 | commander: 4.1.1 1993 | glob: 7.1.6 1994 | lines-and-columns: 1.2.4 1995 | mz: 2.7.0 1996 | pirates: 4.0.6 1997 | ts-interface-checker: 0.1.13 1998 | 1999 | supports-preserve-symlinks-flag@1.0.0: {} 2000 | 2001 | tailwindcss@3.3.6: 2002 | dependencies: 2003 | '@alloc/quick-lru': 5.2.0 2004 | arg: 5.0.2 2005 | chokidar: 3.5.3 2006 | didyoumean: 1.2.2 2007 | dlv: 1.1.3 2008 | fast-glob: 3.3.2 2009 | glob-parent: 6.0.2 2010 | is-glob: 4.0.3 2011 | jiti: 1.21.0 2012 | lilconfig: 2.1.0 2013 | micromatch: 4.0.5 2014 | normalize-path: 3.0.0 2015 | object-hash: 3.0.0 2016 | picocolors: 1.0.0 2017 | postcss: 8.4.32 2018 | postcss-import: 15.1.0(postcss@8.4.32) 2019 | postcss-js: 4.0.1(postcss@8.4.32) 2020 | postcss-load-config: 4.0.2(postcss@8.4.32) 2021 | postcss-nested: 6.0.1(postcss@8.4.32) 2022 | postcss-selector-parser: 6.0.13 2023 | resolve: 1.22.8 2024 | sucrase: 3.34.0 2025 | transitivePeerDependencies: 2026 | - ts-node 2027 | 2028 | thenify-all@1.6.0: 2029 | dependencies: 2030 | thenify: 3.3.1 2031 | 2032 | thenify@3.3.1: 2033 | dependencies: 2034 | any-promise: 1.3.0 2035 | 2036 | to-regex-range@5.0.1: 2037 | dependencies: 2038 | is-number: 7.0.0 2039 | 2040 | ts-interface-checker@0.1.13: {} 2041 | 2042 | type-fest@3.13.1: {} 2043 | 2044 | typescript@5.0.4: {} 2045 | 2046 | undici-types@5.26.5: {} 2047 | 2048 | update-browserslist-db@1.0.13(browserslist@4.22.2): 2049 | dependencies: 2050 | browserslist: 4.22.2 2051 | escalade: 3.1.1 2052 | picocolors: 1.0.0 2053 | 2054 | util-deprecate@1.0.2: {} 2055 | 2056 | vite@5.0.7(@types/node@20.10.4): 2057 | dependencies: 2058 | esbuild: 0.19.8 2059 | postcss: 8.4.32 2060 | rollup: 4.7.0 2061 | optionalDependencies: 2062 | '@types/node': 20.10.4 2063 | fsevents: 2.3.3 2064 | 2065 | which@2.0.2: 2066 | dependencies: 2067 | isexe: 2.0.0 2068 | 2069 | wrap-ansi@9.0.0: 2070 | dependencies: 2071 | ansi-styles: 6.2.1 2072 | string-width: 7.0.0 2073 | strip-ansi: 7.1.0 2074 | 2075 | wrappy@1.0.2: {} 2076 | 2077 | xtend@4.0.2: {} 2078 | 2079 | yaml@2.3.4: {} 2080 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /public/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelYuhe/Artifacts-for-ChatGPT/2ade76cd55306bfc462a44f123e6222767923990/public/cover.png -------------------------------------------------------------------------------- /public/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelYuhe/Artifacts-for-ChatGPT/2ade76cd55306bfc462a44f123e6222767923990/public/icon.png -------------------------------------------------------------------------------- /public/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelYuhe/Artifacts-for-ChatGPT/2ade76cd55306bfc462a44f123e6222767923990/public/icon128.png -------------------------------------------------------------------------------- /public/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelYuhe/Artifacts-for-ChatGPT/2ade76cd55306bfc462a44f123e6222767923990/public/icon16.png -------------------------------------------------------------------------------- /public/icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelYuhe/Artifacts-for-ChatGPT/2ade76cd55306bfc462a44f123e6222767923990/public/icon32.png -------------------------------------------------------------------------------- /public/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelYuhe/Artifacts-for-ChatGPT/2ade76cd55306bfc462a44f123e6222767923990/public/icon48.png -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "Artifacts for ChatGPT", 4 | "description": "Instantly preview and deploy artifacts crafted by ChatGPT.", 5 | "version": "1.0", 6 | "options_ui": { 7 | "page": "options.html", 8 | "open_in_tab": true 9 | }, 10 | "side_panel": { 11 | "default_path": "sidepanel.html" 12 | }, 13 | "action": { 14 | "default_icon": "icon.png" 15 | }, 16 | "content_scripts": [ 17 | { 18 | "matches": [""], 19 | "js": ["content_script.js"] 20 | } 21 | ], 22 | "background": { 23 | "type": "module", 24 | "service_worker": "service_worker.js" 25 | }, 26 | "permissions": ["sidePanel", "storage"], 27 | "host_permissions": [""] 28 | } 29 | -------------------------------------------------------------------------------- /sidePanel.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Starter 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/background.ts: -------------------------------------------------------------------------------- 1 | // @ts-ignore 2 | chrome.sidePanel 3 | .setPanelBehavior({ openPanelOnActionClick: true }) 4 | .catch((error: any) => console.error(error)); 5 | 6 | chrome.storage.onChanged.addListener((changes, area) => { 7 | if (area === "local") { 8 | for (let [key, { oldValue, newValue }] of Object.entries(changes)) { 9 | chrome.runtime.sendMessage({ key, newValue }); 10 | } 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /src/content-script.ts: -------------------------------------------------------------------------------- 1 | export interface Code { 2 | title: string; 3 | language: string; 4 | content: string; 5 | } 6 | 7 | const getCodes = () => { 8 | const pres = document.querySelectorAll("pre"); 9 | if (!pres) return; 10 | 11 | const codes: Code[] = []; 12 | 13 | pres.forEach((pre) => { 14 | const header = pre.children[0].children[0]; 15 | if (!header) return; 16 | 17 | const language = header.children[0]; 18 | if (!language) return; 19 | 20 | const content = pre.children[0].children[1].children[0]; 21 | if (!content) return; 22 | 23 | const title = language.textContent || ""; 24 | let newTitle = title; 25 | 26 | let i = 1; 27 | while (codes.some((code) => code.title === newTitle)) { 28 | newTitle = `${title}-${i}`; 29 | i++; 30 | } 31 | 32 | codes.push({ 33 | title: newTitle || "", 34 | language: language.textContent || "", 35 | content: content.textContent || "", 36 | }); 37 | }); 38 | 39 | chrome.storage.local.set({ codes: codes }); 40 | }; 41 | 42 | const observer = new MutationObserver((mutations) => { 43 | mutations.forEach((mutation) => { 44 | if (mutation.type === "childList") { 45 | getCodes(); 46 | } 47 | }); 48 | }); 49 | 50 | observer.observe(document.body, { childList: true, subtree: true }); 51 | -------------------------------------------------------------------------------- /src/deploy.ts: -------------------------------------------------------------------------------- 1 | import JSZip from "jszip"; 2 | 3 | const API_URL = "https://gateway.zeabur.com/graphql"; 4 | 5 | async function deployToZeabur(codes: string, name: string, language: string) { 6 | const convertedName = convertTitle(name); 7 | const file = new File([codes], `index.${language}`, { 8 | type: "text/plain", 9 | }); 10 | 11 | const zip = new JSZip(); 12 | 13 | zip.file(file.name, file); 14 | 15 | const content = await zip.generateAsync({ type: "blob" }); 16 | const domain = await deploy(content, convertedName); 17 | 18 | return domain; 19 | } 20 | 21 | async function createTemporaryProject(): Promise { 22 | try { 23 | const res = await fetch(API_URL, { 24 | method: "POST", 25 | headers: { 26 | "Content-Type": "application/json", 27 | }, 28 | body: JSON.stringify({ 29 | query: `mutation CreateTemporaryProject() { 30 | createTemporaryProject() { 31 | _id 32 | } 33 | }`, 34 | }), 35 | }); 36 | 37 | const { data } = await res.json(); 38 | 39 | return data.createTemporaryProject._id; 40 | } catch (error) { 41 | console.error(error); 42 | throw error; 43 | } 44 | } 45 | 46 | async function createService( 47 | projectID: string, 48 | serviceName: string 49 | ): Promise { 50 | try { 51 | const res = await fetch(API_URL, { 52 | method: "POST", 53 | headers: { 54 | "Content-Type": "application/json", 55 | }, 56 | body: JSON.stringify({ 57 | query: `mutation CreateService($projectID: ObjectID!, $template: ServiceTemplate!, $name: String!) { 58 | createService(projectID: $projectID, template: $template, name: $name) { 59 | _id 60 | } 61 | }`, 62 | variables: { 63 | projectID, 64 | template: "GIT", 65 | name: serviceName, 66 | }, 67 | }), 68 | }); 69 | 70 | const { data } = await res.json(); 71 | 72 | return data.createService._id; 73 | } catch (error) { 74 | console.error(error); 75 | throw error; 76 | } 77 | } 78 | 79 | async function getEnvironment(projectID: string): Promise { 80 | try { 81 | const res = await fetch(API_URL, { 82 | method: "POST", 83 | headers: { 84 | "Content-Type": "application/json", 85 | }, 86 | body: JSON.stringify({ 87 | query: `query GetEnvironment($projectID: ObjectID!) { 88 | environments(projectID: $projectID) { 89 | _id 90 | } 91 | }`, 92 | variables: { 93 | projectID, 94 | }, 95 | }), 96 | }); 97 | 98 | const { data } = await res.json(); 99 | 100 | return data.environments[0]._id; 101 | } catch (error) { 102 | console.error(error); 103 | throw error; 104 | } 105 | } 106 | 107 | async function createDomain( 108 | serviceID: string, 109 | environmentID: string, 110 | serviceName: string, 111 | domainName?: string 112 | ): Promise { 113 | try { 114 | const res = await fetch(API_URL, { 115 | method: "POST", 116 | headers: { 117 | "Content-Type": "application/json", 118 | }, 119 | body: JSON.stringify({ 120 | query: `mutation CreateDomain($serviceID: ObjectID!, $environmentID: ObjectID!, $domain: String!, $isGenerated: Boolean!) { 121 | addDomain(serviceID: $serviceID, environmentID: $environmentID, domain: $domain, isGenerated: $isGenerated) { 122 | domain 123 | } 124 | }`, 125 | variables: { 126 | serviceID, 127 | environmentID, 128 | domain: domainName ?? `${serviceName + generateRandomString()}`, 129 | isGenerated: true, 130 | }, 131 | }), 132 | }); 133 | 134 | const { data } = await res.json(); 135 | return data.addDomain.domain; 136 | } catch (error) { 137 | console.error(error); 138 | throw error; 139 | } 140 | } 141 | 142 | async function deploy(code: Blob, serviceName: string) { 143 | try { 144 | if (!code) throw new Error("Code is required"); 145 | 146 | const projectID = await createTemporaryProject(); 147 | const environmentID = await getEnvironment(projectID); 148 | const serviceID = await createService(projectID, serviceName); 149 | 150 | const formData = new FormData(); 151 | formData.append("environment", environmentID); 152 | formData.append("code", code, "code.zip"); 153 | 154 | await fetch( 155 | `https://gateway.zeabur.com/projects/${projectID}/services/${serviceID}/deploy`, 156 | { 157 | method: "POST", 158 | body: formData, 159 | } 160 | ); 161 | 162 | const domain = await createDomain(serviceID, environmentID, serviceName); 163 | 164 | return { 165 | projectID, 166 | domain, 167 | }; 168 | } catch (error) { 169 | console.error(error); 170 | throw error; 171 | } 172 | } 173 | 174 | function convertTitle(title: string) { 175 | return title.replace(/[^a-zA-Z0-9]/g, "-").toLowerCase(); 176 | } 177 | 178 | function generateRandomString() { 179 | let result = ""; 180 | const characters = "abcdefghijklmnopqrstuvwxyz"; 181 | const charactersLength = characters.length; 182 | for (let i = 0; i < 6; i++) { 183 | result += characters.charAt(Math.floor(Math.random() * charactersLength)); 184 | } 185 | return result; 186 | } 187 | 188 | export { deployToZeabur }; 189 | -------------------------------------------------------------------------------- /src/options.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; -------------------------------------------------------------------------------- /src/options.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { createRoot } from "react-dom/client"; 3 | import "./options.css"; 4 | 5 | const Options = () => { 6 | return ( 7 |
8 |
9 |

10 | Options Page 11 |

12 |
13 |
14 | ); 15 | }; 16 | 17 | const root = createRoot(document.getElementById("root")!); 18 | 19 | root.render( 20 | 21 | 22 | 23 | ); 24 | -------------------------------------------------------------------------------- /src/sidePanel.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; -------------------------------------------------------------------------------- /src/sidePanel.tsx: -------------------------------------------------------------------------------- 1 | import { createRoot } from "react-dom/client"; 2 | import SyntaxHighlighter from "react-syntax-highlighter"; 3 | import { docco } from "react-syntax-highlighter/dist/esm/styles/hljs"; 4 | import "./sidePanel.css"; 5 | import React, { useEffect, useMemo, useRef, useState } from "react"; 6 | import { Code } from "./content-script"; 7 | import { deployToZeabur } from "./deploy"; 8 | 9 | const SidePanel = () => { 10 | const iframeRef = useRef(null); 11 | 12 | const [codes, setCodes] = useState([]); 13 | const [selectedCode, setSelectedCode] = useState(null); 14 | const [mode, setMode] = useState<"codes" | "preview">("codes"); 15 | const [domain, setDomain] = useState(null); 16 | const [isDeploying, setIsDeploying] = useState(false); 17 | const [currentUrl, setCurrentUrl] = useState(""); 18 | const [projectID, setProjectID] = useState(""); 19 | 20 | const chatID = 21 | useMemo(() => { 22 | const splited = currentUrl.split("/"); 23 | if (splited.length < 5) return ""; 24 | 25 | return splited[4]; 26 | }, [currentUrl]) || ""; 27 | 28 | const dashURL = 29 | useMemo(() => { 30 | return "https://dash.zeabur.com/projects/" + projectID; 31 | }, [projectID]) || ""; 32 | 33 | // listen for messages from the background script 34 | useEffect(() => { 35 | chrome.runtime.onMessage.addListener((message) => { 36 | if (!message) return; 37 | 38 | console.log("Message received in SidePanel:", message); 39 | const { key, newValue } = message; 40 | 41 | if (key === "codes") { 42 | setCodes(newValue); 43 | } 44 | }); 45 | }, []); 46 | 47 | // get the current tab URL 48 | useEffect(() => { 49 | const getCurrentUrl = () => { 50 | chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { 51 | setCurrentUrl(tabs[0].url || ""); 52 | }); 53 | }; 54 | 55 | getCurrentUrl(); 56 | 57 | // Optional: Set up a listener for tab updates 58 | const tabUpdateListener = (tabId: any, changeInfo: any, tab: any) => { 59 | if (changeInfo.status === "complete") { 60 | getCurrentUrl(); 61 | } 62 | }; 63 | 64 | chrome.tabs.onUpdated.addListener(tabUpdateListener); 65 | 66 | return () => { 67 | chrome.tabs.onUpdated.removeListener(tabUpdateListener); 68 | }; 69 | }, []); 70 | 71 | useEffect(() => { 72 | setMode("codes"); 73 | }, [selectedCode]); 74 | 75 | function getAllSavedArtifacts() { 76 | chrome.storage.local.get(["chatID", "codes"], (result) => { 77 | console.log(result); 78 | }); 79 | } 80 | 81 | function saveArtifactsToProject() { 82 | chrome.storage.local.set({ 83 | chatID, 84 | codes, 85 | }); 86 | } 87 | 88 | return ( 89 |
90 | {/* */} 96 | 97 |
98 | {domain && ( 99 |
100 | Deployed to: 101 | 102 | 107 | {domain} 108 | 109 |
110 | )} 111 | 112 | {projectID && ( 113 | 118 | Claim the project on Zeabur 119 | 120 | )} 121 |
122 | 123 |
    124 | {codes.map((code, index) => ( 125 |
  • setSelectedCode(code)} 134 | key={index} 135 | > 136 | {code.title} 137 |
  • 138 | ))} 139 |
140 | 141 | {selectedCode && ( 142 |
143 |
144 | 154 | 155 | {selectedCode.language === "html" && ( 156 | 166 | )} 167 | 168 | {selectedCode.language === "html" && ( 169 | 198 | )} 199 | 200 | 206 |
207 | 208 | {mode === "preview" && selectedCode.language === "html" && ( 209 |