├── .github ├── FUNDING.yml └── workflows │ └── platformatic.yaml ├── .gitignore ├── README.md ├── index.html ├── index.tsx ├── layout.tsx ├── main.css ├── package.json ├── pages ├── detail.tsx └── list.tsx ├── pnpm-lock.yaml ├── postcss.config.cjs ├── server.tsx ├── tsconfig.json └── util.ts /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: tejasq # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.github/workflows/platformatic.yaml: -------------------------------------------------------------------------------- 1 | name: Deploy Platformatic DB application to the cloud 2 | 3 | on: 4 | push: 5 | paths-ignore: 6 | - "docs/**" 7 | - "**.md" 8 | 9 | jobs: 10 | build_and_deploy: 11 | permissions: 12 | contents: read 13 | pull-requests: write 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Checkout application project repository 17 | uses: actions/checkout@v3 18 | - name: npm install --omit=dev 19 | run: npm install --omit=dev 20 | - name: Deploy project 21 | uses: platformatic/onestep@v1 22 | with: 23 | github_token: ${{ secrets.GITHUB_TOKEN }} 24 | platformatic_workspace_id: ccd11b9c-5b0d-4479-990b-c4e67b9cd3b6 25 | platformatic_workspace_key: ${{ secrets.PLATFORMATIC_WORKSPACE_KEY }} 26 | variables: custom_variable1, custom_variable2 27 | secrets: custom_secret1 28 | env: 29 | plt_custom_variable: test1 30 | custom_variable1: test2 31 | custom_variable2: test3 32 | custom_secret1: test5 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/node,macos,next,typescript,react,visualstudiocode,nextjs,solidjs,qwik,mitosis 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=node,macos,next,typescript,react,visualstudiocode,nextjs,solidjs,qwik,mitosis 3 | 4 | ### macOS ### 5 | # General 6 | .DS_Store 7 | .AppleDouble 8 | .LSOverride 9 | 10 | # Icon must end with two \r 11 | Icon 12 | 13 | # Thumbnails 14 | ._* 15 | 16 | # Files that might appear in the root of a volume 17 | .DocumentRevisions-V100 18 | .fseventsd 19 | .Spotlight-V100 20 | .TemporaryItems 21 | .Trashes 22 | .VolumeIcon.icns 23 | .com.apple.timemachine.donotpresent 24 | 25 | # Directories potentially created on remote AFP share 26 | .AppleDB 27 | .AppleDesktop 28 | Network Trash Folder 29 | Temporary Items 30 | .apdisk 31 | 32 | ### macOS Patch ### 33 | # iCloud generated files 34 | *.icloud 35 | 36 | #!! ERROR: mitosis is undefined. Use list command to see defined gitignore types !!# 37 | 38 | #!! ERROR: next is undefined. Use list command to see defined gitignore types !!# 39 | 40 | ### NextJS ### 41 | # dependencies 42 | /node_modules 43 | /.pnp 44 | .pnp.js 45 | 46 | # testing 47 | /coverage 48 | 49 | # next.js 50 | /.next/ 51 | /out/ 52 | 53 | # production 54 | /build 55 | 56 | # misc 57 | *.pem 58 | 59 | # debug 60 | npm-debug.log* 61 | yarn-debug.log* 62 | yarn-error.log* 63 | .pnpm-debug.log* 64 | 65 | # local env files 66 | .env*.local 67 | 68 | # vercel 69 | .vercel 70 | 71 | # typescript 72 | *.tsbuildinfo 73 | next-env.d.ts 74 | 75 | ### Node ### 76 | # Logs 77 | logs 78 | *.log 79 | lerna-debug.log* 80 | 81 | # Diagnostic reports (https://nodejs.org/api/report.html) 82 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 83 | 84 | # Runtime data 85 | pids 86 | *.pid 87 | *.seed 88 | *.pid.lock 89 | 90 | # Directory for instrumented libs generated by jscoverage/JSCover 91 | lib-cov 92 | 93 | # Coverage directory used by tools like istanbul 94 | coverage 95 | *.lcov 96 | 97 | # nyc test coverage 98 | .nyc_output 99 | 100 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 101 | .grunt 102 | 103 | # Bower dependency directory (https://bower.io/) 104 | bower_components 105 | 106 | # node-waf configuration 107 | .lock-wscript 108 | 109 | # Compiled binary addons (https://nodejs.org/api/addons.html) 110 | build/Release 111 | 112 | # Dependency directories 113 | node_modules/ 114 | jspm_packages/ 115 | 116 | # Snowpack dependency directory (https://snowpack.dev/) 117 | web_modules/ 118 | 119 | # TypeScript cache 120 | 121 | # Optional npm cache directory 122 | .npm 123 | 124 | # Optional eslint cache 125 | .eslintcache 126 | 127 | # Optional stylelint cache 128 | .stylelintcache 129 | 130 | # Microbundle cache 131 | .rpt2_cache/ 132 | .rts2_cache_cjs/ 133 | .rts2_cache_es/ 134 | .rts2_cache_umd/ 135 | 136 | # Optional REPL history 137 | .node_repl_history 138 | 139 | # Output of 'npm pack' 140 | *.tgz 141 | 142 | # Yarn Integrity file 143 | .yarn-integrity 144 | 145 | # dotenv environment variable files 146 | .env 147 | .env.development.local 148 | .env.test.local 149 | .env.production.local 150 | .env.local 151 | 152 | # parcel-bundler cache (https://parceljs.org/) 153 | .cache 154 | .parcel-cache 155 | 156 | # Next.js build output 157 | .next 158 | out 159 | 160 | # Nuxt.js build / generate output 161 | .nuxt 162 | dist 163 | 164 | # Gatsby files 165 | .cache/ 166 | # Comment in the public line in if your project uses Gatsby and not Next.js 167 | # https://nextjs.org/blog/next-9-1#public-directory-support 168 | # public 169 | 170 | # vuepress build output 171 | .vuepress/dist 172 | 173 | # vuepress v2.x temp and cache directory 174 | .temp 175 | 176 | # Docusaurus cache and generated files 177 | .docusaurus 178 | 179 | # Serverless directories 180 | .serverless/ 181 | 182 | # FuseBox cache 183 | .fusebox/ 184 | 185 | # DynamoDB Local files 186 | .dynamodb/ 187 | 188 | # TernJS port file 189 | .tern-port 190 | 191 | # Stores VSCode versions used for testing VSCode extensions 192 | .vscode-test 193 | 194 | # yarn v2 195 | .yarn/cache 196 | .yarn/unplugged 197 | .yarn/build-state.yml 198 | .yarn/install-state.gz 199 | .pnp.* 200 | 201 | ### Node Patch ### 202 | # Serverless Webpack directories 203 | .webpack/ 204 | 205 | # Optional stylelint cache 206 | 207 | # SvelteKit build / generate output 208 | .svelte-kit 209 | 210 | #!! ERROR: qwik is undefined. Use list command to see defined gitignore types !!# 211 | 212 | ### react ### 213 | .DS_* 214 | **/*.backup.* 215 | **/*.back.* 216 | 217 | node_modules 218 | 219 | *.sublime* 220 | 221 | psd 222 | thumb 223 | sketch 224 | 225 | #!! ERROR: solidjs is undefined. Use list command to see defined gitignore types !!# 226 | 227 | #!! ERROR: typescript is undefined. Use list command to see defined gitignore types !!# 228 | 229 | ### VisualStudioCode ### 230 | .vscode/* 231 | !.vscode/settings.json 232 | !.vscode/tasks.json 233 | !.vscode/launch.json 234 | !.vscode/extensions.json 235 | !.vscode/*.code-snippets 236 | 237 | # Local History for Visual Studio Code 238 | .history/ 239 | 240 | # Built Visual Studio Code Extensions 241 | *.vsix 242 | 243 | ### VisualStudioCode Patch ### 244 | # Ignore all local history of files 245 | .history 246 | .ionide 247 | 248 | # End of https://www.toptal.com/developers/gitignore/api/node,macos,next,typescript,react,visualstudiocode,nextjs,solidjs,qwik,mitosis 249 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React Server Components from Scratch 2 | 3 | [Watch on YouTube](https://youtu.be/F83wMYl9GWM) 4 | 5 | This video applies things Dan Abramov taught in [his GitHub discussion](https://github.com/reactwg/server-components/discussions/5). 6 | 7 | Please note that this is a streamlined, barebones model that takes a significant number of shortcuts and isn't fully representative of the complete, in-depth implementation. It's designed to give you a working knowledge of React and Next.js, allowing you to comprehend the operations occurring behind the scenes. This should teach you how server components _works_, not how to use server components. 8 | 9 | ## How to Use 10 | 11 | This repo has 2 branches: 12 | 13 | - `main` for the starting point, and 14 | - `spoild` for the finishing one. 15 | 16 | Feel free to browse them as necessary. You can also clone the repo and run `git checkout ` to switch between them. 17 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { hydrateRoot } from "react-dom/client"; 3 | import Layout from "./layout"; 4 | import List from "./pages/list"; 5 | import Detail from "./pages/detail"; 6 | 7 | const searchParams = new URLSearchParams(location.search); 8 | const breed = searchParams.get("breed"); 9 | 10 | const root = hydrateRoot( 11 | document, 12 | 13 | {location.pathname === "/list" ? : } 14 | 15 | ); 16 | -------------------------------------------------------------------------------- /layout.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Layout = ({ children, bgColor }) => { 4 | return ( 5 | 6 | 7 | 8 | Teju RSC 9 | 10 | 11 | 18 |
19 | 20 | 🐶 21 | 22 | RSC Thingy 23 |
24 | 25 | 26 | Server time:{" "} 27 | {Intl.DateTimeFormat("de-DE", { 28 | hour12: true, 29 | hour: "2-digit", 30 | minute: "2-digit", 31 | second: "2-digit", 32 | }).format(Date.now())} 33 | 34 |
35 |
36 |
{children}
37 | 38 | 39 | ); 40 | }; 41 | 42 | export default Layout; 43 | -------------------------------------------------------------------------------- /main.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | all: unset; 4 | font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, 5 | Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; 6 | font-size: 16px; 7 | } 8 | 9 | * { 10 | box-sizing: border-box; 11 | } 12 | 13 | header { 14 | padding: 0.25rem 1rem; 15 | box-shadow: 0 2px 4px #ddd; 16 | font-weight: bold; 17 | display: flex; 18 | align-items: center; 19 | gap: 0.5rem; 20 | backdrop-filter: blur(12px); 21 | position: sticky; 22 | top: 0; 23 | left: 0; 24 | width: 100%; 25 | z-index: 100; 26 | } 27 | 28 | header div { 29 | margin-left: auto; 30 | display: flex; 31 | align-items: center; 32 | gap: 0.5rem; 33 | } 34 | 35 | a { 36 | text-decoration: none; 37 | color: currentColor; 38 | font-weight: bold; 39 | } 40 | 41 | main a { 42 | text-shadow: 0 0 4px white, 0 0 4px white, 0 0 4px white, 0 0 4px white; 43 | color: rgb(227, 44, 135); 44 | } 45 | 46 | main a:hover { 47 | color: #b86300; 48 | } 49 | 50 | main { 51 | padding: 1rem; 52 | } 53 | 54 | ul { 55 | display: grid; 56 | gap: 0.25rem; 57 | text-transform: capitalize; 58 | grid-template-columns: repeat(3, 1fr); 59 | } 60 | 61 | h1 { 62 | text-transform: capitalize; 63 | } 64 | 65 | img { 66 | border-radius: 0.5rem; 67 | overflow: hidden; 68 | } 69 | 70 | .logo { 71 | font-size: 2rem; 72 | animation: spin 2s infinite linear; 73 | } 74 | 75 | .grid { 76 | opacity: 0.2; 77 | position: absolute; 78 | top: 0; 79 | left: 0; 80 | max-width: 100vw; 81 | overflow: hidden; 82 | z-index: -1; 83 | max-height: 100vh; 84 | } 85 | 86 | .grid img { 87 | margin: 1rem; 88 | } 89 | 90 | @keyframes spin { 91 | from { 92 | transform: rotate(0deg); 93 | } 94 | 95 | to { 96 | transform: rotate(360deg); 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rsc", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "build:server": "esbuild --platform=node --bundle server.tsx --outfile=dist/server.js", 9 | "build:client": "esbuild --bundle index.tsx --outfile=dist/client.js", 10 | "build:tsc": "tsc", 11 | "build": "run-p build:*" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "ISC", 16 | "dependencies": { 17 | "express": "^4.18.2", 18 | "react": "^18.2.0", 19 | "react-dom": "^18.2.0" 20 | }, 21 | "devDependencies": { 22 | "@types/express": "^4.17.17", 23 | "@types/react": "^18.2.14", 24 | "@types/react-dom": "^18.2.6", 25 | "esbuild": "^0.18.10", 26 | "npm-run-all": "^4.1.5", 27 | "typescript": "5.2.0-dev.20230630", 28 | "vite": "^4.3.9" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /pages/detail.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from "react"; 2 | import { REMOTE_URL } from "../util"; 3 | 4 | const Detail = ({ breed }) => { 5 | const [imageUrl, setImageUrl] = useState(""); 6 | 7 | useEffect(() => { 8 | fetch(`${REMOTE_URL}/api/breed/${breed}/images/random`) 9 | .then((r) => r.json()) 10 | .then((data) => setImageUrl(data.message)); 11 | }, []); 12 | 13 | return ( 14 |
15 |

{breed}

16 |

This one is an especially good boi. Look how adorable it is!

17 | {breed} 18 |
19 | ); 20 | }; 21 | 22 | export default Detail; 23 | -------------------------------------------------------------------------------- /pages/list.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect } from "react"; 2 | import { REMOTE_URL } from "../util"; 3 | 4 | const List = () => { 5 | const [breeds, setBreeds] = React.useState([]); 6 | const [images, setImages] = React.useState([]); 7 | 8 | useEffect(() => { 9 | fetch(`${REMOTE_URL}/api/breeds/list/all`) 10 | .then((r) => r.json()) 11 | .then((data) => Object.keys(data.message)) 12 | .then(async (breeds) => { 13 | console.log(breeds); 14 | return [ 15 | breeds, 16 | await Promise.all( 17 | breeds.map((b) => 18 | fetch(`${REMOTE_URL}/api/breed/${b}/images/random`) 19 | .then((r) => r.json()) 20 | .then((data) => data.message) 21 | ) 22 | ), 23 | ]; 24 | }) 25 | .then(([breeds, images]) => { 26 | setBreeds(breeds); 27 | setImages(images); 28 | }); 29 | }, []); 30 | 31 | return ( 32 |
33 |

Welcome to my dog site!

34 |

35 | Here are some of my favorite good bois. They are so good, the goodest. I 36 | love them. Please click on one to go to its page. 37 |

38 | 45 |
46 | {images.map((i) => ( 47 | {i} 48 | ))} 49 |
50 |
51 | ); 52 | }; 53 | 54 | export default List; 55 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | express: 9 | specifier: ^4.18.2 10 | version: 4.18.2 11 | react: 12 | specifier: ^18.2.0 13 | version: 18.2.0 14 | react-dom: 15 | specifier: ^18.2.0 16 | version: 18.2.0(react@18.2.0) 17 | 18 | devDependencies: 19 | '@types/express': 20 | specifier: ^4.17.17 21 | version: 4.17.17 22 | '@types/react': 23 | specifier: ^18.2.14 24 | version: 18.2.14 25 | '@types/react-dom': 26 | specifier: ^18.2.6 27 | version: 18.2.6 28 | esbuild: 29 | specifier: ^0.18.10 30 | version: 0.18.10 31 | npm-run-all: 32 | specifier: ^4.1.5 33 | version: 4.1.5 34 | typescript: 35 | specifier: 5.2.0-dev.20230630 36 | version: 5.2.0-dev.20230630 37 | vite: 38 | specifier: ^4.3.9 39 | version: 4.3.9 40 | 41 | packages: 42 | 43 | /@esbuild/android-arm64@0.17.19: 44 | resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} 45 | engines: {node: '>=12'} 46 | cpu: [arm64] 47 | os: [android] 48 | requiresBuild: true 49 | dev: true 50 | optional: true 51 | 52 | /@esbuild/android-arm64@0.18.10: 53 | resolution: {integrity: sha512-ynm4naLbNbK0ajf9LUWtQB+6Vfg1Z/AplArqr4tGebC00Z6m9Y91OVIcjDa461wGcZwcaHYaZAab4yJxfhisTQ==} 54 | engines: {node: '>=12'} 55 | cpu: [arm64] 56 | os: [android] 57 | requiresBuild: true 58 | dev: true 59 | optional: true 60 | 61 | /@esbuild/android-arm@0.17.19: 62 | resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} 63 | engines: {node: '>=12'} 64 | cpu: [arm] 65 | os: [android] 66 | requiresBuild: true 67 | dev: true 68 | optional: true 69 | 70 | /@esbuild/android-arm@0.18.10: 71 | resolution: {integrity: sha512-3KClmVNd+Fku82uZJz5C4Rx8m1PPmWUFz5Zkw8jkpZPOmsq+EG1TTOtw1OXkHuX3WczOFQigrtf60B1ijKwNsg==} 72 | engines: {node: '>=12'} 73 | cpu: [arm] 74 | os: [android] 75 | requiresBuild: true 76 | dev: true 77 | optional: true 78 | 79 | /@esbuild/android-x64@0.17.19: 80 | resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} 81 | engines: {node: '>=12'} 82 | cpu: [x64] 83 | os: [android] 84 | requiresBuild: true 85 | dev: true 86 | optional: true 87 | 88 | /@esbuild/android-x64@0.18.10: 89 | resolution: {integrity: sha512-vFfXj8P9Yfjh54yqUDEHKzqzYuEfPyAOl3z7R9hjkwt+NCvbn9VMxX+IILnAfdImRBfYVItgSUsqGKhJFnBwZw==} 90 | engines: {node: '>=12'} 91 | cpu: [x64] 92 | os: [android] 93 | requiresBuild: true 94 | dev: true 95 | optional: true 96 | 97 | /@esbuild/darwin-arm64@0.17.19: 98 | resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} 99 | engines: {node: '>=12'} 100 | cpu: [arm64] 101 | os: [darwin] 102 | requiresBuild: true 103 | dev: true 104 | optional: true 105 | 106 | /@esbuild/darwin-arm64@0.18.10: 107 | resolution: {integrity: sha512-k2OJQ7ZxE6sVc91+MQeZH9gFeDAH2uIYALPAwTjTCvcPy9Dzrf7V7gFUQPYkn09zloWhQ+nvxWHia2x2ZLR0sQ==} 108 | engines: {node: '>=12'} 109 | cpu: [arm64] 110 | os: [darwin] 111 | requiresBuild: true 112 | dev: true 113 | optional: true 114 | 115 | /@esbuild/darwin-x64@0.17.19: 116 | resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} 117 | engines: {node: '>=12'} 118 | cpu: [x64] 119 | os: [darwin] 120 | requiresBuild: true 121 | dev: true 122 | optional: true 123 | 124 | /@esbuild/darwin-x64@0.18.10: 125 | resolution: {integrity: sha512-tnz/mdZk1L1Z3WpGjin/L2bKTe8/AKZpI8fcCLtH+gq8WXWsCNJSxlesAObV4qbtTl6pG5vmqFXfWUQ5hV8PAQ==} 126 | engines: {node: '>=12'} 127 | cpu: [x64] 128 | os: [darwin] 129 | requiresBuild: true 130 | dev: true 131 | optional: true 132 | 133 | /@esbuild/freebsd-arm64@0.17.19: 134 | resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} 135 | engines: {node: '>=12'} 136 | cpu: [arm64] 137 | os: [freebsd] 138 | requiresBuild: true 139 | dev: true 140 | optional: true 141 | 142 | /@esbuild/freebsd-arm64@0.18.10: 143 | resolution: {integrity: sha512-QJluV0LwBrbHnYYwSKC+K8RGz0g/EyhpQH1IxdoFT0nM7PfgjE+aS8wxq/KFEsU0JkL7U/EEKd3O8xVBxXb2aA==} 144 | engines: {node: '>=12'} 145 | cpu: [arm64] 146 | os: [freebsd] 147 | requiresBuild: true 148 | dev: true 149 | optional: true 150 | 151 | /@esbuild/freebsd-x64@0.17.19: 152 | resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} 153 | engines: {node: '>=12'} 154 | cpu: [x64] 155 | os: [freebsd] 156 | requiresBuild: true 157 | dev: true 158 | optional: true 159 | 160 | /@esbuild/freebsd-x64@0.18.10: 161 | resolution: {integrity: sha512-Hi/ycUkS6KTw+U9G5PK5NoK7CZboicaKUSVs0FSiPNtuCTzK6HNM4DIgniH7hFaeuszDS9T4dhAHWiLSt/Y5Ng==} 162 | engines: {node: '>=12'} 163 | cpu: [x64] 164 | os: [freebsd] 165 | requiresBuild: true 166 | dev: true 167 | optional: true 168 | 169 | /@esbuild/linux-arm64@0.17.19: 170 | resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} 171 | engines: {node: '>=12'} 172 | cpu: [arm64] 173 | os: [linux] 174 | requiresBuild: true 175 | dev: true 176 | optional: true 177 | 178 | /@esbuild/linux-arm64@0.18.10: 179 | resolution: {integrity: sha512-Nz6XcfRBOO7jSrVpKAyEyFOPGhySPNlgumSDhWAspdQQ11ub/7/NZDMhWDFReE9QH/SsCOCLQbdj0atAk/HMOQ==} 180 | engines: {node: '>=12'} 181 | cpu: [arm64] 182 | os: [linux] 183 | requiresBuild: true 184 | dev: true 185 | optional: true 186 | 187 | /@esbuild/linux-arm@0.17.19: 188 | resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} 189 | engines: {node: '>=12'} 190 | cpu: [arm] 191 | os: [linux] 192 | requiresBuild: true 193 | dev: true 194 | optional: true 195 | 196 | /@esbuild/linux-arm@0.18.10: 197 | resolution: {integrity: sha512-HfFoxY172tVHPIvJy+FHxzB4l8xU7e5cxmNS11cQ2jt4JWAukn/7LXaPdZid41UyTweqa4P/1zs201gRGCTwHw==} 198 | engines: {node: '>=12'} 199 | cpu: [arm] 200 | os: [linux] 201 | requiresBuild: true 202 | dev: true 203 | optional: true 204 | 205 | /@esbuild/linux-ia32@0.17.19: 206 | resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} 207 | engines: {node: '>=12'} 208 | cpu: [ia32] 209 | os: [linux] 210 | requiresBuild: true 211 | dev: true 212 | optional: true 213 | 214 | /@esbuild/linux-ia32@0.18.10: 215 | resolution: {integrity: sha512-otMdmSmkMe+pmiP/bZBjfphyAsTsngyT9RCYwoFzqrveAbux9nYitDTpdgToG0Z0U55+PnH654gCH2GQ1aB6Yw==} 216 | engines: {node: '>=12'} 217 | cpu: [ia32] 218 | os: [linux] 219 | requiresBuild: true 220 | dev: true 221 | optional: true 222 | 223 | /@esbuild/linux-loong64@0.17.19: 224 | resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} 225 | engines: {node: '>=12'} 226 | cpu: [loong64] 227 | os: [linux] 228 | requiresBuild: true 229 | dev: true 230 | optional: true 231 | 232 | /@esbuild/linux-loong64@0.18.10: 233 | resolution: {integrity: sha512-t8tjFuON1koxskzQ4VFoh0T5UDUMiLYjwf9Wktd0tx8AoK6xgU+5ubKOpWpcnhEQ2tESS5u0v6QuN8PX/ftwcQ==} 234 | engines: {node: '>=12'} 235 | cpu: [loong64] 236 | os: [linux] 237 | requiresBuild: true 238 | dev: true 239 | optional: true 240 | 241 | /@esbuild/linux-mips64el@0.17.19: 242 | resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} 243 | engines: {node: '>=12'} 244 | cpu: [mips64el] 245 | os: [linux] 246 | requiresBuild: true 247 | dev: true 248 | optional: true 249 | 250 | /@esbuild/linux-mips64el@0.18.10: 251 | resolution: {integrity: sha512-+dUkcVzcfEJHz3HEnVpIJu8z8Wdn2n/nWMWdl6FVPFGJAVySO4g3+XPzNKFytVFwf8hPVDwYXzVcu8GMFqsqZw==} 252 | engines: {node: '>=12'} 253 | cpu: [mips64el] 254 | os: [linux] 255 | requiresBuild: true 256 | dev: true 257 | optional: true 258 | 259 | /@esbuild/linux-ppc64@0.17.19: 260 | resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} 261 | engines: {node: '>=12'} 262 | cpu: [ppc64] 263 | os: [linux] 264 | requiresBuild: true 265 | dev: true 266 | optional: true 267 | 268 | /@esbuild/linux-ppc64@0.18.10: 269 | resolution: {integrity: sha512-sO3PjjxEGy+PY2qkGe2gwJbXdZN9wAYpVBZWFD0AwAoKuXRkWK0/zaMQ5ekUFJDRDCRm8x5U0Axaub7ynH/wVg==} 270 | engines: {node: '>=12'} 271 | cpu: [ppc64] 272 | os: [linux] 273 | requiresBuild: true 274 | dev: true 275 | optional: true 276 | 277 | /@esbuild/linux-riscv64@0.17.19: 278 | resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} 279 | engines: {node: '>=12'} 280 | cpu: [riscv64] 281 | os: [linux] 282 | requiresBuild: true 283 | dev: true 284 | optional: true 285 | 286 | /@esbuild/linux-riscv64@0.18.10: 287 | resolution: {integrity: sha512-JDtdbJg3yjDeXLv4lZYE1kiTnxv73/8cbPHY9T/dUKi8rYOM/k5b3W4UJLMUksuQ6nTm5c89W1nADsql6FW75A==} 288 | engines: {node: '>=12'} 289 | cpu: [riscv64] 290 | os: [linux] 291 | requiresBuild: true 292 | dev: true 293 | optional: true 294 | 295 | /@esbuild/linux-s390x@0.17.19: 296 | resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} 297 | engines: {node: '>=12'} 298 | cpu: [s390x] 299 | os: [linux] 300 | requiresBuild: true 301 | dev: true 302 | optional: true 303 | 304 | /@esbuild/linux-s390x@0.18.10: 305 | resolution: {integrity: sha512-NLuSKcp8WckjD2a7z5kzLiCywFwBTMlIxDNuud1AUGVuwBBJSkuubp6cNjJ0p5c6CZaA3QqUGwjHJBiG1SoOFw==} 306 | engines: {node: '>=12'} 307 | cpu: [s390x] 308 | os: [linux] 309 | requiresBuild: true 310 | dev: true 311 | optional: true 312 | 313 | /@esbuild/linux-x64@0.17.19: 314 | resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} 315 | engines: {node: '>=12'} 316 | cpu: [x64] 317 | os: [linux] 318 | requiresBuild: true 319 | dev: true 320 | optional: true 321 | 322 | /@esbuild/linux-x64@0.18.10: 323 | resolution: {integrity: sha512-wj2KRsCsFusli+6yFgNO/zmmLslislAWryJnodteRmGej7ZzinIbMdsyp13rVGde88zxJd5vercNYK9kuvlZaQ==} 324 | engines: {node: '>=12'} 325 | cpu: [x64] 326 | os: [linux] 327 | requiresBuild: true 328 | dev: true 329 | optional: true 330 | 331 | /@esbuild/netbsd-x64@0.17.19: 332 | resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} 333 | engines: {node: '>=12'} 334 | cpu: [x64] 335 | os: [netbsd] 336 | requiresBuild: true 337 | dev: true 338 | optional: true 339 | 340 | /@esbuild/netbsd-x64@0.18.10: 341 | resolution: {integrity: sha512-pQ9QqxEPI3cVRZyUtCoZxhZK3If+7RzR8L2yz2+TDzdygofIPOJFaAPkEJ5rYIbUO101RaiYxfdOBahYexLk5A==} 342 | engines: {node: '>=12'} 343 | cpu: [x64] 344 | os: [netbsd] 345 | requiresBuild: true 346 | dev: true 347 | optional: true 348 | 349 | /@esbuild/openbsd-x64@0.17.19: 350 | resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} 351 | engines: {node: '>=12'} 352 | cpu: [x64] 353 | os: [openbsd] 354 | requiresBuild: true 355 | dev: true 356 | optional: true 357 | 358 | /@esbuild/openbsd-x64@0.18.10: 359 | resolution: {integrity: sha512-k8GTIIW9I8pEEfoOUm32TpPMgSg06JhL5DO+ql66aLTkOQUs0TxCA67Wi7pv6z8iF8STCGcNbm3UWFHLuci+ag==} 360 | engines: {node: '>=12'} 361 | cpu: [x64] 362 | os: [openbsd] 363 | requiresBuild: true 364 | dev: true 365 | optional: true 366 | 367 | /@esbuild/sunos-x64@0.17.19: 368 | resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} 369 | engines: {node: '>=12'} 370 | cpu: [x64] 371 | os: [sunos] 372 | requiresBuild: true 373 | dev: true 374 | optional: true 375 | 376 | /@esbuild/sunos-x64@0.18.10: 377 | resolution: {integrity: sha512-vIGYJIdEI6d4JBucAx8py792G8J0GP40qSH+EvSt80A4zvGd6jph+5t1g+eEXcS2aRpgZw6CrssNCFZxTdEsxw==} 378 | engines: {node: '>=12'} 379 | cpu: [x64] 380 | os: [sunos] 381 | requiresBuild: true 382 | dev: true 383 | optional: true 384 | 385 | /@esbuild/win32-arm64@0.17.19: 386 | resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} 387 | engines: {node: '>=12'} 388 | cpu: [arm64] 389 | os: [win32] 390 | requiresBuild: true 391 | dev: true 392 | optional: true 393 | 394 | /@esbuild/win32-arm64@0.18.10: 395 | resolution: {integrity: sha512-kRhNcMZFGMW+ZHCarAM1ypr8OZs0k688ViUCetVCef9p3enFxzWeBg9h/575Y0nsFu0ZItluCVF5gMR2pwOEpA==} 396 | engines: {node: '>=12'} 397 | cpu: [arm64] 398 | os: [win32] 399 | requiresBuild: true 400 | dev: true 401 | optional: true 402 | 403 | /@esbuild/win32-ia32@0.17.19: 404 | resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} 405 | engines: {node: '>=12'} 406 | cpu: [ia32] 407 | os: [win32] 408 | requiresBuild: true 409 | dev: true 410 | optional: true 411 | 412 | /@esbuild/win32-ia32@0.18.10: 413 | resolution: {integrity: sha512-AR9PX1whYaYh9p0EOaKna0h48F/A101Mt/ag72+kMkkBZXPQ7cjbz2syXI/HI3OlBdUytSdHneljfjvUoqwqiQ==} 414 | engines: {node: '>=12'} 415 | cpu: [ia32] 416 | os: [win32] 417 | requiresBuild: true 418 | dev: true 419 | optional: true 420 | 421 | /@esbuild/win32-x64@0.17.19: 422 | resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} 423 | engines: {node: '>=12'} 424 | cpu: [x64] 425 | os: [win32] 426 | requiresBuild: true 427 | dev: true 428 | optional: true 429 | 430 | /@esbuild/win32-x64@0.18.10: 431 | resolution: {integrity: sha512-5sTkYhAGHNRr6bVf4RM0PsscqVr6/DBYdrlMh168oph3usid3lKHcHEEHmr34iZ9GHeeg2juFOxtpl6XyC3tpw==} 432 | engines: {node: '>=12'} 433 | cpu: [x64] 434 | os: [win32] 435 | requiresBuild: true 436 | dev: true 437 | optional: true 438 | 439 | /@types/body-parser@1.19.2: 440 | resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} 441 | dependencies: 442 | '@types/connect': 3.4.35 443 | '@types/node': 20.3.2 444 | dev: true 445 | 446 | /@types/connect@3.4.35: 447 | resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} 448 | dependencies: 449 | '@types/node': 20.3.2 450 | dev: true 451 | 452 | /@types/express-serve-static-core@4.17.35: 453 | resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} 454 | dependencies: 455 | '@types/node': 20.3.2 456 | '@types/qs': 6.9.7 457 | '@types/range-parser': 1.2.4 458 | '@types/send': 0.17.1 459 | dev: true 460 | 461 | /@types/express@4.17.17: 462 | resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} 463 | dependencies: 464 | '@types/body-parser': 1.19.2 465 | '@types/express-serve-static-core': 4.17.35 466 | '@types/qs': 6.9.7 467 | '@types/serve-static': 1.15.2 468 | dev: true 469 | 470 | /@types/http-errors@2.0.1: 471 | resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} 472 | dev: true 473 | 474 | /@types/mime@1.3.2: 475 | resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} 476 | dev: true 477 | 478 | /@types/mime@3.0.1: 479 | resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} 480 | dev: true 481 | 482 | /@types/node@20.3.2: 483 | resolution: {integrity: sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==} 484 | dev: true 485 | 486 | /@types/prop-types@15.7.5: 487 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 488 | dev: true 489 | 490 | /@types/qs@6.9.7: 491 | resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} 492 | dev: true 493 | 494 | /@types/range-parser@1.2.4: 495 | resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} 496 | dev: true 497 | 498 | /@types/react-dom@18.2.6: 499 | resolution: {integrity: sha512-2et4PDvg6PVCyS7fuTc4gPoksV58bW0RwSxWKcPRcHZf0PRUGq03TKcD/rUHe3azfV6/5/biUBJw+HhCQjaP0A==} 500 | dependencies: 501 | '@types/react': 18.2.14 502 | dev: true 503 | 504 | /@types/react@18.2.14: 505 | resolution: {integrity: sha512-A0zjq+QN/O0Kpe30hA1GidzyFjatVvrpIvWLxD+xv67Vt91TWWgco9IvrJBkeyHm1trGaFS/FSGqPlhyeZRm0g==} 506 | dependencies: 507 | '@types/prop-types': 15.7.5 508 | '@types/scheduler': 0.16.3 509 | csstype: 3.1.2 510 | dev: true 511 | 512 | /@types/scheduler@0.16.3: 513 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 514 | dev: true 515 | 516 | /@types/send@0.17.1: 517 | resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} 518 | dependencies: 519 | '@types/mime': 1.3.2 520 | '@types/node': 20.3.2 521 | dev: true 522 | 523 | /@types/serve-static@1.15.2: 524 | resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} 525 | dependencies: 526 | '@types/http-errors': 2.0.1 527 | '@types/mime': 3.0.1 528 | '@types/node': 20.3.2 529 | dev: true 530 | 531 | /accepts@1.3.8: 532 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 533 | engines: {node: '>= 0.6'} 534 | dependencies: 535 | mime-types: 2.1.35 536 | negotiator: 0.6.3 537 | dev: false 538 | 539 | /ansi-styles@3.2.1: 540 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 541 | engines: {node: '>=4'} 542 | dependencies: 543 | color-convert: 1.9.3 544 | dev: true 545 | 546 | /array-buffer-byte-length@1.0.0: 547 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 548 | dependencies: 549 | call-bind: 1.0.2 550 | is-array-buffer: 3.0.2 551 | dev: true 552 | 553 | /array-flatten@1.1.1: 554 | resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 555 | dev: false 556 | 557 | /available-typed-arrays@1.0.5: 558 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 559 | engines: {node: '>= 0.4'} 560 | dev: true 561 | 562 | /balanced-match@1.0.2: 563 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 564 | dev: true 565 | 566 | /body-parser@1.20.1: 567 | resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} 568 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 569 | dependencies: 570 | bytes: 3.1.2 571 | content-type: 1.0.5 572 | debug: 2.6.9 573 | depd: 2.0.0 574 | destroy: 1.2.0 575 | http-errors: 2.0.0 576 | iconv-lite: 0.4.24 577 | on-finished: 2.4.1 578 | qs: 6.11.0 579 | raw-body: 2.5.1 580 | type-is: 1.6.18 581 | unpipe: 1.0.0 582 | transitivePeerDependencies: 583 | - supports-color 584 | dev: false 585 | 586 | /brace-expansion@1.1.11: 587 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 588 | dependencies: 589 | balanced-match: 1.0.2 590 | concat-map: 0.0.1 591 | dev: true 592 | 593 | /bytes@3.1.2: 594 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 595 | engines: {node: '>= 0.8'} 596 | dev: false 597 | 598 | /call-bind@1.0.2: 599 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 600 | dependencies: 601 | function-bind: 1.1.1 602 | get-intrinsic: 1.2.1 603 | 604 | /chalk@2.4.2: 605 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 606 | engines: {node: '>=4'} 607 | dependencies: 608 | ansi-styles: 3.2.1 609 | escape-string-regexp: 1.0.5 610 | supports-color: 5.5.0 611 | dev: true 612 | 613 | /color-convert@1.9.3: 614 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 615 | dependencies: 616 | color-name: 1.1.3 617 | dev: true 618 | 619 | /color-name@1.1.3: 620 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 621 | dev: true 622 | 623 | /concat-map@0.0.1: 624 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 625 | dev: true 626 | 627 | /content-disposition@0.5.4: 628 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 629 | engines: {node: '>= 0.6'} 630 | dependencies: 631 | safe-buffer: 5.2.1 632 | dev: false 633 | 634 | /content-type@1.0.5: 635 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 636 | engines: {node: '>= 0.6'} 637 | dev: false 638 | 639 | /cookie-signature@1.0.6: 640 | resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} 641 | dev: false 642 | 643 | /cookie@0.5.0: 644 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 645 | engines: {node: '>= 0.6'} 646 | dev: false 647 | 648 | /cross-spawn@6.0.5: 649 | resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} 650 | engines: {node: '>=4.8'} 651 | dependencies: 652 | nice-try: 1.0.5 653 | path-key: 2.0.1 654 | semver: 5.7.1 655 | shebang-command: 1.2.0 656 | which: 1.3.1 657 | dev: true 658 | 659 | /csstype@3.1.2: 660 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 661 | dev: true 662 | 663 | /debug@2.6.9: 664 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 665 | peerDependencies: 666 | supports-color: '*' 667 | peerDependenciesMeta: 668 | supports-color: 669 | optional: true 670 | dependencies: 671 | ms: 2.0.0 672 | dev: false 673 | 674 | /define-properties@1.2.0: 675 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} 676 | engines: {node: '>= 0.4'} 677 | dependencies: 678 | has-property-descriptors: 1.0.0 679 | object-keys: 1.1.1 680 | dev: true 681 | 682 | /depd@2.0.0: 683 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 684 | engines: {node: '>= 0.8'} 685 | dev: false 686 | 687 | /destroy@1.2.0: 688 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 689 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 690 | dev: false 691 | 692 | /ee-first@1.1.1: 693 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 694 | dev: false 695 | 696 | /encodeurl@1.0.2: 697 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 698 | engines: {node: '>= 0.8'} 699 | dev: false 700 | 701 | /error-ex@1.3.2: 702 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 703 | dependencies: 704 | is-arrayish: 0.2.1 705 | dev: true 706 | 707 | /es-abstract@1.21.2: 708 | resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} 709 | engines: {node: '>= 0.4'} 710 | dependencies: 711 | array-buffer-byte-length: 1.0.0 712 | available-typed-arrays: 1.0.5 713 | call-bind: 1.0.2 714 | es-set-tostringtag: 2.0.1 715 | es-to-primitive: 1.2.1 716 | function.prototype.name: 1.1.5 717 | get-intrinsic: 1.2.1 718 | get-symbol-description: 1.0.0 719 | globalthis: 1.0.3 720 | gopd: 1.0.1 721 | has: 1.0.3 722 | has-property-descriptors: 1.0.0 723 | has-proto: 1.0.1 724 | has-symbols: 1.0.3 725 | internal-slot: 1.0.5 726 | is-array-buffer: 3.0.2 727 | is-callable: 1.2.7 728 | is-negative-zero: 2.0.2 729 | is-regex: 1.1.4 730 | is-shared-array-buffer: 1.0.2 731 | is-string: 1.0.7 732 | is-typed-array: 1.1.10 733 | is-weakref: 1.0.2 734 | object-inspect: 1.12.3 735 | object-keys: 1.1.1 736 | object.assign: 4.1.4 737 | regexp.prototype.flags: 1.5.0 738 | safe-regex-test: 1.0.0 739 | string.prototype.trim: 1.2.7 740 | string.prototype.trimend: 1.0.6 741 | string.prototype.trimstart: 1.0.6 742 | typed-array-length: 1.0.4 743 | unbox-primitive: 1.0.2 744 | which-typed-array: 1.1.9 745 | dev: true 746 | 747 | /es-set-tostringtag@2.0.1: 748 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} 749 | engines: {node: '>= 0.4'} 750 | dependencies: 751 | get-intrinsic: 1.2.1 752 | has: 1.0.3 753 | has-tostringtag: 1.0.0 754 | dev: true 755 | 756 | /es-to-primitive@1.2.1: 757 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 758 | engines: {node: '>= 0.4'} 759 | dependencies: 760 | is-callable: 1.2.7 761 | is-date-object: 1.0.5 762 | is-symbol: 1.0.4 763 | dev: true 764 | 765 | /esbuild@0.17.19: 766 | resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} 767 | engines: {node: '>=12'} 768 | hasBin: true 769 | requiresBuild: true 770 | optionalDependencies: 771 | '@esbuild/android-arm': 0.17.19 772 | '@esbuild/android-arm64': 0.17.19 773 | '@esbuild/android-x64': 0.17.19 774 | '@esbuild/darwin-arm64': 0.17.19 775 | '@esbuild/darwin-x64': 0.17.19 776 | '@esbuild/freebsd-arm64': 0.17.19 777 | '@esbuild/freebsd-x64': 0.17.19 778 | '@esbuild/linux-arm': 0.17.19 779 | '@esbuild/linux-arm64': 0.17.19 780 | '@esbuild/linux-ia32': 0.17.19 781 | '@esbuild/linux-loong64': 0.17.19 782 | '@esbuild/linux-mips64el': 0.17.19 783 | '@esbuild/linux-ppc64': 0.17.19 784 | '@esbuild/linux-riscv64': 0.17.19 785 | '@esbuild/linux-s390x': 0.17.19 786 | '@esbuild/linux-x64': 0.17.19 787 | '@esbuild/netbsd-x64': 0.17.19 788 | '@esbuild/openbsd-x64': 0.17.19 789 | '@esbuild/sunos-x64': 0.17.19 790 | '@esbuild/win32-arm64': 0.17.19 791 | '@esbuild/win32-ia32': 0.17.19 792 | '@esbuild/win32-x64': 0.17.19 793 | dev: true 794 | 795 | /esbuild@0.18.10: 796 | resolution: {integrity: sha512-33WKo67auOXzZHBY/9DTJRo7kIvfU12S+D4sp2wIz39N88MDIaCGyCwbW01RR70pK6Iya0I74lHEpyLfFqOHPA==} 797 | engines: {node: '>=12'} 798 | hasBin: true 799 | requiresBuild: true 800 | optionalDependencies: 801 | '@esbuild/android-arm': 0.18.10 802 | '@esbuild/android-arm64': 0.18.10 803 | '@esbuild/android-x64': 0.18.10 804 | '@esbuild/darwin-arm64': 0.18.10 805 | '@esbuild/darwin-x64': 0.18.10 806 | '@esbuild/freebsd-arm64': 0.18.10 807 | '@esbuild/freebsd-x64': 0.18.10 808 | '@esbuild/linux-arm': 0.18.10 809 | '@esbuild/linux-arm64': 0.18.10 810 | '@esbuild/linux-ia32': 0.18.10 811 | '@esbuild/linux-loong64': 0.18.10 812 | '@esbuild/linux-mips64el': 0.18.10 813 | '@esbuild/linux-ppc64': 0.18.10 814 | '@esbuild/linux-riscv64': 0.18.10 815 | '@esbuild/linux-s390x': 0.18.10 816 | '@esbuild/linux-x64': 0.18.10 817 | '@esbuild/netbsd-x64': 0.18.10 818 | '@esbuild/openbsd-x64': 0.18.10 819 | '@esbuild/sunos-x64': 0.18.10 820 | '@esbuild/win32-arm64': 0.18.10 821 | '@esbuild/win32-ia32': 0.18.10 822 | '@esbuild/win32-x64': 0.18.10 823 | dev: true 824 | 825 | /escape-html@1.0.3: 826 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 827 | dev: false 828 | 829 | /escape-string-regexp@1.0.5: 830 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 831 | engines: {node: '>=0.8.0'} 832 | dev: true 833 | 834 | /etag@1.8.1: 835 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 836 | engines: {node: '>= 0.6'} 837 | dev: false 838 | 839 | /express@4.18.2: 840 | resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} 841 | engines: {node: '>= 0.10.0'} 842 | dependencies: 843 | accepts: 1.3.8 844 | array-flatten: 1.1.1 845 | body-parser: 1.20.1 846 | content-disposition: 0.5.4 847 | content-type: 1.0.5 848 | cookie: 0.5.0 849 | cookie-signature: 1.0.6 850 | debug: 2.6.9 851 | depd: 2.0.0 852 | encodeurl: 1.0.2 853 | escape-html: 1.0.3 854 | etag: 1.8.1 855 | finalhandler: 1.2.0 856 | fresh: 0.5.2 857 | http-errors: 2.0.0 858 | merge-descriptors: 1.0.1 859 | methods: 1.1.2 860 | on-finished: 2.4.1 861 | parseurl: 1.3.3 862 | path-to-regexp: 0.1.7 863 | proxy-addr: 2.0.7 864 | qs: 6.11.0 865 | range-parser: 1.2.1 866 | safe-buffer: 5.2.1 867 | send: 0.18.0 868 | serve-static: 1.15.0 869 | setprototypeof: 1.2.0 870 | statuses: 2.0.1 871 | type-is: 1.6.18 872 | utils-merge: 1.0.1 873 | vary: 1.1.2 874 | transitivePeerDependencies: 875 | - supports-color 876 | dev: false 877 | 878 | /finalhandler@1.2.0: 879 | resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} 880 | engines: {node: '>= 0.8'} 881 | dependencies: 882 | debug: 2.6.9 883 | encodeurl: 1.0.2 884 | escape-html: 1.0.3 885 | on-finished: 2.4.1 886 | parseurl: 1.3.3 887 | statuses: 2.0.1 888 | unpipe: 1.0.0 889 | transitivePeerDependencies: 890 | - supports-color 891 | dev: false 892 | 893 | /for-each@0.3.3: 894 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 895 | dependencies: 896 | is-callable: 1.2.7 897 | dev: true 898 | 899 | /forwarded@0.2.0: 900 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 901 | engines: {node: '>= 0.6'} 902 | dev: false 903 | 904 | /fresh@0.5.2: 905 | resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 906 | engines: {node: '>= 0.6'} 907 | dev: false 908 | 909 | /fsevents@2.3.2: 910 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 911 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 912 | os: [darwin] 913 | requiresBuild: true 914 | dev: true 915 | optional: true 916 | 917 | /function-bind@1.1.1: 918 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 919 | 920 | /function.prototype.name@1.1.5: 921 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 922 | engines: {node: '>= 0.4'} 923 | dependencies: 924 | call-bind: 1.0.2 925 | define-properties: 1.2.0 926 | es-abstract: 1.21.2 927 | functions-have-names: 1.2.3 928 | dev: true 929 | 930 | /functions-have-names@1.2.3: 931 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 932 | dev: true 933 | 934 | /get-intrinsic@1.2.1: 935 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} 936 | dependencies: 937 | function-bind: 1.1.1 938 | has: 1.0.3 939 | has-proto: 1.0.1 940 | has-symbols: 1.0.3 941 | 942 | /get-symbol-description@1.0.0: 943 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 944 | engines: {node: '>= 0.4'} 945 | dependencies: 946 | call-bind: 1.0.2 947 | get-intrinsic: 1.2.1 948 | dev: true 949 | 950 | /globalthis@1.0.3: 951 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 952 | engines: {node: '>= 0.4'} 953 | dependencies: 954 | define-properties: 1.2.0 955 | dev: true 956 | 957 | /gopd@1.0.1: 958 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 959 | dependencies: 960 | get-intrinsic: 1.2.1 961 | dev: true 962 | 963 | /graceful-fs@4.2.11: 964 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 965 | dev: true 966 | 967 | /has-bigints@1.0.2: 968 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 969 | dev: true 970 | 971 | /has-flag@3.0.0: 972 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 973 | engines: {node: '>=4'} 974 | dev: true 975 | 976 | /has-property-descriptors@1.0.0: 977 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 978 | dependencies: 979 | get-intrinsic: 1.2.1 980 | dev: true 981 | 982 | /has-proto@1.0.1: 983 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 984 | engines: {node: '>= 0.4'} 985 | 986 | /has-symbols@1.0.3: 987 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 988 | engines: {node: '>= 0.4'} 989 | 990 | /has-tostringtag@1.0.0: 991 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 992 | engines: {node: '>= 0.4'} 993 | dependencies: 994 | has-symbols: 1.0.3 995 | dev: true 996 | 997 | /has@1.0.3: 998 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 999 | engines: {node: '>= 0.4.0'} 1000 | dependencies: 1001 | function-bind: 1.1.1 1002 | 1003 | /hosted-git-info@2.8.9: 1004 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 1005 | dev: true 1006 | 1007 | /http-errors@2.0.0: 1008 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1009 | engines: {node: '>= 0.8'} 1010 | dependencies: 1011 | depd: 2.0.0 1012 | inherits: 2.0.4 1013 | setprototypeof: 1.2.0 1014 | statuses: 2.0.1 1015 | toidentifier: 1.0.1 1016 | dev: false 1017 | 1018 | /iconv-lite@0.4.24: 1019 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1020 | engines: {node: '>=0.10.0'} 1021 | dependencies: 1022 | safer-buffer: 2.1.2 1023 | dev: false 1024 | 1025 | /inherits@2.0.4: 1026 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1027 | dev: false 1028 | 1029 | /internal-slot@1.0.5: 1030 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} 1031 | engines: {node: '>= 0.4'} 1032 | dependencies: 1033 | get-intrinsic: 1.2.1 1034 | has: 1.0.3 1035 | side-channel: 1.0.4 1036 | dev: true 1037 | 1038 | /ipaddr.js@1.9.1: 1039 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1040 | engines: {node: '>= 0.10'} 1041 | dev: false 1042 | 1043 | /is-array-buffer@3.0.2: 1044 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 1045 | dependencies: 1046 | call-bind: 1.0.2 1047 | get-intrinsic: 1.2.1 1048 | is-typed-array: 1.1.10 1049 | dev: true 1050 | 1051 | /is-arrayish@0.2.1: 1052 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1053 | dev: true 1054 | 1055 | /is-bigint@1.0.4: 1056 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1057 | dependencies: 1058 | has-bigints: 1.0.2 1059 | dev: true 1060 | 1061 | /is-boolean-object@1.1.2: 1062 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1063 | engines: {node: '>= 0.4'} 1064 | dependencies: 1065 | call-bind: 1.0.2 1066 | has-tostringtag: 1.0.0 1067 | dev: true 1068 | 1069 | /is-callable@1.2.7: 1070 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1071 | engines: {node: '>= 0.4'} 1072 | dev: true 1073 | 1074 | /is-core-module@2.12.1: 1075 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} 1076 | dependencies: 1077 | has: 1.0.3 1078 | dev: true 1079 | 1080 | /is-date-object@1.0.5: 1081 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1082 | engines: {node: '>= 0.4'} 1083 | dependencies: 1084 | has-tostringtag: 1.0.0 1085 | dev: true 1086 | 1087 | /is-negative-zero@2.0.2: 1088 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1089 | engines: {node: '>= 0.4'} 1090 | dev: true 1091 | 1092 | /is-number-object@1.0.7: 1093 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1094 | engines: {node: '>= 0.4'} 1095 | dependencies: 1096 | has-tostringtag: 1.0.0 1097 | dev: true 1098 | 1099 | /is-regex@1.1.4: 1100 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1101 | engines: {node: '>= 0.4'} 1102 | dependencies: 1103 | call-bind: 1.0.2 1104 | has-tostringtag: 1.0.0 1105 | dev: true 1106 | 1107 | /is-shared-array-buffer@1.0.2: 1108 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1109 | dependencies: 1110 | call-bind: 1.0.2 1111 | dev: true 1112 | 1113 | /is-string@1.0.7: 1114 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1115 | engines: {node: '>= 0.4'} 1116 | dependencies: 1117 | has-tostringtag: 1.0.0 1118 | dev: true 1119 | 1120 | /is-symbol@1.0.4: 1121 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1122 | engines: {node: '>= 0.4'} 1123 | dependencies: 1124 | has-symbols: 1.0.3 1125 | dev: true 1126 | 1127 | /is-typed-array@1.1.10: 1128 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} 1129 | engines: {node: '>= 0.4'} 1130 | dependencies: 1131 | available-typed-arrays: 1.0.5 1132 | call-bind: 1.0.2 1133 | for-each: 0.3.3 1134 | gopd: 1.0.1 1135 | has-tostringtag: 1.0.0 1136 | dev: true 1137 | 1138 | /is-weakref@1.0.2: 1139 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1140 | dependencies: 1141 | call-bind: 1.0.2 1142 | dev: true 1143 | 1144 | /isexe@2.0.0: 1145 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1146 | dev: true 1147 | 1148 | /js-tokens@4.0.0: 1149 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1150 | dev: false 1151 | 1152 | /json-parse-better-errors@1.0.2: 1153 | resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} 1154 | dev: true 1155 | 1156 | /load-json-file@4.0.0: 1157 | resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} 1158 | engines: {node: '>=4'} 1159 | dependencies: 1160 | graceful-fs: 4.2.11 1161 | parse-json: 4.0.0 1162 | pify: 3.0.0 1163 | strip-bom: 3.0.0 1164 | dev: true 1165 | 1166 | /loose-envify@1.4.0: 1167 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1168 | hasBin: true 1169 | dependencies: 1170 | js-tokens: 4.0.0 1171 | dev: false 1172 | 1173 | /media-typer@0.3.0: 1174 | resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 1175 | engines: {node: '>= 0.6'} 1176 | dev: false 1177 | 1178 | /memorystream@0.3.1: 1179 | resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} 1180 | engines: {node: '>= 0.10.0'} 1181 | dev: true 1182 | 1183 | /merge-descriptors@1.0.1: 1184 | resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} 1185 | dev: false 1186 | 1187 | /methods@1.1.2: 1188 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 1189 | engines: {node: '>= 0.6'} 1190 | dev: false 1191 | 1192 | /mime-db@1.52.0: 1193 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1194 | engines: {node: '>= 0.6'} 1195 | dev: false 1196 | 1197 | /mime-types@2.1.35: 1198 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1199 | engines: {node: '>= 0.6'} 1200 | dependencies: 1201 | mime-db: 1.52.0 1202 | dev: false 1203 | 1204 | /mime@1.6.0: 1205 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 1206 | engines: {node: '>=4'} 1207 | hasBin: true 1208 | dev: false 1209 | 1210 | /minimatch@3.1.2: 1211 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1212 | dependencies: 1213 | brace-expansion: 1.1.11 1214 | dev: true 1215 | 1216 | /ms@2.0.0: 1217 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1218 | dev: false 1219 | 1220 | /ms@2.1.3: 1221 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1222 | dev: false 1223 | 1224 | /nanoid@3.3.6: 1225 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1226 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1227 | hasBin: true 1228 | dev: true 1229 | 1230 | /negotiator@0.6.3: 1231 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 1232 | engines: {node: '>= 0.6'} 1233 | dev: false 1234 | 1235 | /nice-try@1.0.5: 1236 | resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} 1237 | dev: true 1238 | 1239 | /normalize-package-data@2.5.0: 1240 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 1241 | dependencies: 1242 | hosted-git-info: 2.8.9 1243 | resolve: 1.22.2 1244 | semver: 5.7.1 1245 | validate-npm-package-license: 3.0.4 1246 | dev: true 1247 | 1248 | /npm-run-all@4.1.5: 1249 | resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} 1250 | engines: {node: '>= 4'} 1251 | hasBin: true 1252 | dependencies: 1253 | ansi-styles: 3.2.1 1254 | chalk: 2.4.2 1255 | cross-spawn: 6.0.5 1256 | memorystream: 0.3.1 1257 | minimatch: 3.1.2 1258 | pidtree: 0.3.1 1259 | read-pkg: 3.0.0 1260 | shell-quote: 1.8.1 1261 | string.prototype.padend: 3.1.4 1262 | dev: true 1263 | 1264 | /object-inspect@1.12.3: 1265 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 1266 | 1267 | /object-keys@1.1.1: 1268 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1269 | engines: {node: '>= 0.4'} 1270 | dev: true 1271 | 1272 | /object.assign@4.1.4: 1273 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 1274 | engines: {node: '>= 0.4'} 1275 | dependencies: 1276 | call-bind: 1.0.2 1277 | define-properties: 1.2.0 1278 | has-symbols: 1.0.3 1279 | object-keys: 1.1.1 1280 | dev: true 1281 | 1282 | /on-finished@2.4.1: 1283 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 1284 | engines: {node: '>= 0.8'} 1285 | dependencies: 1286 | ee-first: 1.1.1 1287 | dev: false 1288 | 1289 | /parse-json@4.0.0: 1290 | resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} 1291 | engines: {node: '>=4'} 1292 | dependencies: 1293 | error-ex: 1.3.2 1294 | json-parse-better-errors: 1.0.2 1295 | dev: true 1296 | 1297 | /parseurl@1.3.3: 1298 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 1299 | engines: {node: '>= 0.8'} 1300 | dev: false 1301 | 1302 | /path-key@2.0.1: 1303 | resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} 1304 | engines: {node: '>=4'} 1305 | dev: true 1306 | 1307 | /path-parse@1.0.7: 1308 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1309 | dev: true 1310 | 1311 | /path-to-regexp@0.1.7: 1312 | resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} 1313 | dev: false 1314 | 1315 | /path-type@3.0.0: 1316 | resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} 1317 | engines: {node: '>=4'} 1318 | dependencies: 1319 | pify: 3.0.0 1320 | dev: true 1321 | 1322 | /picocolors@1.0.0: 1323 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1324 | dev: true 1325 | 1326 | /pidtree@0.3.1: 1327 | resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} 1328 | engines: {node: '>=0.10'} 1329 | hasBin: true 1330 | dev: true 1331 | 1332 | /pify@3.0.0: 1333 | resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} 1334 | engines: {node: '>=4'} 1335 | dev: true 1336 | 1337 | /postcss@8.4.24: 1338 | resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} 1339 | engines: {node: ^10 || ^12 || >=14} 1340 | dependencies: 1341 | nanoid: 3.3.6 1342 | picocolors: 1.0.0 1343 | source-map-js: 1.0.2 1344 | dev: true 1345 | 1346 | /proxy-addr@2.0.7: 1347 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1348 | engines: {node: '>= 0.10'} 1349 | dependencies: 1350 | forwarded: 0.2.0 1351 | ipaddr.js: 1.9.1 1352 | dev: false 1353 | 1354 | /qs@6.11.0: 1355 | resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} 1356 | engines: {node: '>=0.6'} 1357 | dependencies: 1358 | side-channel: 1.0.4 1359 | dev: false 1360 | 1361 | /range-parser@1.2.1: 1362 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 1363 | engines: {node: '>= 0.6'} 1364 | dev: false 1365 | 1366 | /raw-body@2.5.1: 1367 | resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} 1368 | engines: {node: '>= 0.8'} 1369 | dependencies: 1370 | bytes: 3.1.2 1371 | http-errors: 2.0.0 1372 | iconv-lite: 0.4.24 1373 | unpipe: 1.0.0 1374 | dev: false 1375 | 1376 | /react-dom@18.2.0(react@18.2.0): 1377 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 1378 | peerDependencies: 1379 | react: ^18.2.0 1380 | dependencies: 1381 | loose-envify: 1.4.0 1382 | react: 18.2.0 1383 | scheduler: 0.23.0 1384 | dev: false 1385 | 1386 | /react@18.2.0: 1387 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 1388 | engines: {node: '>=0.10.0'} 1389 | dependencies: 1390 | loose-envify: 1.4.0 1391 | dev: false 1392 | 1393 | /read-pkg@3.0.0: 1394 | resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} 1395 | engines: {node: '>=4'} 1396 | dependencies: 1397 | load-json-file: 4.0.0 1398 | normalize-package-data: 2.5.0 1399 | path-type: 3.0.0 1400 | dev: true 1401 | 1402 | /regexp.prototype.flags@1.5.0: 1403 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} 1404 | engines: {node: '>= 0.4'} 1405 | dependencies: 1406 | call-bind: 1.0.2 1407 | define-properties: 1.2.0 1408 | functions-have-names: 1.2.3 1409 | dev: true 1410 | 1411 | /resolve@1.22.2: 1412 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 1413 | hasBin: true 1414 | dependencies: 1415 | is-core-module: 2.12.1 1416 | path-parse: 1.0.7 1417 | supports-preserve-symlinks-flag: 1.0.0 1418 | dev: true 1419 | 1420 | /rollup@3.26.0: 1421 | resolution: {integrity: sha512-YzJH0eunH2hr3knvF3i6IkLO/jTjAEwU4HoMUbQl4//Tnl3ou0e7P5SjxdDr8HQJdeUJShlbEHXrrnEHy1l7Yg==} 1422 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 1423 | hasBin: true 1424 | optionalDependencies: 1425 | fsevents: 2.3.2 1426 | dev: true 1427 | 1428 | /safe-buffer@5.2.1: 1429 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1430 | dev: false 1431 | 1432 | /safe-regex-test@1.0.0: 1433 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 1434 | dependencies: 1435 | call-bind: 1.0.2 1436 | get-intrinsic: 1.2.1 1437 | is-regex: 1.1.4 1438 | dev: true 1439 | 1440 | /safer-buffer@2.1.2: 1441 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1442 | dev: false 1443 | 1444 | /scheduler@0.23.0: 1445 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 1446 | dependencies: 1447 | loose-envify: 1.4.0 1448 | dev: false 1449 | 1450 | /semver@5.7.1: 1451 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 1452 | hasBin: true 1453 | dev: true 1454 | 1455 | /send@0.18.0: 1456 | resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} 1457 | engines: {node: '>= 0.8.0'} 1458 | dependencies: 1459 | debug: 2.6.9 1460 | depd: 2.0.0 1461 | destroy: 1.2.0 1462 | encodeurl: 1.0.2 1463 | escape-html: 1.0.3 1464 | etag: 1.8.1 1465 | fresh: 0.5.2 1466 | http-errors: 2.0.0 1467 | mime: 1.6.0 1468 | ms: 2.1.3 1469 | on-finished: 2.4.1 1470 | range-parser: 1.2.1 1471 | statuses: 2.0.1 1472 | transitivePeerDependencies: 1473 | - supports-color 1474 | dev: false 1475 | 1476 | /serve-static@1.15.0: 1477 | resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} 1478 | engines: {node: '>= 0.8.0'} 1479 | dependencies: 1480 | encodeurl: 1.0.2 1481 | escape-html: 1.0.3 1482 | parseurl: 1.3.3 1483 | send: 0.18.0 1484 | transitivePeerDependencies: 1485 | - supports-color 1486 | dev: false 1487 | 1488 | /setprototypeof@1.2.0: 1489 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 1490 | dev: false 1491 | 1492 | /shebang-command@1.2.0: 1493 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} 1494 | engines: {node: '>=0.10.0'} 1495 | dependencies: 1496 | shebang-regex: 1.0.0 1497 | dev: true 1498 | 1499 | /shebang-regex@1.0.0: 1500 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} 1501 | engines: {node: '>=0.10.0'} 1502 | dev: true 1503 | 1504 | /shell-quote@1.8.1: 1505 | resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} 1506 | dev: true 1507 | 1508 | /side-channel@1.0.4: 1509 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 1510 | dependencies: 1511 | call-bind: 1.0.2 1512 | get-intrinsic: 1.2.1 1513 | object-inspect: 1.12.3 1514 | 1515 | /source-map-js@1.0.2: 1516 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1517 | engines: {node: '>=0.10.0'} 1518 | dev: true 1519 | 1520 | /spdx-correct@3.2.0: 1521 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} 1522 | dependencies: 1523 | spdx-expression-parse: 3.0.1 1524 | spdx-license-ids: 3.0.13 1525 | dev: true 1526 | 1527 | /spdx-exceptions@2.3.0: 1528 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 1529 | dev: true 1530 | 1531 | /spdx-expression-parse@3.0.1: 1532 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 1533 | dependencies: 1534 | spdx-exceptions: 2.3.0 1535 | spdx-license-ids: 3.0.13 1536 | dev: true 1537 | 1538 | /spdx-license-ids@3.0.13: 1539 | resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} 1540 | dev: true 1541 | 1542 | /statuses@2.0.1: 1543 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 1544 | engines: {node: '>= 0.8'} 1545 | dev: false 1546 | 1547 | /string.prototype.padend@3.1.4: 1548 | resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} 1549 | engines: {node: '>= 0.4'} 1550 | dependencies: 1551 | call-bind: 1.0.2 1552 | define-properties: 1.2.0 1553 | es-abstract: 1.21.2 1554 | dev: true 1555 | 1556 | /string.prototype.trim@1.2.7: 1557 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} 1558 | engines: {node: '>= 0.4'} 1559 | dependencies: 1560 | call-bind: 1.0.2 1561 | define-properties: 1.2.0 1562 | es-abstract: 1.21.2 1563 | dev: true 1564 | 1565 | /string.prototype.trimend@1.0.6: 1566 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 1567 | dependencies: 1568 | call-bind: 1.0.2 1569 | define-properties: 1.2.0 1570 | es-abstract: 1.21.2 1571 | dev: true 1572 | 1573 | /string.prototype.trimstart@1.0.6: 1574 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 1575 | dependencies: 1576 | call-bind: 1.0.2 1577 | define-properties: 1.2.0 1578 | es-abstract: 1.21.2 1579 | dev: true 1580 | 1581 | /strip-bom@3.0.0: 1582 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1583 | engines: {node: '>=4'} 1584 | dev: true 1585 | 1586 | /supports-color@5.5.0: 1587 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1588 | engines: {node: '>=4'} 1589 | dependencies: 1590 | has-flag: 3.0.0 1591 | dev: true 1592 | 1593 | /supports-preserve-symlinks-flag@1.0.0: 1594 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1595 | engines: {node: '>= 0.4'} 1596 | dev: true 1597 | 1598 | /toidentifier@1.0.1: 1599 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 1600 | engines: {node: '>=0.6'} 1601 | dev: false 1602 | 1603 | /type-is@1.6.18: 1604 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 1605 | engines: {node: '>= 0.6'} 1606 | dependencies: 1607 | media-typer: 0.3.0 1608 | mime-types: 2.1.35 1609 | dev: false 1610 | 1611 | /typed-array-length@1.0.4: 1612 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 1613 | dependencies: 1614 | call-bind: 1.0.2 1615 | for-each: 0.3.3 1616 | is-typed-array: 1.1.10 1617 | dev: true 1618 | 1619 | /typescript@5.2.0-dev.20230630: 1620 | resolution: {integrity: sha512-PpI4tXtyv86eAhapMWrJF5roAxswu022vmSjDRU7NzPqT5+DlBktIlDePOrBo7OUBWNVEiUfsWuoDNbq5Sjj6Q==} 1621 | engines: {node: '>=14.17'} 1622 | hasBin: true 1623 | dev: true 1624 | 1625 | /unbox-primitive@1.0.2: 1626 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 1627 | dependencies: 1628 | call-bind: 1.0.2 1629 | has-bigints: 1.0.2 1630 | has-symbols: 1.0.3 1631 | which-boxed-primitive: 1.0.2 1632 | dev: true 1633 | 1634 | /unpipe@1.0.0: 1635 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 1636 | engines: {node: '>= 0.8'} 1637 | dev: false 1638 | 1639 | /utils-merge@1.0.1: 1640 | resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 1641 | engines: {node: '>= 0.4.0'} 1642 | dev: false 1643 | 1644 | /validate-npm-package-license@3.0.4: 1645 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 1646 | dependencies: 1647 | spdx-correct: 3.2.0 1648 | spdx-expression-parse: 3.0.1 1649 | dev: true 1650 | 1651 | /vary@1.1.2: 1652 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 1653 | engines: {node: '>= 0.8'} 1654 | dev: false 1655 | 1656 | /vite@4.3.9: 1657 | resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} 1658 | engines: {node: ^14.18.0 || >=16.0.0} 1659 | hasBin: true 1660 | peerDependencies: 1661 | '@types/node': '>= 14' 1662 | less: '*' 1663 | sass: '*' 1664 | stylus: '*' 1665 | sugarss: '*' 1666 | terser: ^5.4.0 1667 | peerDependenciesMeta: 1668 | '@types/node': 1669 | optional: true 1670 | less: 1671 | optional: true 1672 | sass: 1673 | optional: true 1674 | stylus: 1675 | optional: true 1676 | sugarss: 1677 | optional: true 1678 | terser: 1679 | optional: true 1680 | dependencies: 1681 | esbuild: 0.17.19 1682 | postcss: 8.4.24 1683 | rollup: 3.26.0 1684 | optionalDependencies: 1685 | fsevents: 2.3.2 1686 | dev: true 1687 | 1688 | /which-boxed-primitive@1.0.2: 1689 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 1690 | dependencies: 1691 | is-bigint: 1.0.4 1692 | is-boolean-object: 1.1.2 1693 | is-number-object: 1.0.7 1694 | is-string: 1.0.7 1695 | is-symbol: 1.0.4 1696 | dev: true 1697 | 1698 | /which-typed-array@1.1.9: 1699 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} 1700 | engines: {node: '>= 0.4'} 1701 | dependencies: 1702 | available-typed-arrays: 1.0.5 1703 | call-bind: 1.0.2 1704 | for-each: 0.3.3 1705 | gopd: 1.0.1 1706 | has-tostringtag: 1.0.0 1707 | is-typed-array: 1.1.10 1708 | dev: true 1709 | 1710 | /which@1.3.1: 1711 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 1712 | hasBin: true 1713 | dependencies: 1714 | isexe: 2.0.0 1715 | dev: true 1716 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = {plugins:[]}; 2 | -------------------------------------------------------------------------------- /server.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TejasQ/react-server-components-from-scratch/be3b521310f140ca500d473e7b057b78ad24791a/server.tsx -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | "jsx": "react" /* Specify what JSX code is generated. */, 17 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 26 | 27 | /* Modules */ 28 | "module": "commonjs" /* Specify what module code is generated. */, 29 | // "rootDir": "./", /* Specify the root folder within your source files. */ 30 | // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ 31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 38 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 39 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 40 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 41 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 42 | // "resolveJsonModule": true, /* Enable importing .json files. */ 43 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 44 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ 45 | 46 | /* JavaScript Support */ 47 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 48 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 49 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 50 | 51 | /* Emit */ 52 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 53 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 54 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 55 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 56 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 57 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 58 | "outDir": "./dist" /* Specify an output folder for all emitted files. */, 59 | // "removeComments": true, /* Disable emitting comments. */ 60 | // "noEmit": true, /* Disable emitting files from a compilation. */ 61 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 62 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 63 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 64 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 65 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 66 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 67 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 68 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 69 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 70 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 71 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 72 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 73 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 74 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 75 | 76 | /* Interop Constraints */ 77 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 78 | // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ 79 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 80 | "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, 81 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 82 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 83 | 84 | /* Type Checking */ 85 | "strict": false /* Enable all strict type-checking options. */, 86 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 87 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 88 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 89 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 90 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 91 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 92 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 93 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 94 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 95 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 96 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 97 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 98 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 99 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 100 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 101 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 102 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 103 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 104 | 105 | /* Completeness */ 106 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 107 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /util.ts: -------------------------------------------------------------------------------- 1 | // export const REMOTE_URL = 'http://localhost:3001' 2 | export const REMOTE_URL = 'https://dog.ceo' --------------------------------------------------------------------------------