├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── README.md ├── package-lock.json ├── package.json ├── playwright.config.ts ├── pnpm-lock.yaml ├── postcss.config.cjs ├── prisma ├── migrations │ ├── 20230501060534_init │ │ └── migration.sql │ ├── 20230501063751_updated_at_nullable │ │ └── migration.sql │ ├── 20230501100752_concept_name │ │ └── migration.sql │ ├── 20230501114250_mouse_move │ │ └── migration.sql │ ├── 20230502030239_profile_image │ │ └── migration.sql │ ├── 20230502075211_unique_id_user_concept │ │ └── migration.sql │ └── migration_lock.toml └── schema.prisma ├── server ├── index.ts ├── package-lock.json ├── package.json ├── pnpm-lock.yaml ├── tsconfig.json └── utils │ ├── authToken.ts │ ├── constants.ts │ └── planeCanvas.ts ├── src ├── app.css ├── app.d.ts ├── app.html ├── index.test.ts ├── libs │ ├── components │ │ ├── canvas │ │ │ └── index.svelte │ │ ├── loading │ │ │ └── index.svelte │ │ ├── navbar │ │ │ ├── concept │ │ │ │ └── index.svelte │ │ │ └── dropdown │ │ │ │ └── index.svelte │ │ ├── notification │ │ │ ├── index.svelte │ │ │ ├── mouse-popup │ │ │ │ └── index.svelte │ │ │ ├── request-access │ │ │ │ └── index.svelte │ │ │ └── share │ │ │ │ └── index.svelte │ │ └── sidebar │ │ │ └── right │ │ │ └── index.svelte │ ├── stores │ │ ├── colors.ts │ │ ├── concepts.ts │ │ ├── darkmode.ts │ │ ├── mouse-coords.ts │ │ ├── mouse-popup.ts │ │ ├── nav-dropdown.ts │ │ ├── notification.ts │ │ ├── request-access.ts │ │ ├── share.ts │ │ ├── user.ts │ │ ├── users.ts │ │ └── ws.ts │ └── utils │ │ ├── constants.ts │ │ └── socket.ts └── routes │ ├── +layout.server.ts │ ├── +layout.svelte │ ├── +page.svelte │ ├── auth │ ├── login │ │ ├── +page.server.ts │ │ └── +page.svelte │ ├── logout │ │ └── +page.server.ts │ └── signup │ │ ├── +page.server.ts │ │ └── +page.svelte │ ├── concept │ ├── +page.server.ts │ └── [id] │ │ └── +page.svelte │ └── profile │ └── +page.svelte ├── static └── favicon.png ├── svelte.config.js ├── tailwind.config.cjs ├── tests └── test.ts ├── tsconfig.json ├── vercel.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "pluginSearchDirs": ["."], 8 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 9 | } 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 |

SURFACE

4 | Stargazers 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | REVOLUTIONIZE YOUR VIRTUAL COLLABORATIONS WITH OUR WEB APP THAT COMBINES OPEN-SOURCE DESIGN TOOLS WITH SEAMLESS VIDEO CONFERENCING 17 |
18 |
19 | 20 | ## DEMO / SCREENSHOTS 21 | 22 | #### SINGLE USER 23 | 24 | https://user-images.githubusercontent.com/50259284/235841709-46d3ef69-1a77-40c3-b36d-59dca9331b82.mov 25 | 26 | #### MULTIPLE USER ACROSS THE GLOBE 27 | 28 | https://user-images.githubusercontent.com/50259284/235841808-ce744859-2fc6-4268-8444-6873a00d1d92.mov 29 | 30 | **JOIN VIA SHARING THE SAME ROOM CODE** 31 | 32 | 33 | 34 | 35 | 36 | 37 | ## HOW TO USE 38 | 39 | ### CLIENT & SERVER 40 | 41 | 1. CLONE THIS REPO 42 | 2. `npm i` 43 | 3. `cd server && npm i && cd ..` 44 | 45 | # 46 | 47 | ### DATABASE 48 | 49 | 1. Head to [supabase](https://app.supabase.com) 50 | 2. Create a new project 51 | 52 | **After initalizing** 53 | 54 | 3. Create `.env` in the root dir of the project 55 | 56 | **Paste the below** 57 | 58 | ``` 59 | DIRECT_URL = "postgres://postgres:[PROJECT_PASSWORD]@db.[PROJECT_ID].supabase.co:5432/postgres" 60 | 61 | DATABASE_URL = "postgres://postgres:[PROJECT_PASSWORD]@db.[PROJECT_ID].supabase.co:6543/postgres?pgbouncer=true" 62 | ``` 63 | 64 | Run the following command in root dir 65 | 66 | ```shell 67 | 68 | npx prisma migrate dev --name init 69 | 70 | npx prisma generate 71 | 72 | ``` 73 | # 74 | 75 | ### STARTING ON LOCALHOST 76 | 77 | ```shell 78 | 79 | npm run dev 80 | 81 | cd server 82 | 83 | npm run start 84 | 85 | ``` 86 | # Contributors 87 | 88 | 89 | # 90 |
91 | BREAK SOME CODE - GIVE A PR - HAFFUN 92 |
93 | 94 | 95 | 96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "concept", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "test": "playwright test", 10 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 11 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 12 | "test:unit": "vitest", 13 | "lint": "prettier --plugin-search-dir . --check .", 14 | "format": "prettier --plugin-search-dir . --write ." 15 | }, 16 | "devDependencies": { 17 | "@playwright/test": "^1.28.1", 18 | "@sveltejs/adapter-auto": "^2.0.0", 19 | "@sveltejs/kit": "^1.5.0", 20 | "@types/bcrypt": "^5.0.0", 21 | "@types/bcryptjs": "^2.4.2", 22 | "@types/cookie-parser": "^1.4.3", 23 | "@types/crypto-js": "^4.1.1", 24 | "@types/express": "^4.17.17", 25 | "@types/ws": "^8.5.4", 26 | "autoprefixer": "^10.4.13", 27 | "postcss": "^8.4.21", 28 | "prettier": "^2.8.0", 29 | "prettier-plugin-svelte": "^2.8.1", 30 | "svelte": "^3.54.0", 31 | "svelte-check": "^3.0.1", 32 | "tailwindcss": "^3.2.6", 33 | "tslib": "^2.4.1", 34 | "typescript": "^4.9.3", 35 | "vite": "^4.0.0", 36 | "vitest": "^0.25.3" 37 | }, 38 | "type": "module", 39 | "dependencies": { 40 | "@prisma/client": "4.13.0", 41 | "axios": "^1.3.6", 42 | "bcrypt": "^5.1.0", 43 | "bcryptjs": "^2.4.3", 44 | "body-parser": "^1.20.2", 45 | "buffer": "^6.0.3", 46 | "cookie-parser": "^1.4.6", 47 | "cors": "^2.8.5", 48 | "crypto-js": "^4.1.1", 49 | "express": "^4.18.2", 50 | "express-jwt": "^8.4.1", 51 | "gibberish": "^0.1.2", 52 | "jose": "^4.14.4", 53 | "jose-node-cjs-runtime": "^4.14.4", 54 | "jsonwebtoken": "^9.0.0", 55 | "jsrsasign": "^10.8.6", 56 | "jsrsasign-util": "^1.0.5", 57 | "jwt-client": "^0.2.1", 58 | "jwt-simple": "^0.5.6", 59 | "peerjs": "^1.4.7", 60 | "prisma": "^4.13.0", 61 | "sign": "link:jose-node-cjs-runtime/jwt/sign", 62 | "socket.io": "^4.6.1", 63 | "socket.io-client": "^4.6.1", 64 | "socket.io-stream": "^0.9.1", 65 | "ts-node": "^10.9.1", 66 | "websocket-ts": "^1.1.1", 67 | "ws": "^8.13.0" 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /playwright.config.ts: -------------------------------------------------------------------------------- 1 | import type { PlaywrightTestConfig } from '@playwright/test'; 2 | 3 | const config: PlaywrightTestConfig = { 4 | webServer: { 5 | command: 'npm run build && npm run preview', 6 | port: 4173 7 | }, 8 | testDir: 'tests' 9 | }; 10 | 11 | export default config; 12 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@playwright/test': ^1.28.1 5 | '@prisma/client': 4.13.0 6 | '@sveltejs/adapter-auto': ^2.0.0 7 | '@sveltejs/kit': ^1.5.0 8 | '@types/bcrypt': ^5.0.0 9 | '@types/bcryptjs': ^2.4.2 10 | '@types/cookie-parser': ^1.4.3 11 | '@types/crypto-js': ^4.1.1 12 | '@types/express': ^4.17.17 13 | '@types/ws': ^8.5.4 14 | autoprefixer: ^10.4.13 15 | axios: ^1.3.6 16 | bcrypt: ^5.1.0 17 | bcryptjs: ^2.4.3 18 | body-parser: ^1.20.2 19 | buffer: ^6.0.3 20 | cookie-parser: ^1.4.6 21 | cors: ^2.8.5 22 | crypto-js: ^4.1.1 23 | express: ^4.18.2 24 | express-jwt: ^8.4.1 25 | gibberish: ^0.1.2 26 | jose: ^4.14.4 27 | jose-node-cjs-runtime: ^4.14.4 28 | jsonwebtoken: ^9.0.0 29 | jsrsasign: ^10.8.6 30 | jsrsasign-util: ^1.0.5 31 | jwt-client: ^0.2.1 32 | jwt-simple: ^0.5.6 33 | peerjs: ^1.4.7 34 | postcss: ^8.4.21 35 | prettier: ^2.8.0 36 | prettier-plugin-svelte: ^2.8.1 37 | prisma: ^4.13.0 38 | sign: link:jose-node-cjs-runtime/jwt/sign 39 | socket.io: ^4.6.1 40 | socket.io-client: ^4.6.1 41 | socket.io-stream: ^0.9.1 42 | svelte: ^3.54.0 43 | svelte-check: ^3.0.1 44 | tailwindcss: ^3.2.6 45 | ts-node: ^10.9.1 46 | tslib: ^2.4.1 47 | typescript: ^4.9.3 48 | vite: ^4.0.0 49 | vitest: ^0.25.3 50 | websocket-ts: ^1.1.1 51 | ws: ^8.13.0 52 | 53 | dependencies: 54 | '@prisma/client': 4.13.0_prisma@4.13.0 55 | axios: 1.3.6 56 | bcrypt: 5.1.0 57 | bcryptjs: 2.4.3 58 | body-parser: 1.20.2 59 | buffer: 6.0.3 60 | cookie-parser: 1.4.6 61 | cors: 2.8.5 62 | crypto-js: 4.1.1 63 | express: 4.18.2 64 | express-jwt: 8.4.1 65 | gibberish: 0.1.2 66 | jose: 4.14.4 67 | jose-node-cjs-runtime: 4.14.4 68 | jsonwebtoken: 9.0.0 69 | jsrsasign: 10.8.6 70 | jsrsasign-util: 1.0.5 71 | jwt-client: 0.2.1 72 | jwt-simple: 0.5.6 73 | peerjs: 1.4.7 74 | prisma: 4.13.0 75 | sign: link:jose-node-cjs-runtime/jwt/sign 76 | socket.io: 4.6.1 77 | socket.io-client: 4.6.1 78 | socket.io-stream: 0.9.1 79 | ts-node: 10.9.1_typescript@4.9.5 80 | websocket-ts: 1.1.1 81 | ws: 8.13.0 82 | 83 | devDependencies: 84 | '@playwright/test': 1.32.3 85 | '@sveltejs/adapter-auto': 2.0.0_@sveltejs+kit@1.15.7 86 | '@sveltejs/kit': 1.15.7_svelte@3.58.0+vite@4.3.1 87 | '@types/bcrypt': 5.0.0 88 | '@types/bcryptjs': 2.4.2 89 | '@types/cookie-parser': 1.4.3 90 | '@types/crypto-js': 4.1.1 91 | '@types/express': 4.17.17 92 | '@types/ws': 8.5.4 93 | autoprefixer: 10.4.14_postcss@8.4.23 94 | postcss: 8.4.23 95 | prettier: 2.8.7 96 | prettier-plugin-svelte: 2.10.0_ur5pqdgn24bclu6l6i7qojopk4 97 | svelte: 3.58.0 98 | svelte-check: 3.2.0_3jsjda4jx6j2l7qclqlom22jie 99 | tailwindcss: 3.3.1_3fojqsmttcn75cbnzsztj3o6qa 100 | tslib: 2.5.0 101 | typescript: 4.9.5 102 | vite: 4.3.1 103 | vitest: 0.25.8 104 | 105 | packages: 106 | 107 | /@cspotcode/source-map-support/0.8.1: 108 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 109 | engines: {node: '>=12'} 110 | dependencies: 111 | '@jridgewell/trace-mapping': 0.3.9 112 | 113 | /@esbuild/android-arm/0.17.17: 114 | resolution: {integrity: sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==} 115 | engines: {node: '>=12'} 116 | cpu: [arm] 117 | os: [android] 118 | requiresBuild: true 119 | dev: true 120 | optional: true 121 | 122 | /@esbuild/android-arm64/0.17.17: 123 | resolution: {integrity: sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==} 124 | engines: {node: '>=12'} 125 | cpu: [arm64] 126 | os: [android] 127 | requiresBuild: true 128 | dev: true 129 | optional: true 130 | 131 | /@esbuild/android-x64/0.17.17: 132 | resolution: {integrity: sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==} 133 | engines: {node: '>=12'} 134 | cpu: [x64] 135 | os: [android] 136 | requiresBuild: true 137 | dev: true 138 | optional: true 139 | 140 | /@esbuild/darwin-arm64/0.17.17: 141 | resolution: {integrity: sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==} 142 | engines: {node: '>=12'} 143 | cpu: [arm64] 144 | os: [darwin] 145 | requiresBuild: true 146 | dev: true 147 | optional: true 148 | 149 | /@esbuild/darwin-x64/0.17.17: 150 | resolution: {integrity: sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==} 151 | engines: {node: '>=12'} 152 | cpu: [x64] 153 | os: [darwin] 154 | requiresBuild: true 155 | dev: true 156 | optional: true 157 | 158 | /@esbuild/freebsd-arm64/0.17.17: 159 | resolution: {integrity: sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==} 160 | engines: {node: '>=12'} 161 | cpu: [arm64] 162 | os: [freebsd] 163 | requiresBuild: true 164 | dev: true 165 | optional: true 166 | 167 | /@esbuild/freebsd-x64/0.17.17: 168 | resolution: {integrity: sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==} 169 | engines: {node: '>=12'} 170 | cpu: [x64] 171 | os: [freebsd] 172 | requiresBuild: true 173 | dev: true 174 | optional: true 175 | 176 | /@esbuild/linux-arm/0.17.17: 177 | resolution: {integrity: sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==} 178 | engines: {node: '>=12'} 179 | cpu: [arm] 180 | os: [linux] 181 | requiresBuild: true 182 | dev: true 183 | optional: true 184 | 185 | /@esbuild/linux-arm64/0.17.17: 186 | resolution: {integrity: sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==} 187 | engines: {node: '>=12'} 188 | cpu: [arm64] 189 | os: [linux] 190 | requiresBuild: true 191 | dev: true 192 | optional: true 193 | 194 | /@esbuild/linux-ia32/0.17.17: 195 | resolution: {integrity: sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==} 196 | engines: {node: '>=12'} 197 | cpu: [ia32] 198 | os: [linux] 199 | requiresBuild: true 200 | dev: true 201 | optional: true 202 | 203 | /@esbuild/linux-loong64/0.17.17: 204 | resolution: {integrity: sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==} 205 | engines: {node: '>=12'} 206 | cpu: [loong64] 207 | os: [linux] 208 | requiresBuild: true 209 | dev: true 210 | optional: true 211 | 212 | /@esbuild/linux-mips64el/0.17.17: 213 | resolution: {integrity: sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==} 214 | engines: {node: '>=12'} 215 | cpu: [mips64el] 216 | os: [linux] 217 | requiresBuild: true 218 | dev: true 219 | optional: true 220 | 221 | /@esbuild/linux-ppc64/0.17.17: 222 | resolution: {integrity: sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==} 223 | engines: {node: '>=12'} 224 | cpu: [ppc64] 225 | os: [linux] 226 | requiresBuild: true 227 | dev: true 228 | optional: true 229 | 230 | /@esbuild/linux-riscv64/0.17.17: 231 | resolution: {integrity: sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==} 232 | engines: {node: '>=12'} 233 | cpu: [riscv64] 234 | os: [linux] 235 | requiresBuild: true 236 | dev: true 237 | optional: true 238 | 239 | /@esbuild/linux-s390x/0.17.17: 240 | resolution: {integrity: sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==} 241 | engines: {node: '>=12'} 242 | cpu: [s390x] 243 | os: [linux] 244 | requiresBuild: true 245 | dev: true 246 | optional: true 247 | 248 | /@esbuild/linux-x64/0.17.17: 249 | resolution: {integrity: sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==} 250 | engines: {node: '>=12'} 251 | cpu: [x64] 252 | os: [linux] 253 | requiresBuild: true 254 | dev: true 255 | optional: true 256 | 257 | /@esbuild/netbsd-x64/0.17.17: 258 | resolution: {integrity: sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==} 259 | engines: {node: '>=12'} 260 | cpu: [x64] 261 | os: [netbsd] 262 | requiresBuild: true 263 | dev: true 264 | optional: true 265 | 266 | /@esbuild/openbsd-x64/0.17.17: 267 | resolution: {integrity: sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==} 268 | engines: {node: '>=12'} 269 | cpu: [x64] 270 | os: [openbsd] 271 | requiresBuild: true 272 | dev: true 273 | optional: true 274 | 275 | /@esbuild/sunos-x64/0.17.17: 276 | resolution: {integrity: sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==} 277 | engines: {node: '>=12'} 278 | cpu: [x64] 279 | os: [sunos] 280 | requiresBuild: true 281 | dev: true 282 | optional: true 283 | 284 | /@esbuild/win32-arm64/0.17.17: 285 | resolution: {integrity: sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==} 286 | engines: {node: '>=12'} 287 | cpu: [arm64] 288 | os: [win32] 289 | requiresBuild: true 290 | dev: true 291 | optional: true 292 | 293 | /@esbuild/win32-ia32/0.17.17: 294 | resolution: {integrity: sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==} 295 | engines: {node: '>=12'} 296 | cpu: [ia32] 297 | os: [win32] 298 | requiresBuild: true 299 | dev: true 300 | optional: true 301 | 302 | /@esbuild/win32-x64/0.17.17: 303 | resolution: {integrity: sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==} 304 | engines: {node: '>=12'} 305 | cpu: [x64] 306 | os: [win32] 307 | requiresBuild: true 308 | dev: true 309 | optional: true 310 | 311 | /@jridgewell/gen-mapping/0.3.3: 312 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 313 | engines: {node: '>=6.0.0'} 314 | dependencies: 315 | '@jridgewell/set-array': 1.1.2 316 | '@jridgewell/sourcemap-codec': 1.4.15 317 | '@jridgewell/trace-mapping': 0.3.18 318 | dev: true 319 | 320 | /@jridgewell/resolve-uri/3.1.0: 321 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 322 | engines: {node: '>=6.0.0'} 323 | 324 | /@jridgewell/set-array/1.1.2: 325 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 326 | engines: {node: '>=6.0.0'} 327 | dev: true 328 | 329 | /@jridgewell/sourcemap-codec/1.4.14: 330 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 331 | dev: true 332 | 333 | /@jridgewell/sourcemap-codec/1.4.15: 334 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 335 | 336 | /@jridgewell/trace-mapping/0.3.18: 337 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 338 | dependencies: 339 | '@jridgewell/resolve-uri': 3.1.0 340 | '@jridgewell/sourcemap-codec': 1.4.14 341 | dev: true 342 | 343 | /@jridgewell/trace-mapping/0.3.9: 344 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 345 | dependencies: 346 | '@jridgewell/resolve-uri': 3.1.0 347 | '@jridgewell/sourcemap-codec': 1.4.15 348 | 349 | /@mapbox/node-pre-gyp/1.0.10: 350 | resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} 351 | hasBin: true 352 | dependencies: 353 | detect-libc: 2.0.1 354 | https-proxy-agent: 5.0.1 355 | make-dir: 3.1.0 356 | node-fetch: 2.6.9 357 | nopt: 5.0.0 358 | npmlog: 5.0.1 359 | rimraf: 3.0.2 360 | semver: 7.5.0 361 | tar: 6.1.13 362 | transitivePeerDependencies: 363 | - encoding 364 | - supports-color 365 | dev: false 366 | 367 | /@nodelib/fs.scandir/2.1.5: 368 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 369 | engines: {node: '>= 8'} 370 | dependencies: 371 | '@nodelib/fs.stat': 2.0.5 372 | run-parallel: 1.2.0 373 | dev: true 374 | 375 | /@nodelib/fs.stat/2.0.5: 376 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 377 | engines: {node: '>= 8'} 378 | dev: true 379 | 380 | /@nodelib/fs.walk/1.2.8: 381 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 382 | engines: {node: '>= 8'} 383 | dependencies: 384 | '@nodelib/fs.scandir': 2.1.5 385 | fastq: 1.15.0 386 | dev: true 387 | 388 | /@playwright/test/1.32.3: 389 | resolution: {integrity: sha512-BvWNvK0RfBriindxhLVabi8BRe3X0J9EVjKlcmhxjg4giWBD/xleLcg2dz7Tx0agu28rczjNIPQWznwzDwVsZQ==} 390 | engines: {node: '>=14'} 391 | hasBin: true 392 | dependencies: 393 | '@types/node': 18.15.13 394 | playwright-core: 1.32.3 395 | optionalDependencies: 396 | fsevents: 2.3.2 397 | dev: true 398 | 399 | /@polka/url/1.0.0-next.21: 400 | resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} 401 | dev: true 402 | 403 | /@prisma/client/4.13.0_prisma@4.13.0: 404 | resolution: {integrity: sha512-YaiiICcRB2hatxsbnfB66uWXjcRw3jsZdlAVxmx0cFcTc/Ad/sKdHCcWSnqyDX47vAewkjRFwiLwrOUjswVvmA==} 405 | engines: {node: '>=14.17'} 406 | requiresBuild: true 407 | peerDependencies: 408 | prisma: '*' 409 | peerDependenciesMeta: 410 | prisma: 411 | optional: true 412 | dependencies: 413 | '@prisma/engines-version': 4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a 414 | prisma: 4.13.0 415 | dev: false 416 | 417 | /@prisma/engines-version/4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a: 418 | resolution: {integrity: sha512-fsQlbkhPJf08JOzKoyoD9atdUijuGBekwoOPZC3YOygXEml1MTtgXVpnUNchQlRSY82OQ6pSGQ9PxUe4arcSLQ==} 419 | dev: false 420 | 421 | /@prisma/engines/4.13.0: 422 | resolution: {integrity: sha512-HrniowHRZXHuGT9XRgoXEaP2gJLXM5RMoItaY2PkjvuZ+iHc0Zjbm/302MB8YsPdWozAPHHn+jpFEcEn71OgPw==} 423 | requiresBuild: true 424 | dev: false 425 | 426 | /@socket.io/component-emitter/3.1.0: 427 | resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} 428 | dev: false 429 | 430 | /@sveltejs/adapter-auto/2.0.0_@sveltejs+kit@1.15.7: 431 | resolution: {integrity: sha512-b+gkHFZgD771kgV3aO4avHFd7y1zhmMYy9i6xOK7m/rwmwaRO8gnF5zBc0Rgca80B2PMU1bKNxyBTHA14OzUAQ==} 432 | peerDependencies: 433 | '@sveltejs/kit': ^1.0.0 434 | dependencies: 435 | '@sveltejs/kit': 1.15.7_svelte@3.58.0+vite@4.3.1 436 | import-meta-resolve: 2.2.2 437 | dev: true 438 | 439 | /@sveltejs/kit/1.15.7_svelte@3.58.0+vite@4.3.1: 440 | resolution: {integrity: sha512-dgdKExsMJ16X3q8tEcuDlv+QIWAlJcf7IqCU2HWV13nmtTzwSA2n4VtEx9Gy5OGhH0SUAGNIupmlf0TdFSMXbw==} 441 | engines: {node: ^16.14 || >=18} 442 | hasBin: true 443 | requiresBuild: true 444 | peerDependencies: 445 | svelte: ^3.54.0 446 | vite: ^4.0.0 447 | dependencies: 448 | '@sveltejs/vite-plugin-svelte': 2.0.4_svelte@3.58.0+vite@4.3.1 449 | '@types/cookie': 0.5.1 450 | cookie: 0.5.0 451 | devalue: 4.3.0 452 | esm-env: 1.0.0 453 | kleur: 4.1.5 454 | magic-string: 0.30.0 455 | mime: 3.0.0 456 | sade: 1.8.1 457 | set-cookie-parser: 2.6.0 458 | sirv: 2.0.2 459 | svelte: 3.58.0 460 | tiny-glob: 0.2.9 461 | undici: 5.20.0 462 | vite: 4.3.1 463 | transitivePeerDependencies: 464 | - supports-color 465 | dev: true 466 | 467 | /@sveltejs/vite-plugin-svelte/2.0.4_svelte@3.58.0+vite@4.3.1: 468 | resolution: {integrity: sha512-pjqhW00KwK2uzDGEr+yJBwut+D+4XfJO/+bHHdHzPRXn9+1Jeq5JcFHyrUiYaXgHtyhX0RsllCTm4ssAx4ZY7Q==} 469 | engines: {node: ^14.18.0 || >= 16} 470 | peerDependencies: 471 | svelte: ^3.54.0 472 | vite: ^4.0.0 473 | dependencies: 474 | debug: 4.3.4 475 | deepmerge: 4.3.1 476 | kleur: 4.1.5 477 | magic-string: 0.30.0 478 | svelte: 3.58.0 479 | svelte-hmr: 0.15.1_svelte@3.58.0 480 | vite: 4.3.1 481 | vitefu: 0.2.4_vite@4.3.1 482 | transitivePeerDependencies: 483 | - supports-color 484 | dev: true 485 | 486 | /@swc/helpers/0.3.17: 487 | resolution: {integrity: sha512-tb7Iu+oZ+zWJZ3HJqwx8oNwSDIU440hmVMDPhpACWQWnrZHK99Bxs70gT1L2dnr5Hg50ZRWEFkQCAnOVVV0z1Q==} 488 | dependencies: 489 | tslib: 2.5.0 490 | dev: false 491 | 492 | /@tsconfig/node10/1.0.9: 493 | resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} 494 | 495 | /@tsconfig/node12/1.0.11: 496 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 497 | 498 | /@tsconfig/node14/1.0.3: 499 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 500 | 501 | /@tsconfig/node16/1.0.3: 502 | resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} 503 | 504 | /@types/bcrypt/5.0.0: 505 | resolution: {integrity: sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==} 506 | dependencies: 507 | '@types/node': 18.15.13 508 | dev: true 509 | 510 | /@types/bcryptjs/2.4.2: 511 | resolution: {integrity: sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ==} 512 | dev: true 513 | 514 | /@types/body-parser/1.19.2: 515 | resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} 516 | dependencies: 517 | '@types/connect': 3.4.35 518 | '@types/node': 18.15.13 519 | dev: true 520 | 521 | /@types/chai-subset/1.3.3: 522 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 523 | dependencies: 524 | '@types/chai': 4.3.4 525 | dev: true 526 | 527 | /@types/chai/4.3.4: 528 | resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} 529 | dev: true 530 | 531 | /@types/connect/3.4.35: 532 | resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} 533 | dependencies: 534 | '@types/node': 18.15.13 535 | dev: true 536 | 537 | /@types/cookie-parser/1.4.3: 538 | resolution: {integrity: sha512-CqSKwFwefj4PzZ5n/iwad/bow2hTCh0FlNAeWLtQM3JA/NX/iYagIpWG2cf1bQKQ2c9gU2log5VUCrn7LDOs0w==} 539 | dependencies: 540 | '@types/express': 4.17.17 541 | dev: true 542 | 543 | /@types/cookie/0.4.1: 544 | resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} 545 | dev: false 546 | 547 | /@types/cookie/0.5.1: 548 | resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} 549 | dev: true 550 | 551 | /@types/cors/2.8.13: 552 | resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} 553 | dependencies: 554 | '@types/node': 18.15.13 555 | dev: false 556 | 557 | /@types/crypto-js/4.1.1: 558 | resolution: {integrity: sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==} 559 | dev: true 560 | 561 | /@types/express-serve-static-core/4.17.34: 562 | resolution: {integrity: sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==} 563 | dependencies: 564 | '@types/node': 18.15.13 565 | '@types/qs': 6.9.7 566 | '@types/range-parser': 1.2.4 567 | '@types/send': 0.17.1 568 | dev: true 569 | 570 | /@types/express/4.17.17: 571 | resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} 572 | dependencies: 573 | '@types/body-parser': 1.19.2 574 | '@types/express-serve-static-core': 4.17.34 575 | '@types/qs': 6.9.7 576 | '@types/serve-static': 1.15.1 577 | dev: true 578 | 579 | /@types/jsonwebtoken/9.0.2: 580 | resolution: {integrity: sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==} 581 | dependencies: 582 | '@types/node': 18.15.13 583 | dev: false 584 | 585 | /@types/mime/1.3.2: 586 | resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} 587 | dev: true 588 | 589 | /@types/mime/3.0.1: 590 | resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} 591 | dev: true 592 | 593 | /@types/node/18.15.13: 594 | resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} 595 | 596 | /@types/pug/2.0.6: 597 | resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} 598 | dev: true 599 | 600 | /@types/qs/6.9.7: 601 | resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} 602 | dev: true 603 | 604 | /@types/range-parser/1.2.4: 605 | resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} 606 | dev: true 607 | 608 | /@types/send/0.17.1: 609 | resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} 610 | dependencies: 611 | '@types/mime': 1.3.2 612 | '@types/node': 18.15.13 613 | dev: true 614 | 615 | /@types/serve-static/1.15.1: 616 | resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} 617 | dependencies: 618 | '@types/mime': 3.0.1 619 | '@types/node': 18.15.13 620 | dev: true 621 | 622 | /@types/ws/8.5.4: 623 | resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} 624 | dependencies: 625 | '@types/node': 18.15.13 626 | dev: true 627 | 628 | /abbrev/1.1.1: 629 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 630 | dev: false 631 | 632 | /accepts/1.3.8: 633 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 634 | engines: {node: '>= 0.6'} 635 | dependencies: 636 | mime-types: 2.1.35 637 | negotiator: 0.6.3 638 | dev: false 639 | 640 | /acorn-walk/8.2.0: 641 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 642 | engines: {node: '>=0.4.0'} 643 | 644 | /acorn/8.8.2: 645 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 646 | engines: {node: '>=0.4.0'} 647 | hasBin: true 648 | 649 | /agent-base/6.0.2: 650 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 651 | engines: {node: '>= 6.0.0'} 652 | dependencies: 653 | debug: 4.3.4 654 | transitivePeerDependencies: 655 | - supports-color 656 | dev: false 657 | 658 | /ansi-regex/5.0.1: 659 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 660 | engines: {node: '>=8'} 661 | dev: false 662 | 663 | /any-promise/1.3.0: 664 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 665 | dev: true 666 | 667 | /anymatch/3.1.3: 668 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 669 | engines: {node: '>= 8'} 670 | dependencies: 671 | normalize-path: 3.0.0 672 | picomatch: 2.3.1 673 | dev: true 674 | 675 | /aproba/2.0.0: 676 | resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} 677 | dev: false 678 | 679 | /are-we-there-yet/2.0.0: 680 | resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} 681 | engines: {node: '>=10'} 682 | dependencies: 683 | delegates: 1.0.0 684 | readable-stream: 3.6.2 685 | dev: false 686 | 687 | /arg/4.1.3: 688 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 689 | 690 | /arg/5.0.2: 691 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 692 | dev: true 693 | 694 | /array-flatten/1.1.1: 695 | resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 696 | dev: false 697 | 698 | /assertion-error/1.1.0: 699 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 700 | dev: true 701 | 702 | /asynckit/0.4.0: 703 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 704 | dev: false 705 | 706 | /autoprefixer/10.4.14_postcss@8.4.23: 707 | resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} 708 | engines: {node: ^10 || ^12 || >=14} 709 | hasBin: true 710 | peerDependencies: 711 | postcss: ^8.1.0 712 | dependencies: 713 | browserslist: 4.21.5 714 | caniuse-lite: 1.0.30001481 715 | fraction.js: 4.2.0 716 | normalize-range: 0.1.2 717 | picocolors: 1.0.0 718 | postcss: 8.4.23 719 | postcss-value-parser: 4.2.0 720 | dev: true 721 | 722 | /axios/1.3.6: 723 | resolution: {integrity: sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==} 724 | dependencies: 725 | follow-redirects: 1.15.2 726 | form-data: 4.0.0 727 | proxy-from-env: 1.1.0 728 | transitivePeerDependencies: 729 | - debug 730 | dev: false 731 | 732 | /balanced-match/1.0.2: 733 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 734 | 735 | /base64-js/1.5.1: 736 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 737 | dev: false 738 | 739 | /base64id/2.0.0: 740 | resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} 741 | engines: {node: ^4.5.0 || >= 5.9} 742 | dev: false 743 | 744 | /bcrypt/5.1.0: 745 | resolution: {integrity: sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==} 746 | engines: {node: '>= 10.0.0'} 747 | requiresBuild: true 748 | dependencies: 749 | '@mapbox/node-pre-gyp': 1.0.10 750 | node-addon-api: 5.1.0 751 | transitivePeerDependencies: 752 | - encoding 753 | - supports-color 754 | dev: false 755 | 756 | /bcryptjs/2.4.3: 757 | resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} 758 | dev: false 759 | 760 | /binary-extensions/2.2.0: 761 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 762 | engines: {node: '>=8'} 763 | dev: true 764 | 765 | /body-parser/1.20.1: 766 | resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} 767 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 768 | dependencies: 769 | bytes: 3.1.2 770 | content-type: 1.0.5 771 | debug: 2.6.9 772 | depd: 2.0.0 773 | destroy: 1.2.0 774 | http-errors: 2.0.0 775 | iconv-lite: 0.4.24 776 | on-finished: 2.4.1 777 | qs: 6.11.0 778 | raw-body: 2.5.1 779 | type-is: 1.6.18 780 | unpipe: 1.0.0 781 | transitivePeerDependencies: 782 | - supports-color 783 | dev: false 784 | 785 | /body-parser/1.20.2: 786 | resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} 787 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 788 | dependencies: 789 | bytes: 3.1.2 790 | content-type: 1.0.5 791 | debug: 2.6.9 792 | depd: 2.0.0 793 | destroy: 1.2.0 794 | http-errors: 2.0.0 795 | iconv-lite: 0.4.24 796 | on-finished: 2.4.1 797 | qs: 6.11.0 798 | raw-body: 2.5.2 799 | type-is: 1.6.18 800 | unpipe: 1.0.0 801 | transitivePeerDependencies: 802 | - supports-color 803 | dev: false 804 | 805 | /brace-expansion/1.1.11: 806 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 807 | dependencies: 808 | balanced-match: 1.0.2 809 | concat-map: 0.0.1 810 | 811 | /braces/3.0.2: 812 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 813 | engines: {node: '>=8'} 814 | dependencies: 815 | fill-range: 7.0.1 816 | dev: true 817 | 818 | /browserslist/4.21.5: 819 | resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} 820 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 821 | hasBin: true 822 | dependencies: 823 | caniuse-lite: 1.0.30001481 824 | electron-to-chromium: 1.4.368 825 | node-releases: 2.0.10 826 | update-browserslist-db: 1.0.11_browserslist@4.21.5 827 | dev: true 828 | 829 | /buffer-crc32/0.2.13: 830 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 831 | dev: true 832 | 833 | /buffer-equal-constant-time/1.0.1: 834 | resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} 835 | dev: false 836 | 837 | /buffer/6.0.3: 838 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 839 | dependencies: 840 | base64-js: 1.5.1 841 | ieee754: 1.2.1 842 | dev: false 843 | 844 | /busboy/1.6.0: 845 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 846 | engines: {node: '>=10.16.0'} 847 | dependencies: 848 | streamsearch: 1.1.0 849 | dev: true 850 | 851 | /bytes/3.1.2: 852 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 853 | engines: {node: '>= 0.8'} 854 | dev: false 855 | 856 | /call-bind/1.0.2: 857 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 858 | dependencies: 859 | function-bind: 1.1.1 860 | get-intrinsic: 1.2.0 861 | dev: false 862 | 863 | /callsites/3.1.0: 864 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 865 | engines: {node: '>=6'} 866 | dev: true 867 | 868 | /camelcase-css/2.0.1: 869 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 870 | engines: {node: '>= 6'} 871 | dev: true 872 | 873 | /caniuse-lite/1.0.30001481: 874 | resolution: {integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==} 875 | dev: true 876 | 877 | /chai/4.3.7: 878 | resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} 879 | engines: {node: '>=4'} 880 | dependencies: 881 | assertion-error: 1.1.0 882 | check-error: 1.0.2 883 | deep-eql: 4.1.3 884 | get-func-name: 2.0.0 885 | loupe: 2.3.6 886 | pathval: 1.1.1 887 | type-detect: 4.0.8 888 | dev: true 889 | 890 | /check-error/1.0.2: 891 | resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} 892 | dev: true 893 | 894 | /chokidar/3.5.3: 895 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 896 | engines: {node: '>= 8.10.0'} 897 | dependencies: 898 | anymatch: 3.1.3 899 | braces: 3.0.2 900 | glob-parent: 5.1.2 901 | is-binary-path: 2.1.0 902 | is-glob: 4.0.3 903 | normalize-path: 3.0.0 904 | readdirp: 3.6.0 905 | optionalDependencies: 906 | fsevents: 2.3.2 907 | dev: true 908 | 909 | /chownr/2.0.0: 910 | resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} 911 | engines: {node: '>=10'} 912 | dev: false 913 | 914 | /color-name/1.1.4: 915 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 916 | dev: true 917 | 918 | /color-support/1.1.3: 919 | resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} 920 | hasBin: true 921 | dev: false 922 | 923 | /combined-stream/1.0.8: 924 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 925 | engines: {node: '>= 0.8'} 926 | dependencies: 927 | delayed-stream: 1.0.0 928 | dev: false 929 | 930 | /commander/4.1.1: 931 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 932 | engines: {node: '>= 6'} 933 | dev: true 934 | 935 | /component-bind/1.0.0: 936 | resolution: {integrity: sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==} 937 | dev: false 938 | 939 | /concat-map/0.0.1: 940 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 941 | 942 | /console-control-strings/1.1.0: 943 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 944 | dev: false 945 | 946 | /content-disposition/0.5.4: 947 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 948 | engines: {node: '>= 0.6'} 949 | dependencies: 950 | safe-buffer: 5.2.1 951 | dev: false 952 | 953 | /content-type/1.0.5: 954 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 955 | engines: {node: '>= 0.6'} 956 | dev: false 957 | 958 | /cookie-parser/1.4.6: 959 | resolution: {integrity: sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==} 960 | engines: {node: '>= 0.8.0'} 961 | dependencies: 962 | cookie: 0.4.1 963 | cookie-signature: 1.0.6 964 | dev: false 965 | 966 | /cookie-signature/1.0.6: 967 | resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} 968 | dev: false 969 | 970 | /cookie/0.4.1: 971 | resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==} 972 | engines: {node: '>= 0.6'} 973 | dev: false 974 | 975 | /cookie/0.4.2: 976 | resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} 977 | engines: {node: '>= 0.6'} 978 | dev: false 979 | 980 | /cookie/0.5.0: 981 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 982 | engines: {node: '>= 0.6'} 983 | 984 | /cors/2.8.5: 985 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 986 | engines: {node: '>= 0.10'} 987 | dependencies: 988 | object-assign: 4.1.1 989 | vary: 1.1.2 990 | dev: false 991 | 992 | /create-require/1.1.1: 993 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 994 | 995 | /crypto-js/4.1.1: 996 | resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==} 997 | dev: false 998 | 999 | /cssesc/3.0.0: 1000 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1001 | engines: {node: '>=4'} 1002 | hasBin: true 1003 | dev: true 1004 | 1005 | /debug/2.2.0: 1006 | resolution: {integrity: sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==} 1007 | peerDependencies: 1008 | supports-color: '*' 1009 | peerDependenciesMeta: 1010 | supports-color: 1011 | optional: true 1012 | dependencies: 1013 | ms: 0.7.1 1014 | dev: false 1015 | 1016 | /debug/2.6.9: 1017 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1018 | peerDependencies: 1019 | supports-color: '*' 1020 | peerDependenciesMeta: 1021 | supports-color: 1022 | optional: true 1023 | dependencies: 1024 | ms: 2.0.0 1025 | dev: false 1026 | 1027 | /debug/4.3.4: 1028 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1029 | engines: {node: '>=6.0'} 1030 | peerDependencies: 1031 | supports-color: '*' 1032 | peerDependenciesMeta: 1033 | supports-color: 1034 | optional: true 1035 | dependencies: 1036 | ms: 2.1.2 1037 | 1038 | /deep-eql/4.1.3: 1039 | resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} 1040 | engines: {node: '>=6'} 1041 | dependencies: 1042 | type-detect: 4.0.8 1043 | dev: true 1044 | 1045 | /deepmerge/4.3.1: 1046 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 1047 | engines: {node: '>=0.10.0'} 1048 | dev: true 1049 | 1050 | /delayed-stream/1.0.0: 1051 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 1052 | engines: {node: '>=0.4.0'} 1053 | dev: false 1054 | 1055 | /delegates/1.0.0: 1056 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 1057 | dev: false 1058 | 1059 | /depd/2.0.0: 1060 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 1061 | engines: {node: '>= 0.8'} 1062 | dev: false 1063 | 1064 | /destroy/1.2.0: 1065 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 1066 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1067 | dev: false 1068 | 1069 | /detect-indent/6.1.0: 1070 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 1071 | engines: {node: '>=8'} 1072 | dev: true 1073 | 1074 | /detect-libc/2.0.1: 1075 | resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} 1076 | engines: {node: '>=8'} 1077 | dev: false 1078 | 1079 | /devalue/4.3.0: 1080 | resolution: {integrity: sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==} 1081 | dev: true 1082 | 1083 | /didyoumean/1.2.2: 1084 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1085 | dev: true 1086 | 1087 | /diff/4.0.2: 1088 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 1089 | engines: {node: '>=0.3.1'} 1090 | 1091 | /dlv/1.1.3: 1092 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1093 | dev: true 1094 | 1095 | /ecdsa-sig-formatter/1.0.11: 1096 | resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} 1097 | dependencies: 1098 | safe-buffer: 5.2.1 1099 | dev: false 1100 | 1101 | /ee-first/1.1.1: 1102 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 1103 | dev: false 1104 | 1105 | /electron-to-chromium/1.4.368: 1106 | resolution: {integrity: sha512-e2aeCAixCj9M7nJxdB/wDjO6mbYX+lJJxSJCXDzlr5YPGYVofuJwGN9nKg2o6wWInjX6XmxRinn3AeJMK81ltw==} 1107 | dev: true 1108 | 1109 | /emoji-regex/8.0.0: 1110 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1111 | dev: false 1112 | 1113 | /encodeurl/1.0.2: 1114 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 1115 | engines: {node: '>= 0.8'} 1116 | dev: false 1117 | 1118 | /engine.io-client/6.4.0: 1119 | resolution: {integrity: sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==} 1120 | dependencies: 1121 | '@socket.io/component-emitter': 3.1.0 1122 | debug: 4.3.4 1123 | engine.io-parser: 5.0.6 1124 | ws: 8.11.0 1125 | xmlhttprequest-ssl: 2.0.0 1126 | transitivePeerDependencies: 1127 | - bufferutil 1128 | - supports-color 1129 | - utf-8-validate 1130 | dev: false 1131 | 1132 | /engine.io-parser/5.0.6: 1133 | resolution: {integrity: sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==} 1134 | engines: {node: '>=10.0.0'} 1135 | dev: false 1136 | 1137 | /engine.io/6.4.1: 1138 | resolution: {integrity: sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==} 1139 | engines: {node: '>=10.0.0'} 1140 | dependencies: 1141 | '@types/cookie': 0.4.1 1142 | '@types/cors': 2.8.13 1143 | '@types/node': 18.15.13 1144 | accepts: 1.3.8 1145 | base64id: 2.0.0 1146 | cookie: 0.4.2 1147 | cors: 2.8.5 1148 | debug: 4.3.4 1149 | engine.io-parser: 5.0.6 1150 | ws: 8.11.0 1151 | transitivePeerDependencies: 1152 | - bufferutil 1153 | - supports-color 1154 | - utf-8-validate 1155 | dev: false 1156 | 1157 | /es6-promise/3.3.1: 1158 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 1159 | dev: true 1160 | 1161 | /esbuild/0.17.17: 1162 | resolution: {integrity: sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==} 1163 | engines: {node: '>=12'} 1164 | hasBin: true 1165 | requiresBuild: true 1166 | optionalDependencies: 1167 | '@esbuild/android-arm': 0.17.17 1168 | '@esbuild/android-arm64': 0.17.17 1169 | '@esbuild/android-x64': 0.17.17 1170 | '@esbuild/darwin-arm64': 0.17.17 1171 | '@esbuild/darwin-x64': 0.17.17 1172 | '@esbuild/freebsd-arm64': 0.17.17 1173 | '@esbuild/freebsd-x64': 0.17.17 1174 | '@esbuild/linux-arm': 0.17.17 1175 | '@esbuild/linux-arm64': 0.17.17 1176 | '@esbuild/linux-ia32': 0.17.17 1177 | '@esbuild/linux-loong64': 0.17.17 1178 | '@esbuild/linux-mips64el': 0.17.17 1179 | '@esbuild/linux-ppc64': 0.17.17 1180 | '@esbuild/linux-riscv64': 0.17.17 1181 | '@esbuild/linux-s390x': 0.17.17 1182 | '@esbuild/linux-x64': 0.17.17 1183 | '@esbuild/netbsd-x64': 0.17.17 1184 | '@esbuild/openbsd-x64': 0.17.17 1185 | '@esbuild/sunos-x64': 0.17.17 1186 | '@esbuild/win32-arm64': 0.17.17 1187 | '@esbuild/win32-ia32': 0.17.17 1188 | '@esbuild/win32-x64': 0.17.17 1189 | dev: true 1190 | 1191 | /escalade/3.1.1: 1192 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1193 | engines: {node: '>=6'} 1194 | dev: true 1195 | 1196 | /escape-html/1.0.3: 1197 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1198 | dev: false 1199 | 1200 | /esm-env/1.0.0: 1201 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 1202 | dev: true 1203 | 1204 | /etag/1.8.1: 1205 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1206 | engines: {node: '>= 0.6'} 1207 | dev: false 1208 | 1209 | /eventemitter3/4.0.7: 1210 | resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} 1211 | dev: false 1212 | 1213 | /express-jwt/8.4.1: 1214 | resolution: {integrity: sha512-IZoZiDv2yZJAb3QrbaSATVtTCYT11OcqgFGoTN4iKVyN6NBkBkhtVIixww5fmakF0Upt5HfOxJuS6ZmJVeOtTQ==} 1215 | engines: {node: '>= 8.0.0'} 1216 | dependencies: 1217 | '@types/jsonwebtoken': 9.0.2 1218 | express-unless: 2.1.3 1219 | jsonwebtoken: 9.0.0 1220 | dev: false 1221 | 1222 | /express-unless/2.1.3: 1223 | resolution: {integrity: sha512-wj4tLMyCVYuIIKHGt0FhCtIViBcwzWejX0EjNxveAa6dG+0XBCQhMbx+PnkLkFCxLC69qoFrxds4pIyL88inaQ==} 1224 | dev: false 1225 | 1226 | /express/4.18.2: 1227 | resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} 1228 | engines: {node: '>= 0.10.0'} 1229 | dependencies: 1230 | accepts: 1.3.8 1231 | array-flatten: 1.1.1 1232 | body-parser: 1.20.1 1233 | content-disposition: 0.5.4 1234 | content-type: 1.0.5 1235 | cookie: 0.5.0 1236 | cookie-signature: 1.0.6 1237 | debug: 2.6.9 1238 | depd: 2.0.0 1239 | encodeurl: 1.0.2 1240 | escape-html: 1.0.3 1241 | etag: 1.8.1 1242 | finalhandler: 1.2.0 1243 | fresh: 0.5.2 1244 | http-errors: 2.0.0 1245 | merge-descriptors: 1.0.1 1246 | methods: 1.1.2 1247 | on-finished: 2.4.1 1248 | parseurl: 1.3.3 1249 | path-to-regexp: 0.1.7 1250 | proxy-addr: 2.0.7 1251 | qs: 6.11.0 1252 | range-parser: 1.2.1 1253 | safe-buffer: 5.2.1 1254 | send: 0.18.0 1255 | serve-static: 1.15.0 1256 | setprototypeof: 1.2.0 1257 | statuses: 2.0.1 1258 | type-is: 1.6.18 1259 | utils-merge: 1.0.1 1260 | vary: 1.1.2 1261 | transitivePeerDependencies: 1262 | - supports-color 1263 | dev: false 1264 | 1265 | /fast-glob/3.2.12: 1266 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1267 | engines: {node: '>=8.6.0'} 1268 | dependencies: 1269 | '@nodelib/fs.stat': 2.0.5 1270 | '@nodelib/fs.walk': 1.2.8 1271 | glob-parent: 5.1.2 1272 | merge2: 1.4.1 1273 | micromatch: 4.0.5 1274 | dev: true 1275 | 1276 | /fastq/1.15.0: 1277 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1278 | dependencies: 1279 | reusify: 1.0.4 1280 | dev: true 1281 | 1282 | /fill-range/7.0.1: 1283 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1284 | engines: {node: '>=8'} 1285 | dependencies: 1286 | to-regex-range: 5.0.1 1287 | dev: true 1288 | 1289 | /finalhandler/1.2.0: 1290 | resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} 1291 | engines: {node: '>= 0.8'} 1292 | dependencies: 1293 | debug: 2.6.9 1294 | encodeurl: 1.0.2 1295 | escape-html: 1.0.3 1296 | on-finished: 2.4.1 1297 | parseurl: 1.3.3 1298 | statuses: 2.0.1 1299 | unpipe: 1.0.0 1300 | transitivePeerDependencies: 1301 | - supports-color 1302 | dev: false 1303 | 1304 | /follow-redirects/1.15.2: 1305 | resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} 1306 | engines: {node: '>=4.0'} 1307 | peerDependencies: 1308 | debug: '*' 1309 | peerDependenciesMeta: 1310 | debug: 1311 | optional: true 1312 | dev: false 1313 | 1314 | /form-data/4.0.0: 1315 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1316 | engines: {node: '>= 6'} 1317 | dependencies: 1318 | asynckit: 0.4.0 1319 | combined-stream: 1.0.8 1320 | mime-types: 2.1.35 1321 | dev: false 1322 | 1323 | /forwarded/0.2.0: 1324 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1325 | engines: {node: '>= 0.6'} 1326 | dev: false 1327 | 1328 | /fraction.js/4.2.0: 1329 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 1330 | dev: true 1331 | 1332 | /fresh/0.5.2: 1333 | resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 1334 | engines: {node: '>= 0.6'} 1335 | dev: false 1336 | 1337 | /fs-minipass/2.1.0: 1338 | resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} 1339 | engines: {node: '>= 8'} 1340 | dependencies: 1341 | minipass: 3.3.6 1342 | dev: false 1343 | 1344 | /fs.realpath/1.0.0: 1345 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1346 | 1347 | /fsevents/2.3.2: 1348 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1349 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1350 | os: [darwin] 1351 | requiresBuild: true 1352 | dev: true 1353 | optional: true 1354 | 1355 | /function-bind/1.1.1: 1356 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1357 | 1358 | /gauge/3.0.2: 1359 | resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} 1360 | engines: {node: '>=10'} 1361 | dependencies: 1362 | aproba: 2.0.0 1363 | color-support: 1.1.3 1364 | console-control-strings: 1.1.0 1365 | has-unicode: 2.0.1 1366 | object-assign: 4.1.1 1367 | signal-exit: 3.0.7 1368 | string-width: 4.2.3 1369 | strip-ansi: 6.0.1 1370 | wide-align: 1.1.5 1371 | dev: false 1372 | 1373 | /get-func-name/2.0.0: 1374 | resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} 1375 | dev: true 1376 | 1377 | /get-intrinsic/1.2.0: 1378 | resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} 1379 | dependencies: 1380 | function-bind: 1.1.1 1381 | has: 1.0.3 1382 | has-symbols: 1.0.3 1383 | dev: false 1384 | 1385 | /gibberish/0.1.2: 1386 | resolution: {integrity: sha512-E8jr5W/Std5zm9KkF6NPJr7JfQSjqpdVAE/nDK5MdVmmWj1lcHUeOsEwAW3ASKp4qe6Da7LRtHAxrsWXy86wVg==} 1387 | dev: false 1388 | 1389 | /glob-parent/5.1.2: 1390 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1391 | engines: {node: '>= 6'} 1392 | dependencies: 1393 | is-glob: 4.0.3 1394 | dev: true 1395 | 1396 | /glob-parent/6.0.2: 1397 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1398 | engines: {node: '>=10.13.0'} 1399 | dependencies: 1400 | is-glob: 4.0.3 1401 | dev: true 1402 | 1403 | /glob/7.1.6: 1404 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1405 | dependencies: 1406 | fs.realpath: 1.0.0 1407 | inflight: 1.0.6 1408 | inherits: 2.0.4 1409 | minimatch: 3.1.2 1410 | once: 1.4.0 1411 | path-is-absolute: 1.0.1 1412 | dev: true 1413 | 1414 | /glob/7.2.3: 1415 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1416 | dependencies: 1417 | fs.realpath: 1.0.0 1418 | inflight: 1.0.6 1419 | inherits: 2.0.4 1420 | minimatch: 3.1.2 1421 | once: 1.4.0 1422 | path-is-absolute: 1.0.1 1423 | 1424 | /globalyzer/0.1.0: 1425 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1426 | dev: true 1427 | 1428 | /globrex/0.1.2: 1429 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1430 | dev: true 1431 | 1432 | /graceful-fs/4.2.11: 1433 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1434 | dev: true 1435 | 1436 | /has-symbols/1.0.3: 1437 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1438 | engines: {node: '>= 0.4'} 1439 | dev: false 1440 | 1441 | /has-unicode/2.0.1: 1442 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 1443 | dev: false 1444 | 1445 | /has/1.0.3: 1446 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1447 | engines: {node: '>= 0.4.0'} 1448 | dependencies: 1449 | function-bind: 1.1.1 1450 | 1451 | /http-errors/2.0.0: 1452 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1453 | engines: {node: '>= 0.8'} 1454 | dependencies: 1455 | depd: 2.0.0 1456 | inherits: 2.0.4 1457 | setprototypeof: 1.2.0 1458 | statuses: 2.0.1 1459 | toidentifier: 1.0.1 1460 | dev: false 1461 | 1462 | /https-proxy-agent/5.0.1: 1463 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 1464 | engines: {node: '>= 6'} 1465 | dependencies: 1466 | agent-base: 6.0.2 1467 | debug: 4.3.4 1468 | transitivePeerDependencies: 1469 | - supports-color 1470 | dev: false 1471 | 1472 | /iconv-lite/0.4.24: 1473 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1474 | engines: {node: '>=0.10.0'} 1475 | dependencies: 1476 | safer-buffer: 2.1.2 1477 | dev: false 1478 | 1479 | /ieee754/1.2.1: 1480 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1481 | dev: false 1482 | 1483 | /import-fresh/3.3.0: 1484 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1485 | engines: {node: '>=6'} 1486 | dependencies: 1487 | parent-module: 1.0.1 1488 | resolve-from: 4.0.0 1489 | dev: true 1490 | 1491 | /import-meta-resolve/2.2.2: 1492 | resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} 1493 | dev: true 1494 | 1495 | /inflight/1.0.6: 1496 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1497 | dependencies: 1498 | once: 1.4.0 1499 | wrappy: 1.0.2 1500 | 1501 | /inherits/2.0.4: 1502 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1503 | 1504 | /ipaddr.js/1.9.1: 1505 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1506 | engines: {node: '>= 0.10'} 1507 | dev: false 1508 | 1509 | /is-binary-path/2.1.0: 1510 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1511 | engines: {node: '>=8'} 1512 | dependencies: 1513 | binary-extensions: 2.2.0 1514 | dev: true 1515 | 1516 | /is-core-module/2.12.0: 1517 | resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} 1518 | dependencies: 1519 | has: 1.0.3 1520 | dev: true 1521 | 1522 | /is-extglob/2.1.1: 1523 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1524 | engines: {node: '>=0.10.0'} 1525 | dev: true 1526 | 1527 | /is-fullwidth-code-point/3.0.0: 1528 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1529 | engines: {node: '>=8'} 1530 | dev: false 1531 | 1532 | /is-glob/4.0.3: 1533 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1534 | engines: {node: '>=0.10.0'} 1535 | dependencies: 1536 | is-extglob: 2.1.1 1537 | dev: true 1538 | 1539 | /is-number/7.0.0: 1540 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1541 | engines: {node: '>=0.12.0'} 1542 | dev: true 1543 | 1544 | /jiti/1.18.2: 1545 | resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} 1546 | hasBin: true 1547 | dev: true 1548 | 1549 | /jose-node-cjs-runtime/4.14.4: 1550 | resolution: {integrity: sha512-TghZ/SRDuDTDKfqHfDZzZ4doEH9bnVWi1mCCvQfKAc8keDSnZP4+8HKnhUgtae/Jphhc10m2+vbkb4+LrxIn+g==} 1551 | dev: false 1552 | 1553 | /jose/4.14.4: 1554 | resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==} 1555 | dev: false 1556 | 1557 | /jsonc-parser/3.2.0: 1558 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} 1559 | dev: false 1560 | 1561 | /jsonwebtoken/9.0.0: 1562 | resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} 1563 | engines: {node: '>=12', npm: '>=6'} 1564 | dependencies: 1565 | jws: 3.2.2 1566 | lodash: 4.17.21 1567 | ms: 2.1.3 1568 | semver: 7.5.0 1569 | dev: false 1570 | 1571 | /jsrsasign-util/1.0.5: 1572 | resolution: {integrity: sha512-e5Kp8aaT5GH2c5X8j4uaJruYmT4GcnaGb47nw8m60YqPywtnOtTISZ9hZgtZ3a+jh7B27bU2LCf3Y32wZyfhtQ==} 1573 | dependencies: 1574 | jsonc-parser: 3.2.0 1575 | jsrsasign: 10.8.6 1576 | dev: false 1577 | 1578 | /jsrsasign/10.8.6: 1579 | resolution: {integrity: sha512-bQmbVtsfbgaKBTWCKiDCPlUPbdlRIK/FzSwT3BzIgZl/cU6TqXu6pZJsCI/dJVrZ9Gir5GC4woqw9shH/v7MBw==} 1580 | dev: false 1581 | 1582 | /jwa/1.4.1: 1583 | resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} 1584 | dependencies: 1585 | buffer-equal-constant-time: 1.0.1 1586 | ecdsa-sig-formatter: 1.0.11 1587 | safe-buffer: 5.2.1 1588 | dev: false 1589 | 1590 | /jws/3.2.2: 1591 | resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} 1592 | dependencies: 1593 | jwa: 1.4.1 1594 | safe-buffer: 5.2.1 1595 | dev: false 1596 | 1597 | /jwt-client/0.2.1: 1598 | resolution: {integrity: sha512-TGNCdhPtr+GQWX1IweESBN8P/5kobiOC9Q07UntpZ90JwSeLaqtT0vgblTkxZfMa8U5vLxmpNyjRq9I6ZHzxOw==} 1599 | dev: false 1600 | 1601 | /jwt-simple/0.5.6: 1602 | resolution: {integrity: sha512-40aUybvhH9t2h71ncA1/1SbtTNCVZHgsTsTgqPUxGWDmUDrXyDf2wMNQKEbdBjbf4AI+fQhbECNTV6lWxQKUzg==} 1603 | engines: {node: '>= 0.4.0'} 1604 | dev: false 1605 | 1606 | /kleur/4.1.5: 1607 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1608 | engines: {node: '>=6'} 1609 | dev: true 1610 | 1611 | /lilconfig/2.1.0: 1612 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1613 | engines: {node: '>=10'} 1614 | dev: true 1615 | 1616 | /lines-and-columns/1.2.4: 1617 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1618 | dev: true 1619 | 1620 | /local-pkg/0.4.3: 1621 | resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} 1622 | engines: {node: '>=14'} 1623 | dev: true 1624 | 1625 | /lodash/4.17.21: 1626 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1627 | dev: false 1628 | 1629 | /loupe/2.3.6: 1630 | resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} 1631 | dependencies: 1632 | get-func-name: 2.0.0 1633 | dev: true 1634 | 1635 | /lru-cache/6.0.0: 1636 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1637 | engines: {node: '>=10'} 1638 | dependencies: 1639 | yallist: 4.0.0 1640 | dev: false 1641 | 1642 | /magic-string/0.27.0: 1643 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 1644 | engines: {node: '>=12'} 1645 | dependencies: 1646 | '@jridgewell/sourcemap-codec': 1.4.15 1647 | dev: true 1648 | 1649 | /magic-string/0.30.0: 1650 | resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} 1651 | engines: {node: '>=12'} 1652 | dependencies: 1653 | '@jridgewell/sourcemap-codec': 1.4.15 1654 | dev: true 1655 | 1656 | /make-dir/3.1.0: 1657 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 1658 | engines: {node: '>=8'} 1659 | dependencies: 1660 | semver: 6.3.0 1661 | dev: false 1662 | 1663 | /make-error/1.3.6: 1664 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1665 | 1666 | /media-typer/0.3.0: 1667 | resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 1668 | engines: {node: '>= 0.6'} 1669 | dev: false 1670 | 1671 | /merge-descriptors/1.0.1: 1672 | resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} 1673 | dev: false 1674 | 1675 | /merge2/1.4.1: 1676 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1677 | engines: {node: '>= 8'} 1678 | dev: true 1679 | 1680 | /methods/1.1.2: 1681 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 1682 | engines: {node: '>= 0.6'} 1683 | dev: false 1684 | 1685 | /micromatch/4.0.5: 1686 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1687 | engines: {node: '>=8.6'} 1688 | dependencies: 1689 | braces: 3.0.2 1690 | picomatch: 2.3.1 1691 | dev: true 1692 | 1693 | /mime-db/1.52.0: 1694 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1695 | engines: {node: '>= 0.6'} 1696 | dev: false 1697 | 1698 | /mime-types/2.1.35: 1699 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1700 | engines: {node: '>= 0.6'} 1701 | dependencies: 1702 | mime-db: 1.52.0 1703 | dev: false 1704 | 1705 | /mime/1.6.0: 1706 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 1707 | engines: {node: '>=4'} 1708 | hasBin: true 1709 | dev: false 1710 | 1711 | /mime/3.0.0: 1712 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1713 | engines: {node: '>=10.0.0'} 1714 | hasBin: true 1715 | dev: true 1716 | 1717 | /min-indent/1.0.1: 1718 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1719 | engines: {node: '>=4'} 1720 | dev: true 1721 | 1722 | /minimatch/3.1.2: 1723 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1724 | dependencies: 1725 | brace-expansion: 1.1.11 1726 | 1727 | /minimist/1.2.8: 1728 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1729 | dev: true 1730 | 1731 | /minipass/3.3.6: 1732 | resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} 1733 | engines: {node: '>=8'} 1734 | dependencies: 1735 | yallist: 4.0.0 1736 | dev: false 1737 | 1738 | /minipass/4.2.8: 1739 | resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} 1740 | engines: {node: '>=8'} 1741 | dev: false 1742 | 1743 | /minizlib/2.1.2: 1744 | resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} 1745 | engines: {node: '>= 8'} 1746 | dependencies: 1747 | minipass: 3.3.6 1748 | yallist: 4.0.0 1749 | dev: false 1750 | 1751 | /mkdirp/0.5.6: 1752 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 1753 | hasBin: true 1754 | dependencies: 1755 | minimist: 1.2.8 1756 | dev: true 1757 | 1758 | /mkdirp/1.0.4: 1759 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 1760 | engines: {node: '>=10'} 1761 | hasBin: true 1762 | dev: false 1763 | 1764 | /mri/1.2.0: 1765 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1766 | engines: {node: '>=4'} 1767 | dev: true 1768 | 1769 | /mrmime/1.0.1: 1770 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} 1771 | engines: {node: '>=10'} 1772 | dev: true 1773 | 1774 | /ms/0.7.1: 1775 | resolution: {integrity: sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==} 1776 | dev: false 1777 | 1778 | /ms/2.0.0: 1779 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1780 | dev: false 1781 | 1782 | /ms/2.1.2: 1783 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1784 | 1785 | /ms/2.1.3: 1786 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1787 | dev: false 1788 | 1789 | /mz/2.7.0: 1790 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1791 | dependencies: 1792 | any-promise: 1.3.0 1793 | object-assign: 4.1.1 1794 | thenify-all: 1.6.0 1795 | dev: true 1796 | 1797 | /nanoid/3.3.6: 1798 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1799 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1800 | hasBin: true 1801 | dev: true 1802 | 1803 | /negotiator/0.6.3: 1804 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 1805 | engines: {node: '>= 0.6'} 1806 | dev: false 1807 | 1808 | /node-addon-api/5.1.0: 1809 | resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} 1810 | dev: false 1811 | 1812 | /node-fetch/2.6.9: 1813 | resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} 1814 | engines: {node: 4.x || >=6.0.0} 1815 | peerDependencies: 1816 | encoding: ^0.1.0 1817 | peerDependenciesMeta: 1818 | encoding: 1819 | optional: true 1820 | dependencies: 1821 | whatwg-url: 5.0.0 1822 | dev: false 1823 | 1824 | /node-releases/2.0.10: 1825 | resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} 1826 | dev: true 1827 | 1828 | /nopt/5.0.0: 1829 | resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} 1830 | engines: {node: '>=6'} 1831 | hasBin: true 1832 | dependencies: 1833 | abbrev: 1.1.1 1834 | dev: false 1835 | 1836 | /normalize-path/3.0.0: 1837 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1838 | engines: {node: '>=0.10.0'} 1839 | dev: true 1840 | 1841 | /normalize-range/0.1.2: 1842 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1843 | engines: {node: '>=0.10.0'} 1844 | dev: true 1845 | 1846 | /npmlog/5.0.1: 1847 | resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} 1848 | dependencies: 1849 | are-we-there-yet: 2.0.0 1850 | console-control-strings: 1.1.0 1851 | gauge: 3.0.2 1852 | set-blocking: 2.0.0 1853 | dev: false 1854 | 1855 | /object-assign/4.1.1: 1856 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1857 | engines: {node: '>=0.10.0'} 1858 | 1859 | /object-hash/3.0.0: 1860 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1861 | engines: {node: '>= 6'} 1862 | dev: true 1863 | 1864 | /object-inspect/1.12.3: 1865 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 1866 | dev: false 1867 | 1868 | /on-finished/2.4.1: 1869 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 1870 | engines: {node: '>= 0.8'} 1871 | dependencies: 1872 | ee-first: 1.1.1 1873 | dev: false 1874 | 1875 | /once/1.4.0: 1876 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1877 | dependencies: 1878 | wrappy: 1.0.2 1879 | 1880 | /parent-module/1.0.1: 1881 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1882 | engines: {node: '>=6'} 1883 | dependencies: 1884 | callsites: 3.1.0 1885 | dev: true 1886 | 1887 | /parseurl/1.3.3: 1888 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 1889 | engines: {node: '>= 0.8'} 1890 | dev: false 1891 | 1892 | /path-is-absolute/1.0.1: 1893 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1894 | engines: {node: '>=0.10.0'} 1895 | 1896 | /path-parse/1.0.7: 1897 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1898 | dev: true 1899 | 1900 | /path-to-regexp/0.1.7: 1901 | resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} 1902 | dev: false 1903 | 1904 | /pathval/1.1.1: 1905 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 1906 | dev: true 1907 | 1908 | /peerjs-js-binarypack/1.0.1: 1909 | resolution: {integrity: sha512-N6aeia3NhdpV7kiGxJV5xQiZZCVEEVjRz2T2C6UZQiBkHWHzUv/oWA4myQLcwBwO8LUoR1KWW5oStvwVesmfCg==} 1910 | dev: false 1911 | 1912 | /peerjs/1.4.7: 1913 | resolution: {integrity: sha512-dWE2HIGvJO0Hm8lYHJiO/5OWl8xYtGcAuU08To1HMIfhh76ULzkCS3NIQO/PZm4noO1RhaGTkQaQ6sbAss6/Tg==} 1914 | engines: {node: '>= 10'} 1915 | dependencies: 1916 | '@swc/helpers': 0.3.17 1917 | eventemitter3: 4.0.7 1918 | peerjs-js-binarypack: 1.0.1 1919 | webrtc-adapter: 7.7.1 1920 | dev: false 1921 | 1922 | /picocolors/1.0.0: 1923 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1924 | dev: true 1925 | 1926 | /picomatch/2.3.1: 1927 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1928 | engines: {node: '>=8.6'} 1929 | dev: true 1930 | 1931 | /pify/2.3.0: 1932 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1933 | engines: {node: '>=0.10.0'} 1934 | dev: true 1935 | 1936 | /pirates/4.0.5: 1937 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 1938 | engines: {node: '>= 6'} 1939 | dev: true 1940 | 1941 | /playwright-core/1.32.3: 1942 | resolution: {integrity: sha512-SB+cdrnu74ZIn5Ogh/8278ngEh9NEEV0vR4sJFmK04h2iZpybfbqBY0bX6+BLYWVdV12JLLI+JEFtSnYgR+mWg==} 1943 | engines: {node: '>=14'} 1944 | hasBin: true 1945 | dev: true 1946 | 1947 | /postcss-import/14.1.0_postcss@8.4.23: 1948 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} 1949 | engines: {node: '>=10.0.0'} 1950 | peerDependencies: 1951 | postcss: ^8.0.0 1952 | dependencies: 1953 | postcss: 8.4.23 1954 | postcss-value-parser: 4.2.0 1955 | read-cache: 1.0.0 1956 | resolve: 1.22.2 1957 | dev: true 1958 | 1959 | /postcss-js/4.0.1_postcss@8.4.23: 1960 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1961 | engines: {node: ^12 || ^14 || >= 16} 1962 | peerDependencies: 1963 | postcss: ^8.4.21 1964 | dependencies: 1965 | camelcase-css: 2.0.1 1966 | postcss: 8.4.23 1967 | dev: true 1968 | 1969 | /postcss-load-config/3.1.4_3fojqsmttcn75cbnzsztj3o6qa: 1970 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1971 | engines: {node: '>= 10'} 1972 | peerDependencies: 1973 | postcss: '>=8.0.9' 1974 | ts-node: '>=9.0.0' 1975 | peerDependenciesMeta: 1976 | postcss: 1977 | optional: true 1978 | ts-node: 1979 | optional: true 1980 | dependencies: 1981 | lilconfig: 2.1.0 1982 | postcss: 8.4.23 1983 | ts-node: 10.9.1_typescript@4.9.5 1984 | yaml: 1.10.2 1985 | dev: true 1986 | 1987 | /postcss-nested/6.0.0_postcss@8.4.23: 1988 | resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} 1989 | engines: {node: '>=12.0'} 1990 | peerDependencies: 1991 | postcss: ^8.2.14 1992 | dependencies: 1993 | postcss: 8.4.23 1994 | postcss-selector-parser: 6.0.11 1995 | dev: true 1996 | 1997 | /postcss-selector-parser/6.0.11: 1998 | resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} 1999 | engines: {node: '>=4'} 2000 | dependencies: 2001 | cssesc: 3.0.0 2002 | util-deprecate: 1.0.2 2003 | dev: true 2004 | 2005 | /postcss-value-parser/4.2.0: 2006 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2007 | dev: true 2008 | 2009 | /postcss/8.4.23: 2010 | resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} 2011 | engines: {node: ^10 || ^12 || >=14} 2012 | dependencies: 2013 | nanoid: 3.3.6 2014 | picocolors: 1.0.0 2015 | source-map-js: 1.0.2 2016 | dev: true 2017 | 2018 | /prettier-plugin-svelte/2.10.0_ur5pqdgn24bclu6l6i7qojopk4: 2019 | resolution: {integrity: sha512-GXMY6t86thctyCvQq+jqElO+MKdB09BkL3hexyGP3Oi8XLKRFaJP1ud/xlWCZ9ZIa2BxHka32zhHfcuU+XsRQg==} 2020 | peerDependencies: 2021 | prettier: ^1.16.4 || ^2.0.0 2022 | svelte: ^3.2.0 2023 | dependencies: 2024 | prettier: 2.8.7 2025 | svelte: 3.58.0 2026 | dev: true 2027 | 2028 | /prettier/2.8.7: 2029 | resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} 2030 | engines: {node: '>=10.13.0'} 2031 | hasBin: true 2032 | dev: true 2033 | 2034 | /prisma/4.13.0: 2035 | resolution: {integrity: sha512-L9mqjnSmvWIRCYJ9mQkwCtj4+JDYYTdhoyo8hlsHNDXaZLh/b4hR0IoKIBbTKxZuyHQzLopb/+0Rvb69uGV7uA==} 2036 | engines: {node: '>=14.17'} 2037 | hasBin: true 2038 | requiresBuild: true 2039 | dependencies: 2040 | '@prisma/engines': 4.13.0 2041 | dev: false 2042 | 2043 | /proxy-addr/2.0.7: 2044 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 2045 | engines: {node: '>= 0.10'} 2046 | dependencies: 2047 | forwarded: 0.2.0 2048 | ipaddr.js: 1.9.1 2049 | dev: false 2050 | 2051 | /proxy-from-env/1.1.0: 2052 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} 2053 | dev: false 2054 | 2055 | /qs/6.11.0: 2056 | resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} 2057 | engines: {node: '>=0.6'} 2058 | dependencies: 2059 | side-channel: 1.0.4 2060 | dev: false 2061 | 2062 | /queue-microtask/1.2.3: 2063 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2064 | dev: true 2065 | 2066 | /quick-lru/5.1.1: 2067 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 2068 | engines: {node: '>=10'} 2069 | dev: true 2070 | 2071 | /range-parser/1.2.1: 2072 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 2073 | engines: {node: '>= 0.6'} 2074 | dev: false 2075 | 2076 | /raw-body/2.5.1: 2077 | resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} 2078 | engines: {node: '>= 0.8'} 2079 | dependencies: 2080 | bytes: 3.1.2 2081 | http-errors: 2.0.0 2082 | iconv-lite: 0.4.24 2083 | unpipe: 1.0.0 2084 | dev: false 2085 | 2086 | /raw-body/2.5.2: 2087 | resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} 2088 | engines: {node: '>= 0.8'} 2089 | dependencies: 2090 | bytes: 3.1.2 2091 | http-errors: 2.0.0 2092 | iconv-lite: 0.4.24 2093 | unpipe: 1.0.0 2094 | dev: false 2095 | 2096 | /read-cache/1.0.0: 2097 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2098 | dependencies: 2099 | pify: 2.3.0 2100 | dev: true 2101 | 2102 | /readable-stream/3.6.2: 2103 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 2104 | engines: {node: '>= 6'} 2105 | dependencies: 2106 | inherits: 2.0.4 2107 | string_decoder: 1.3.0 2108 | util-deprecate: 1.0.2 2109 | dev: false 2110 | 2111 | /readdirp/3.6.0: 2112 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2113 | engines: {node: '>=8.10.0'} 2114 | dependencies: 2115 | picomatch: 2.3.1 2116 | dev: true 2117 | 2118 | /resolve-from/4.0.0: 2119 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2120 | engines: {node: '>=4'} 2121 | dev: true 2122 | 2123 | /resolve/1.22.2: 2124 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 2125 | hasBin: true 2126 | dependencies: 2127 | is-core-module: 2.12.0 2128 | path-parse: 1.0.7 2129 | supports-preserve-symlinks-flag: 1.0.0 2130 | dev: true 2131 | 2132 | /reusify/1.0.4: 2133 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2134 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2135 | dev: true 2136 | 2137 | /rimraf/2.7.1: 2138 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 2139 | hasBin: true 2140 | dependencies: 2141 | glob: 7.2.3 2142 | dev: true 2143 | 2144 | /rimraf/3.0.2: 2145 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2146 | hasBin: true 2147 | dependencies: 2148 | glob: 7.2.3 2149 | dev: false 2150 | 2151 | /rollup/3.20.7: 2152 | resolution: {integrity: sha512-P7E2zezKSLhWnTz46XxjSmInrbOCiul1yf+kJccMxT56vxjHwCbDfoLbiqFgu+WQoo9ij2PkraYaBstgB2prBA==} 2153 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 2154 | hasBin: true 2155 | optionalDependencies: 2156 | fsevents: 2.3.2 2157 | dev: true 2158 | 2159 | /rtcpeerconnection-shim/1.2.15: 2160 | resolution: {integrity: sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw==} 2161 | engines: {node: '>=6.0.0', npm: '>=3.10.0'} 2162 | dependencies: 2163 | sdp: 2.12.0 2164 | dev: false 2165 | 2166 | /run-parallel/1.2.0: 2167 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2168 | dependencies: 2169 | queue-microtask: 1.2.3 2170 | dev: true 2171 | 2172 | /sade/1.8.1: 2173 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 2174 | engines: {node: '>=6'} 2175 | dependencies: 2176 | mri: 1.2.0 2177 | dev: true 2178 | 2179 | /safe-buffer/5.2.1: 2180 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2181 | dev: false 2182 | 2183 | /safer-buffer/2.1.2: 2184 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2185 | dev: false 2186 | 2187 | /sander/0.5.1: 2188 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 2189 | dependencies: 2190 | es6-promise: 3.3.1 2191 | graceful-fs: 4.2.11 2192 | mkdirp: 0.5.6 2193 | rimraf: 2.7.1 2194 | dev: true 2195 | 2196 | /sdp/2.12.0: 2197 | resolution: {integrity: sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==} 2198 | dev: false 2199 | 2200 | /semver/6.3.0: 2201 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2202 | hasBin: true 2203 | dev: false 2204 | 2205 | /semver/7.5.0: 2206 | resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} 2207 | engines: {node: '>=10'} 2208 | hasBin: true 2209 | dependencies: 2210 | lru-cache: 6.0.0 2211 | dev: false 2212 | 2213 | /send/0.18.0: 2214 | resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} 2215 | engines: {node: '>= 0.8.0'} 2216 | dependencies: 2217 | debug: 2.6.9 2218 | depd: 2.0.0 2219 | destroy: 1.2.0 2220 | encodeurl: 1.0.2 2221 | escape-html: 1.0.3 2222 | etag: 1.8.1 2223 | fresh: 0.5.2 2224 | http-errors: 2.0.0 2225 | mime: 1.6.0 2226 | ms: 2.1.3 2227 | on-finished: 2.4.1 2228 | range-parser: 1.2.1 2229 | statuses: 2.0.1 2230 | transitivePeerDependencies: 2231 | - supports-color 2232 | dev: false 2233 | 2234 | /serve-static/1.15.0: 2235 | resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} 2236 | engines: {node: '>= 0.8.0'} 2237 | dependencies: 2238 | encodeurl: 1.0.2 2239 | escape-html: 1.0.3 2240 | parseurl: 1.3.3 2241 | send: 0.18.0 2242 | transitivePeerDependencies: 2243 | - supports-color 2244 | dev: false 2245 | 2246 | /set-blocking/2.0.0: 2247 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 2248 | dev: false 2249 | 2250 | /set-cookie-parser/2.6.0: 2251 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 2252 | dev: true 2253 | 2254 | /setprototypeof/1.2.0: 2255 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 2256 | dev: false 2257 | 2258 | /side-channel/1.0.4: 2259 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2260 | dependencies: 2261 | call-bind: 1.0.2 2262 | get-intrinsic: 1.2.0 2263 | object-inspect: 1.12.3 2264 | dev: false 2265 | 2266 | /signal-exit/3.0.7: 2267 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2268 | dev: false 2269 | 2270 | /sirv/2.0.2: 2271 | resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} 2272 | engines: {node: '>= 10'} 2273 | dependencies: 2274 | '@polka/url': 1.0.0-next.21 2275 | mrmime: 1.0.1 2276 | totalist: 3.0.1 2277 | dev: true 2278 | 2279 | /socket.io-adapter/2.5.2: 2280 | resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} 2281 | dependencies: 2282 | ws: 8.11.0 2283 | transitivePeerDependencies: 2284 | - bufferutil 2285 | - utf-8-validate 2286 | dev: false 2287 | 2288 | /socket.io-client/4.6.1: 2289 | resolution: {integrity: sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==} 2290 | engines: {node: '>=10.0.0'} 2291 | dependencies: 2292 | '@socket.io/component-emitter': 3.1.0 2293 | debug: 4.3.4 2294 | engine.io-client: 6.4.0 2295 | socket.io-parser: 4.2.2 2296 | transitivePeerDependencies: 2297 | - bufferutil 2298 | - supports-color 2299 | - utf-8-validate 2300 | dev: false 2301 | 2302 | /socket.io-parser/4.2.2: 2303 | resolution: {integrity: sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==} 2304 | engines: {node: '>=10.0.0'} 2305 | dependencies: 2306 | '@socket.io/component-emitter': 3.1.0 2307 | debug: 4.3.4 2308 | transitivePeerDependencies: 2309 | - supports-color 2310 | dev: false 2311 | 2312 | /socket.io-stream/0.9.1: 2313 | resolution: {integrity: sha512-yBSvp1RGwhLOP/XmgdlrCtf2rOMX1XvbPqceYuJd7tjxCI5p1dnPXS5p9zRPozUYa+/b2+sGHrqShY7Z5lVfwg==} 2314 | dependencies: 2315 | component-bind: 1.0.0 2316 | debug: 2.2.0 2317 | transitivePeerDependencies: 2318 | - supports-color 2319 | dev: false 2320 | 2321 | /socket.io/4.6.1: 2322 | resolution: {integrity: sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==} 2323 | engines: {node: '>=10.0.0'} 2324 | dependencies: 2325 | accepts: 1.3.8 2326 | base64id: 2.0.0 2327 | debug: 4.3.4 2328 | engine.io: 6.4.1 2329 | socket.io-adapter: 2.5.2 2330 | socket.io-parser: 4.2.2 2331 | transitivePeerDependencies: 2332 | - bufferutil 2333 | - supports-color 2334 | - utf-8-validate 2335 | dev: false 2336 | 2337 | /sorcery/0.11.0: 2338 | resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} 2339 | hasBin: true 2340 | dependencies: 2341 | '@jridgewell/sourcemap-codec': 1.4.15 2342 | buffer-crc32: 0.2.13 2343 | minimist: 1.2.8 2344 | sander: 0.5.1 2345 | dev: true 2346 | 2347 | /source-map-js/1.0.2: 2348 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2349 | engines: {node: '>=0.10.0'} 2350 | dev: true 2351 | 2352 | /source-map/0.6.1: 2353 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2354 | engines: {node: '>=0.10.0'} 2355 | dev: true 2356 | 2357 | /statuses/2.0.1: 2358 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 2359 | engines: {node: '>= 0.8'} 2360 | dev: false 2361 | 2362 | /streamsearch/1.1.0: 2363 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 2364 | engines: {node: '>=10.0.0'} 2365 | dev: true 2366 | 2367 | /string-width/4.2.3: 2368 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2369 | engines: {node: '>=8'} 2370 | dependencies: 2371 | emoji-regex: 8.0.0 2372 | is-fullwidth-code-point: 3.0.0 2373 | strip-ansi: 6.0.1 2374 | dev: false 2375 | 2376 | /string_decoder/1.3.0: 2377 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 2378 | dependencies: 2379 | safe-buffer: 5.2.1 2380 | dev: false 2381 | 2382 | /strip-ansi/6.0.1: 2383 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2384 | engines: {node: '>=8'} 2385 | dependencies: 2386 | ansi-regex: 5.0.1 2387 | dev: false 2388 | 2389 | /strip-indent/3.0.0: 2390 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 2391 | engines: {node: '>=8'} 2392 | dependencies: 2393 | min-indent: 1.0.1 2394 | dev: true 2395 | 2396 | /strip-literal/1.0.1: 2397 | resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} 2398 | dependencies: 2399 | acorn: 8.8.2 2400 | dev: true 2401 | 2402 | /sucrase/3.32.0: 2403 | resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} 2404 | engines: {node: '>=8'} 2405 | hasBin: true 2406 | dependencies: 2407 | '@jridgewell/gen-mapping': 0.3.3 2408 | commander: 4.1.1 2409 | glob: 7.1.6 2410 | lines-and-columns: 1.2.4 2411 | mz: 2.7.0 2412 | pirates: 4.0.5 2413 | ts-interface-checker: 0.1.13 2414 | dev: true 2415 | 2416 | /supports-preserve-symlinks-flag/1.0.0: 2417 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2418 | engines: {node: '>= 0.4'} 2419 | dev: true 2420 | 2421 | /svelte-check/3.2.0_3jsjda4jx6j2l7qclqlom22jie: 2422 | resolution: {integrity: sha512-6ZnscN8dHEN5Eq5LgIzjj07W9nc9myyBH+diXsUAuiY/3rt0l65/LCIQYlIuoFEjp2F1NhXqZiJwV9omPj9tMw==} 2423 | hasBin: true 2424 | peerDependencies: 2425 | svelte: ^3.55.0 2426 | dependencies: 2427 | '@jridgewell/trace-mapping': 0.3.18 2428 | chokidar: 3.5.3 2429 | fast-glob: 3.2.12 2430 | import-fresh: 3.3.0 2431 | picocolors: 1.0.0 2432 | sade: 1.8.1 2433 | svelte: 3.58.0 2434 | svelte-preprocess: 5.0.3_ckjrxifsyvyfrtskdbtjlrnpxa 2435 | typescript: 5.0.4 2436 | transitivePeerDependencies: 2437 | - '@babel/core' 2438 | - coffeescript 2439 | - less 2440 | - postcss 2441 | - postcss-load-config 2442 | - pug 2443 | - sass 2444 | - stylus 2445 | - sugarss 2446 | dev: true 2447 | 2448 | /svelte-hmr/0.15.1_svelte@3.58.0: 2449 | resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==} 2450 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 2451 | peerDependencies: 2452 | svelte: '>=3.19.0' 2453 | dependencies: 2454 | svelte: 3.58.0 2455 | dev: true 2456 | 2457 | /svelte-preprocess/5.0.3_ckjrxifsyvyfrtskdbtjlrnpxa: 2458 | resolution: {integrity: sha512-GrHF1rusdJVbOZOwgPWtpqmaexkydznKzy5qIC2FabgpFyKN57bjMUUUqPRfbBXK5igiEWn1uO/DXsa2vJ5VHA==} 2459 | engines: {node: '>= 14.10.0'} 2460 | requiresBuild: true 2461 | peerDependencies: 2462 | '@babel/core': ^7.10.2 2463 | coffeescript: ^2.5.1 2464 | less: ^3.11.3 || ^4.0.0 2465 | postcss: ^7 || ^8 2466 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 2467 | pug: ^3.0.0 2468 | sass: ^1.26.8 2469 | stylus: ^0.55.0 2470 | sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 2471 | svelte: ^3.23.0 2472 | typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' 2473 | peerDependenciesMeta: 2474 | '@babel/core': 2475 | optional: true 2476 | coffeescript: 2477 | optional: true 2478 | less: 2479 | optional: true 2480 | postcss: 2481 | optional: true 2482 | postcss-load-config: 2483 | optional: true 2484 | pug: 2485 | optional: true 2486 | sass: 2487 | optional: true 2488 | stylus: 2489 | optional: true 2490 | sugarss: 2491 | optional: true 2492 | typescript: 2493 | optional: true 2494 | dependencies: 2495 | '@types/pug': 2.0.6 2496 | detect-indent: 6.1.0 2497 | magic-string: 0.27.0 2498 | postcss: 8.4.23 2499 | sorcery: 0.11.0 2500 | strip-indent: 3.0.0 2501 | svelte: 3.58.0 2502 | typescript: 5.0.4 2503 | dev: true 2504 | 2505 | /svelte/3.58.0: 2506 | resolution: {integrity: sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==} 2507 | engines: {node: '>= 8'} 2508 | dev: true 2509 | 2510 | /tailwindcss/3.3.1_3fojqsmttcn75cbnzsztj3o6qa: 2511 | resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} 2512 | engines: {node: '>=12.13.0'} 2513 | hasBin: true 2514 | peerDependencies: 2515 | postcss: ^8.0.9 2516 | dependencies: 2517 | arg: 5.0.2 2518 | chokidar: 3.5.3 2519 | color-name: 1.1.4 2520 | didyoumean: 1.2.2 2521 | dlv: 1.1.3 2522 | fast-glob: 3.2.12 2523 | glob-parent: 6.0.2 2524 | is-glob: 4.0.3 2525 | jiti: 1.18.2 2526 | lilconfig: 2.1.0 2527 | micromatch: 4.0.5 2528 | normalize-path: 3.0.0 2529 | object-hash: 3.0.0 2530 | picocolors: 1.0.0 2531 | postcss: 8.4.23 2532 | postcss-import: 14.1.0_postcss@8.4.23 2533 | postcss-js: 4.0.1_postcss@8.4.23 2534 | postcss-load-config: 3.1.4_3fojqsmttcn75cbnzsztj3o6qa 2535 | postcss-nested: 6.0.0_postcss@8.4.23 2536 | postcss-selector-parser: 6.0.11 2537 | postcss-value-parser: 4.2.0 2538 | quick-lru: 5.1.1 2539 | resolve: 1.22.2 2540 | sucrase: 3.32.0 2541 | transitivePeerDependencies: 2542 | - ts-node 2543 | dev: true 2544 | 2545 | /tar/6.1.13: 2546 | resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} 2547 | engines: {node: '>=10'} 2548 | dependencies: 2549 | chownr: 2.0.0 2550 | fs-minipass: 2.1.0 2551 | minipass: 4.2.8 2552 | minizlib: 2.1.2 2553 | mkdirp: 1.0.4 2554 | yallist: 4.0.0 2555 | dev: false 2556 | 2557 | /thenify-all/1.6.0: 2558 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2559 | engines: {node: '>=0.8'} 2560 | dependencies: 2561 | thenify: 3.3.1 2562 | dev: true 2563 | 2564 | /thenify/3.3.1: 2565 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2566 | dependencies: 2567 | any-promise: 1.3.0 2568 | dev: true 2569 | 2570 | /tiny-glob/0.2.9: 2571 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 2572 | dependencies: 2573 | globalyzer: 0.1.0 2574 | globrex: 0.1.2 2575 | dev: true 2576 | 2577 | /tinybench/2.4.0: 2578 | resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} 2579 | dev: true 2580 | 2581 | /tinypool/0.3.1: 2582 | resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} 2583 | engines: {node: '>=14.0.0'} 2584 | dev: true 2585 | 2586 | /tinyspy/1.1.1: 2587 | resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} 2588 | engines: {node: '>=14.0.0'} 2589 | dev: true 2590 | 2591 | /to-regex-range/5.0.1: 2592 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2593 | engines: {node: '>=8.0'} 2594 | dependencies: 2595 | is-number: 7.0.0 2596 | dev: true 2597 | 2598 | /toidentifier/1.0.1: 2599 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 2600 | engines: {node: '>=0.6'} 2601 | dev: false 2602 | 2603 | /totalist/3.0.1: 2604 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 2605 | engines: {node: '>=6'} 2606 | dev: true 2607 | 2608 | /tr46/0.0.3: 2609 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 2610 | dev: false 2611 | 2612 | /ts-interface-checker/0.1.13: 2613 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2614 | dev: true 2615 | 2616 | /ts-node/10.9.1_typescript@4.9.5: 2617 | resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} 2618 | hasBin: true 2619 | peerDependencies: 2620 | '@swc/core': '>=1.2.50' 2621 | '@swc/wasm': '>=1.2.50' 2622 | '@types/node': '*' 2623 | typescript: '>=2.7' 2624 | peerDependenciesMeta: 2625 | '@swc/core': 2626 | optional: true 2627 | '@swc/wasm': 2628 | optional: true 2629 | dependencies: 2630 | '@cspotcode/source-map-support': 0.8.1 2631 | '@tsconfig/node10': 1.0.9 2632 | '@tsconfig/node12': 1.0.11 2633 | '@tsconfig/node14': 1.0.3 2634 | '@tsconfig/node16': 1.0.3 2635 | acorn: 8.8.2 2636 | acorn-walk: 8.2.0 2637 | arg: 4.1.3 2638 | create-require: 1.1.1 2639 | diff: 4.0.2 2640 | make-error: 1.3.6 2641 | typescript: 4.9.5 2642 | v8-compile-cache-lib: 3.0.1 2643 | yn: 3.1.1 2644 | 2645 | /tslib/2.5.0: 2646 | resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} 2647 | 2648 | /type-detect/4.0.8: 2649 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2650 | engines: {node: '>=4'} 2651 | dev: true 2652 | 2653 | /type-is/1.6.18: 2654 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 2655 | engines: {node: '>= 0.6'} 2656 | dependencies: 2657 | media-typer: 0.3.0 2658 | mime-types: 2.1.35 2659 | dev: false 2660 | 2661 | /typescript/4.9.5: 2662 | resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} 2663 | engines: {node: '>=4.2.0'} 2664 | hasBin: true 2665 | 2666 | /typescript/5.0.4: 2667 | resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} 2668 | engines: {node: '>=12.20'} 2669 | hasBin: true 2670 | dev: true 2671 | 2672 | /undici/5.20.0: 2673 | resolution: {integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==} 2674 | engines: {node: '>=12.18'} 2675 | dependencies: 2676 | busboy: 1.6.0 2677 | dev: true 2678 | 2679 | /unpipe/1.0.0: 2680 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 2681 | engines: {node: '>= 0.8'} 2682 | dev: false 2683 | 2684 | /update-browserslist-db/1.0.11_browserslist@4.21.5: 2685 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 2686 | hasBin: true 2687 | peerDependencies: 2688 | browserslist: '>= 4.21.0' 2689 | dependencies: 2690 | browserslist: 4.21.5 2691 | escalade: 3.1.1 2692 | picocolors: 1.0.0 2693 | dev: true 2694 | 2695 | /util-deprecate/1.0.2: 2696 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2697 | 2698 | /utils-merge/1.0.1: 2699 | resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 2700 | engines: {node: '>= 0.4.0'} 2701 | dev: false 2702 | 2703 | /v8-compile-cache-lib/3.0.1: 2704 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 2705 | 2706 | /vary/1.1.2: 2707 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 2708 | engines: {node: '>= 0.8'} 2709 | dev: false 2710 | 2711 | /vite/4.3.1: 2712 | resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} 2713 | engines: {node: ^14.18.0 || >=16.0.0} 2714 | hasBin: true 2715 | peerDependencies: 2716 | '@types/node': '>= 14' 2717 | less: '*' 2718 | sass: '*' 2719 | stylus: '*' 2720 | sugarss: '*' 2721 | terser: ^5.4.0 2722 | peerDependenciesMeta: 2723 | '@types/node': 2724 | optional: true 2725 | less: 2726 | optional: true 2727 | sass: 2728 | optional: true 2729 | stylus: 2730 | optional: true 2731 | sugarss: 2732 | optional: true 2733 | terser: 2734 | optional: true 2735 | dependencies: 2736 | esbuild: 0.17.17 2737 | postcss: 8.4.23 2738 | rollup: 3.20.7 2739 | optionalDependencies: 2740 | fsevents: 2.3.2 2741 | dev: true 2742 | 2743 | /vite/4.3.1_@types+node@18.15.13: 2744 | resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} 2745 | engines: {node: ^14.18.0 || >=16.0.0} 2746 | hasBin: true 2747 | peerDependencies: 2748 | '@types/node': '>= 14' 2749 | less: '*' 2750 | sass: '*' 2751 | stylus: '*' 2752 | sugarss: '*' 2753 | terser: ^5.4.0 2754 | peerDependenciesMeta: 2755 | '@types/node': 2756 | optional: true 2757 | less: 2758 | optional: true 2759 | sass: 2760 | optional: true 2761 | stylus: 2762 | optional: true 2763 | sugarss: 2764 | optional: true 2765 | terser: 2766 | optional: true 2767 | dependencies: 2768 | '@types/node': 18.15.13 2769 | esbuild: 0.17.17 2770 | postcss: 8.4.23 2771 | rollup: 3.20.7 2772 | optionalDependencies: 2773 | fsevents: 2.3.2 2774 | dev: true 2775 | 2776 | /vitefu/0.2.4_vite@4.3.1: 2777 | resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} 2778 | peerDependencies: 2779 | vite: ^3.0.0 || ^4.0.0 2780 | peerDependenciesMeta: 2781 | vite: 2782 | optional: true 2783 | dependencies: 2784 | vite: 4.3.1 2785 | dev: true 2786 | 2787 | /vitest/0.25.8: 2788 | resolution: {integrity: sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==} 2789 | engines: {node: '>=v14.16.0'} 2790 | hasBin: true 2791 | peerDependencies: 2792 | '@edge-runtime/vm': '*' 2793 | '@vitest/browser': '*' 2794 | '@vitest/ui': '*' 2795 | happy-dom: '*' 2796 | jsdom: '*' 2797 | peerDependenciesMeta: 2798 | '@edge-runtime/vm': 2799 | optional: true 2800 | '@vitest/browser': 2801 | optional: true 2802 | '@vitest/ui': 2803 | optional: true 2804 | happy-dom: 2805 | optional: true 2806 | jsdom: 2807 | optional: true 2808 | dependencies: 2809 | '@types/chai': 4.3.4 2810 | '@types/chai-subset': 1.3.3 2811 | '@types/node': 18.15.13 2812 | acorn: 8.8.2 2813 | acorn-walk: 8.2.0 2814 | chai: 4.3.7 2815 | debug: 4.3.4 2816 | local-pkg: 0.4.3 2817 | source-map: 0.6.1 2818 | strip-literal: 1.0.1 2819 | tinybench: 2.4.0 2820 | tinypool: 0.3.1 2821 | tinyspy: 1.1.1 2822 | vite: 4.3.1_@types+node@18.15.13 2823 | transitivePeerDependencies: 2824 | - less 2825 | - sass 2826 | - stylus 2827 | - sugarss 2828 | - supports-color 2829 | - terser 2830 | dev: true 2831 | 2832 | /webidl-conversions/3.0.1: 2833 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 2834 | dev: false 2835 | 2836 | /webrtc-adapter/7.7.1: 2837 | resolution: {integrity: sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A==} 2838 | engines: {node: '>=6.0.0', npm: '>=3.10.0'} 2839 | dependencies: 2840 | rtcpeerconnection-shim: 1.2.15 2841 | sdp: 2.12.0 2842 | dev: false 2843 | 2844 | /websocket-ts/1.1.1: 2845 | resolution: {integrity: sha512-rm+S60J74Ckw5iizzgID12ju+OfaHAa6dhXhULIOrXkl0e05RzxfY42/vMStpz5jWL3iz9mkyjPcFUY1IgI0fw==} 2846 | dev: false 2847 | 2848 | /whatwg-url/5.0.0: 2849 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 2850 | dependencies: 2851 | tr46: 0.0.3 2852 | webidl-conversions: 3.0.1 2853 | dev: false 2854 | 2855 | /wide-align/1.1.5: 2856 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 2857 | dependencies: 2858 | string-width: 4.2.3 2859 | dev: false 2860 | 2861 | /wrappy/1.0.2: 2862 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2863 | 2864 | /ws/8.11.0: 2865 | resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} 2866 | engines: {node: '>=10.0.0'} 2867 | peerDependencies: 2868 | bufferutil: ^4.0.1 2869 | utf-8-validate: ^5.0.2 2870 | peerDependenciesMeta: 2871 | bufferutil: 2872 | optional: true 2873 | utf-8-validate: 2874 | optional: true 2875 | dev: false 2876 | 2877 | /ws/8.13.0: 2878 | resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} 2879 | engines: {node: '>=10.0.0'} 2880 | peerDependencies: 2881 | bufferutil: ^4.0.1 2882 | utf-8-validate: '>=5.0.2' 2883 | peerDependenciesMeta: 2884 | bufferutil: 2885 | optional: true 2886 | utf-8-validate: 2887 | optional: true 2888 | dev: false 2889 | 2890 | /xmlhttprequest-ssl/2.0.0: 2891 | resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} 2892 | engines: {node: '>=0.4.0'} 2893 | dev: false 2894 | 2895 | /yallist/4.0.0: 2896 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2897 | dev: false 2898 | 2899 | /yaml/1.10.2: 2900 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 2901 | engines: {node: '>= 6'} 2902 | dev: true 2903 | 2904 | /yn/3.1.1: 2905 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 2906 | engines: {node: '>=6'} 2907 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /prisma/migrations/20230501060534_init/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE "User" ( 3 | "id" TEXT NOT NULL, 4 | "email" TEXT NOT NULL, 5 | "username" TEXT NOT NULL, 6 | "password" TEXT NOT NULL, 7 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 8 | "updatedAt" TIMESTAMP(3) NOT NULL, 9 | 10 | CONSTRAINT "User_pkey" PRIMARY KEY ("id") 11 | ); 12 | 13 | -- CreateTable 14 | CREATE TABLE "UserConcept" ( 15 | "id" TEXT NOT NULL, 16 | "isOwner" BOOLEAN NOT NULL DEFAULT false, 17 | "isEdit" BOOLEAN NOT NULL DEFAULT false, 18 | "userId" TEXT, 19 | "conceptId" TEXT, 20 | 21 | CONSTRAINT "UserConcept_pkey" PRIMARY KEY ("id") 22 | ); 23 | 24 | -- CreateTable 25 | CREATE TABLE "Concept" ( 26 | "id" TEXT NOT NULL, 27 | "metadata" JSONB NOT NULL, 28 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 29 | "updatedAt" TIMESTAMP(3) NOT NULL, 30 | 31 | CONSTRAINT "Concept_pkey" PRIMARY KEY ("id") 32 | ); 33 | 34 | -- CreateIndex 35 | CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); 36 | 37 | -- AddForeignKey 38 | ALTER TABLE "UserConcept" ADD CONSTRAINT "UserConcept_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; 39 | 40 | -- AddForeignKey 41 | ALTER TABLE "UserConcept" ADD CONSTRAINT "UserConcept_conceptId_fkey" FOREIGN KEY ("conceptId") REFERENCES "Concept"("id") ON DELETE SET NULL ON UPDATE CASCADE; 42 | -------------------------------------------------------------------------------- /prisma/migrations/20230501063751_updated_at_nullable/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Concept" ALTER COLUMN "updatedAt" SET DEFAULT CURRENT_TIMESTAMP; 3 | 4 | -- AlterTable 5 | ALTER TABLE "User" ALTER COLUMN "updatedAt" SET DEFAULT CURRENT_TIMESTAMP; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20230501100752_concept_name/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - Added the required column `name` to the `Concept` table without a default value. This is not possible if the table is not empty. 5 | 6 | */ 7 | -- AlterTable 8 | ALTER TABLE "Concept" ADD COLUMN "name" TEXT NOT NULL; 9 | -------------------------------------------------------------------------------- /prisma/migrations/20230501114250_mouse_move/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - Added the required column `xMouse` to the `UserConcept` table without a default value. This is not possible if the table is not empty. 5 | - Added the required column `yMouse` to the `UserConcept` table without a default value. This is not possible if the table is not empty. 6 | 7 | */ 8 | -- AlterTable 9 | ALTER TABLE "Concept" ALTER COLUMN "metadata" SET DATA TYPE TEXT; 10 | 11 | -- AlterTable 12 | ALTER TABLE "UserConcept" ADD COLUMN "xMouse" INTEGER NOT NULL, 13 | ADD COLUMN "yMouse" INTEGER NOT NULL; 14 | -------------------------------------------------------------------------------- /prisma/migrations/20230502030239_profile_image/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ADD COLUMN "image" TEXT NOT NULL DEFAULT 'https://media.discordapp.net/attachments/1098805680045043813/1102791647592456212/default-pfp.png?width=200&height=200'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230502075211_unique_id_user_concept/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - A unique constraint covering the columns `[userId]` on the table `UserConcept` will be added. If there are existing duplicate values, this will fail. 5 | - A unique constraint covering the columns `[conceptId]` on the table `UserConcept` will be added. If there are existing duplicate values, this will fail. 6 | 7 | */ 8 | -- CreateIndex 9 | CREATE UNIQUE INDEX "UserConcept_userId_key" ON "UserConcept"("userId"); 10 | 11 | -- CreateIndex 12 | CREATE UNIQUE INDEX "UserConcept_conceptId_key" ON "UserConcept"("conceptId"); 13 | -------------------------------------------------------------------------------- /prisma/migrations/migration_lock.toml: -------------------------------------------------------------------------------- 1 | # Please do not edit this file manually 2 | # It should be added in your version-control system (i.e. Git) 3 | provider = "postgresql" -------------------------------------------------------------------------------- /prisma/schema.prisma: -------------------------------------------------------------------------------- 1 | generator client { 2 | provider = "prisma-client-js" 3 | } 4 | 5 | datasource db { 6 | provider = "postgresql" 7 | url = env("DATABASE_URL") 8 | directUrl = env("DIRECT_URL") 9 | } 10 | 11 | model User { 12 | id String @id @default(cuid()) 13 | email String @unique 14 | username String 15 | password String 16 | image String @default("https://media.discordapp.net/attachments/1098805680045043813/1102791647592456212/default-pfp.png?width=200&height=200") 17 | createdAt DateTime @default(now()) 18 | updatedAt DateTime @updatedAt @default(now()) 19 | concept UserConcept[] 20 | } 21 | 22 | model UserConcept { 23 | id String @id @default(cuid()) 24 | isOwner Boolean @default(false) 25 | isEdit Boolean @default(false) 26 | xMouse Int 27 | yMouse Int 28 | user User? @relation(fields: [userId], references: [id]) 29 | concept Concept? @relation(fields: [conceptId], references: [id]) 30 | userId String? 31 | conceptId String? 32 | } 33 | 34 | model Concept { 35 | id String @id @default(cuid()) 36 | name String 37 | metadata String 38 | createdAt DateTime @default(now()) 39 | updatedAt DateTime @updatedAt @default(now()) 40 | user UserConcept[] 41 | } 42 | -------------------------------------------------------------------------------- /server/index.ts: -------------------------------------------------------------------------------- 1 | import { Server } from "socket.io" 2 | import express from 'express'; 3 | import bodyParser from 'body-parser'; 4 | import cors from 'cors'; 5 | import http from 'http'; 6 | import jwt from 'jsonwebtoken' 7 | import cookieParser from "cookie-parser"; 8 | import {CLIENT_URL} from "./utils/constants"; 9 | import Crypto from "crypto-js"; 10 | 11 | import { PrismaClient, User } from '@prisma/client' 12 | import {planeCanvas} from "./utils/planeCanvas"; 13 | import {authenticateToken} from "./utils/authToken"; 14 | 15 | const prisma = new PrismaClient() 16 | 17 | const app = express(); 18 | app.use(cors({ 19 | credentials: true, 20 | origin : CLIENT_URL 21 | }), bodyParser.json(), cookieParser()) 22 | 23 | 24 | const server = http.createServer(app); 25 | 26 | const io = new Server(server, { 27 | cors: { 28 | origin : CLIENT_URL 29 | } 30 | }); 31 | 32 | app.get('/', (req, res) => { 33 | res.send('

Hello world

'); 34 | }); 35 | 36 | app.get('/profile', authenticateToken, async(req, res) => { 37 | const data = await prisma.user.findUnique({ 38 | where: { 39 | //@ts-ignore 40 | email: req.user.email 41 | }, 42 | include: { 43 | concept: { 44 | include: { 45 | concept : true 46 | } 47 | } 48 | } 49 | }) 50 | 51 | // @ts-ignore 52 | const {password, ...rem} = data 53 | res.status(200).json(rem) 54 | }); 55 | 56 | app.post('/logout', async(req, res) => { 57 | res.clearCookie('surface_token', { httpOnly: true, domain: CLIENT_URL }); 58 | res.status(200).json({message: "SUCCESS"}) 59 | }) 60 | 61 | app.post("/login", async(req, res) => { 62 | const { data } = req.body 63 | const response = await prisma.user.findUnique({ 64 | where: { 65 | email: data.email 66 | } 67 | }) 68 | if(!response) { 69 | res.status(404).json({message: "USER NOT FOUND", status: 404}) 70 | }else{ 71 | if(response?.password !== data.password){ 72 | res.status(404).json({message: "INVALID PASSWORD", status: 401}) 73 | }else{ 74 | const token = jwt.sign({ 75 | email: response?.email 76 | }, "RAHULNAVNEETH-SURFACE") 77 | res.cookie("surface_token", token, {httpOnly: true}).json({ 78 | email: response.email, 79 | token 80 | }) 81 | } 82 | } 83 | }) 84 | 85 | app.post('/signup', async(req, res) => { 86 | const {data} = req.body; 87 | try { 88 | const response = await prisma.user.create({ 89 | data : { 90 | email: data.email, 91 | password: data.password, 92 | username: data.username, 93 | //@ts-ignore 94 | image: data.image 95 | } 96 | }); 97 | res.status(200).json(response) 98 | } catch (e) { 99 | res.status(409).json({message: "USER ALREADY EXISTS", status: 409}) 100 | } 101 | }) 102 | 103 | const accumulateNameChange: any = {} 104 | 105 | setInterval( async () => { 106 | const accumulatedData = Object.keys(accumulateNameChange) 107 | 108 | if(accumulatedData.length === 0) return; 109 | 110 | await prisma.$transaction( 111 | accumulatedData.map((id) => prisma.concept.update({ 112 | where: { 113 | id, 114 | },data: { 115 | name: accumulateNameChange[id] 116 | } 117 | })) 118 | ) 119 | 120 | for(const id of accumulatedData){ 121 | delete accumulateNameChange[id] 122 | }; 123 | 124 | 125 | }, 60 * 1000) 126 | 127 | io.on("connection", (socket) => { 128 | console.log("New connection sustained") 129 | 130 | socket.on('concept-init', async(res: {id: string, name: string, usid: string, edit: boolean}) => { 131 | socket.emit(`on-init-${res.id}`); 132 | const isExist = await prisma.concept.findUnique({ 133 | where: { 134 | id: res.id 135 | } 136 | }) 137 | if(!isExist){ 138 | await prisma.concept.create({ 139 | data : { 140 | id: res.id, 141 | metadata: planeCanvas, 142 | name: "( UNTITLED )", 143 | user: { 144 | create: { 145 | xMouse: 100, 146 | yMouse: 100, 147 | isEdit: true, 148 | isOwner: true, 149 | userId: res.usid 150 | } 151 | } 152 | } 153 | }) 154 | }else{ 155 | const userExist = await prisma.userConcept.findFirst({ 156 | where: { 157 | conceptId: res.id, 158 | userId: res.usid, 159 | } 160 | }) 161 | 162 | if(!userExist){ 163 | await prisma.userConcept.create({ 164 | data: { 165 | xMouse: 100, 166 | yMouse: 100, 167 | conceptId: res.id, 168 | userId: res.usid, 169 | isEdit: res.edit, 170 | isOwner: false, 171 | } 172 | }) 173 | } 174 | } 175 | 176 | const data = await prisma.concept.findUnique({ 177 | where: { 178 | id: res.id, 179 | }, 180 | include: { 181 | user: { 182 | include: { 183 | user : true 184 | } 185 | } 186 | } 187 | }) 188 | const userData = await prisma.user.findUnique({ 189 | where: { 190 | id: res.usid 191 | }, 192 | include: { 193 | concept: { 194 | include: { 195 | concept: true 196 | } 197 | } 198 | } 199 | }) 200 | 201 | socket.broadcast.emit(`on-notif-${res.id}`, {message: `${res.name.toUpperCase()} JOINED`,type: "SUCCESS", show: true}); 202 | io.emit(`update-user-${res.id}-${res.usid}`, userData); 203 | io.emit(`concept-init-${res.id}`, data, userData); 204 | 205 | }); 206 | 207 | socket.on('on-draw', async(res: {id: string, data: any}) => { 208 | socket.broadcast.emit(`concept-receive-${res.id}`, res.data); 209 | }) 210 | 211 | socket.on("save-concept", async(res) => { 212 | const data = await prisma.concept.update({ 213 | where: { 214 | id: res.id 215 | }, 216 | data: { 217 | metadata: res.data 218 | } 219 | }) 220 | }) 221 | 222 | socket.on('change-name', async(res :{id: string, name: string}) => { 223 | io.emit(`name-receive-${res.id}`, res.name); 224 | accumulateNameChange[res.id] = res.name; 225 | }) 226 | 227 | socket.on('change-user-curosr', (res :{id: string, coords: {x: number, y: number}, usid: string}) => { 228 | io.emit(`change-user-cursor-${res.id}`, {coords: res.coords, usid: res.usid}); 229 | }) 230 | 231 | socket.on('request-access', (res :{id: string, ownerId: string, user: any}) => { 232 | io.emit(`notify-request-access-${res.id}-${res.ownerId}`, {message: `${res.user.username.toUpperCase()} REQUESTS EDIT ACCESS!`, userId: res.user.id}); 233 | }) 234 | 235 | socket.on("accept-access", async(res) => { 236 | const data = await prisma.userConcept.update({ 237 | where: { 238 | id: res.userConceptId 239 | }, 240 | data: { 241 | isEdit: true 242 | } 243 | }) 244 | io.emit(`allow-access-${res.id}`, {requestId: res.requestUserId}); 245 | socket.broadcast.emit(`on-notif-${res.id}-${res.requestUserId}`, {message: `EDIT ACCESS ACCEPTED`,type: "SUCCESS", show: true}, "EDIT_ACCESS"); 246 | }) 247 | 248 | socket.on("decline-access", async(res) => { 249 | socket.broadcast.emit(`on-notif-${res.id}-${res.requestUserId}`, {message: `EDIT ACCESS DECLINED`,type: "ERROR", show: true}); 250 | }) 251 | }) 252 | 253 | server.listen(5174, () => { 254 | console.log('listening on *: 5174'); 255 | }); 256 | 257 | 258 | -------------------------------------------------------------------------------- /server/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "server", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@types/body-parser": "^1.19.2", 13 | "@types/cors": "^2.8.13", 14 | "@types/jsonwebtoken": "^9.0.2", 15 | "gibberish": "^0.1.2" 16 | } 17 | }, 18 | "node_modules/@types/body-parser": { 19 | "version": "1.19.2", 20 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 21 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 22 | "dependencies": { 23 | "@types/connect": "*", 24 | "@types/node": "*" 25 | } 26 | }, 27 | "node_modules/@types/connect": { 28 | "version": "3.4.35", 29 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 30 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 31 | "dependencies": { 32 | "@types/node": "*" 33 | } 34 | }, 35 | "node_modules/@types/cors": { 36 | "version": "2.8.13", 37 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", 38 | "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", 39 | "dependencies": { 40 | "@types/node": "*" 41 | } 42 | }, 43 | "node_modules/@types/jsonwebtoken": { 44 | "version": "9.0.2", 45 | "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", 46 | "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", 47 | "dependencies": { 48 | "@types/node": "*" 49 | } 50 | }, 51 | "node_modules/@types/node": { 52 | "version": "18.16.3", 53 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", 54 | "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" 55 | }, 56 | "node_modules/gibberish": { 57 | "version": "0.1.2", 58 | "resolved": "https://registry.npmjs.org/gibberish/-/gibberish-0.1.2.tgz", 59 | "integrity": "sha512-E8jr5W/Std5zm9KkF6NPJr7JfQSjqpdVAE/nDK5MdVmmWj1lcHUeOsEwAW3ASKp4qe6Da7LRtHAxrsWXy86wVg==", 60 | "engines": { 61 | "node": "*" 62 | } 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.ts", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "dev": "nodemon index.ts" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "@types/body-parser": "^1.19.2", 15 | "@types/cors": "^2.8.13", 16 | "@types/jsonwebtoken": "^9.0.2", 17 | "gibberish": "^0.1.2" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /server/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@types/body-parser': ^1.19.2 5 | '@types/cors': ^2.8.13 6 | '@types/jsonwebtoken': ^9.0.2 7 | gibberish: ^0.1.2 8 | 9 | dependencies: 10 | '@types/body-parser': 1.19.2 11 | '@types/cors': 2.8.13 12 | '@types/jsonwebtoken': 9.0.2 13 | gibberish: 0.1.2 14 | 15 | packages: 16 | 17 | /@types/body-parser/1.19.2: 18 | resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} 19 | dependencies: 20 | '@types/connect': 3.4.35 21 | '@types/node': 20.0.0 22 | dev: false 23 | 24 | /@types/connect/3.4.35: 25 | resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} 26 | dependencies: 27 | '@types/node': 20.0.0 28 | dev: false 29 | 30 | /@types/cors/2.8.13: 31 | resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} 32 | dependencies: 33 | '@types/node': 20.0.0 34 | dev: false 35 | 36 | /@types/jsonwebtoken/9.0.2: 37 | resolution: {integrity: sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==} 38 | dependencies: 39 | '@types/node': 20.0.0 40 | dev: false 41 | 42 | /@types/node/20.0.0: 43 | resolution: {integrity: sha512-cD2uPTDnQQCVpmRefonO98/PPijuOnnEy5oytWJFPY1N9aJCz2wJ5kSGWO+zJoed2cY2JxQh6yBuUq4vIn61hw==} 44 | dev: false 45 | 46 | /gibberish/0.1.2: 47 | resolution: {integrity: sha512-E8jr5W/Std5zm9KkF6NPJr7JfQSjqpdVAE/nDK5MdVmmWj1lcHUeOsEwAW3ASKp4qe6Da7LRtHAxrsWXy86wVg==} 48 | dev: false 49 | -------------------------------------------------------------------------------- /server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "ESNext", 4 | "moduleResolution": "Node", 5 | "esModuleInterop": true, 6 | "target": "ESNext", 7 | "outDir": "dist", 8 | "forceConsistentCasingInFileNames": true, 9 | "noFallthroughCasesInSwitch": true, 10 | "isolatedModules": false, 11 | "strict": true, 12 | "noImplicitAny": true, 13 | "useUnknownInCatchVariables": false, 14 | "inlineSourceMap": true 15 | }, 16 | "ts-node": { 17 | "compilerOptions": { 18 | "module": "commonjs" 19 | } 20 | }, 21 | "lib": ["esnext"] 22 | } 23 | -------------------------------------------------------------------------------- /server/utils/authToken.ts: -------------------------------------------------------------------------------- 1 | import jwt from 'jsonwebtoken' 2 | 3 | export const authenticateToken = ( req:any ,res:any ,next :any) => { 4 | const { surface_token } = req.cookies; 5 | if (surface_token) { 6 | jwt.verify(surface_token ,"RAHULNAVNEETH-SURFACE" , (err: any, data: any) => { 7 | if (err) return res.status(401).send("INVALID TOKEN"); 8 | req.user = data; 9 | next(); 10 | }); 11 | } else { 12 | res.status(401).send("NOT AUTHENTICATED"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/utils/constants.ts: -------------------------------------------------------------------------------- 1 | const IS_PRODUCTION: boolean = false; 2 | export const CLIENT_URL = !IS_PRODUCTION ? 'http://localhost:5173' : "https://surface-mocha.vercel.app/"; 3 | -------------------------------------------------------------------------------- /server/utils/planeCanvas.ts: -------------------------------------------------------------------------------- 1 | export const planeCanvas = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAAAXNSR0IArs4c6QAABGJJREFUeF7t1AEJAAAMAsHZv/RyPNwSyDncOQIECEQEFskpJgECBM5geQICBDICBitTlaAECBgsP0CAQEbAYGWqEpQAAYPlBwgQyAgYrExVghIgYLD8AAECGQGDlalKUAIEDJYfIEAgI2CwMlUJSoCAwfIDBAhkBAxWpipBCRAwWH6AAIGMgMHKVCUoAQIGyw8QIJARMFiZqgQlQMBg+QECBDICBitTlaAECBgsP0CAQEbAYGWqEpQAAYPlBwgQyAgYrExVghIgYLD8AAECGQGDlalKUAIEDJYfIEAgI2CwMlUJSoCAwfIDBAhkBAxWpipBCRAwWH6AAIGMgMHKVCUoAQIGyw8QIJARMFiZqgQlQMBg+QECBDICBitTlaAECBgsP0CAQEbAYGWqEpQAAYPlBwgQyAgYrExVghIgYLD8AAECGQGDlalKUAIEDJYfIEAgI2CwMlUJSoCAwfIDBAhkBAxWpipBCRAwWH6AAIGMgMHKVCUoAQIGyw8QIJARMFiZqgQlQMBg+QECBDICBitTlaAECBgsP0CAQEbAYGWqEpQAAYPlBwgQyAgYrExVghIgYLD8AAECGQGDlalKUAIEDJYfIEAgI2CwMlUJSoCAwfIDBAhkBAxWpipBCRAwWH6AAIGMgMHKVCUoAQIGyw8QIJARMFiZqgQlQMBg+QECBDICBitTlaAECBgsP0CAQEbAYGWqEpQAAYPlBwgQyAgYrExVghIgYLD8AAECGQGDlalKUAIEDJYfIEAgI2CwMlUJSoCAwfIDBAhkBAxWpipBCRAwWH6AAIGMgMHKVCUoAQIGyw8QIJARMFiZqgQlQMBg+QECBDICBitTlaAECBgsP0CAQEbAYGWqEpQAAYPlBwgQyAgYrExVghIgYLD8AAECGQGDlalKUAIEDJYfIEAgI2CwMlUJSoCAwfIDBAhkBAxWpipBCRAwWH6AAIGMgMHKVCUoAQIGyw8QIJARMFiZqgQlQMBg+QECBDICBitTlaAECBgsP0CAQEbAYGWqEpQAAYPlBwgQyAgYrExVghIgYLD8AAECGQGDlalKUAIEDJYfIEAgI2CwMlUJSoCAwfIDBAhkBAxWpipBCRAwWH6AAIGMgMHKVCUoAQIGyw8QIJARMFiZqgQlQMBg+QECBDICBitTlaAECBgsP0CAQEbAYGWqEpQAAYPlBwgQyAgYrExVghIgYLD8AAECGQGDlalKUAIEDJYfIEAgI2CwMlUJSoCAwfIDBAhkBAxWpipBCRAwWH6AAIGMgMHKVCUoAQIGyw8QIJARMFiZqgQlQMBg+QECBDICBitTlaAECBgsP0CAQEbAYGWqEpQAAYPlBwgQyAgYrExVghIgYLD8AAECGQGDlalKUAIEDJYfIEAgI2CwMlUJSoCAwfIDBAhkBAxWpipBCRAwWH6AAIGMgMHKVCUoAQIGyw8QIJARMFiZqgQlQMBg+QECBDICBitTlaAECBgsP0CAQEbAYGWqEpQAgQdWMQCX4yW9owAAAABJRU5ErkJggg==" 2 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface Platform {} 9 | } 10 | } 11 | 12 | export {}; 13 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | %sveltekit.head% 12 | 13 | 14 | 15 |
%sveltekit.body%
16 | 17 | 18 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | 3 | describe('sum test', () => { 4 | it('adds 1 + 2 to equal 3', () => { 5 | expect(1 + 2).toBe(3); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /src/libs/components/canvas/index.svelte: -------------------------------------------------------------------------------- 1 | 90 | 91 |
92 | {$ws.emit("save-concept", {id: $page.params.id, data: canvas.toDataURL()})}}> 93 |
94 | 107 | -------------------------------------------------------------------------------- /src/libs/components/loading/index.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 |

{TITLE}

12 | {loadingDots} 13 |
14 | -------------------------------------------------------------------------------- /src/libs/components/navbar/concept/index.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 |
18 | 21 |
22 |
23 | {#if $concept !== null && $page.route.id === "/concept/[id]"} 24 |
25 | 26 |
27 | {/if} 28 |
29 |
30 | {#if $page.route.id === "/concept/[id]" && $concept} 31 | DRAFT /  32 | 38 | {:else} 39 | SURFACE 40 | {/if} 41 |
42 |
43 | {#if $concept !== null && $page.route.id === "/concept/[id]"} 44 |
45 | 46 |
47 | {/if} 48 |
49 |
50 | {#if $user } 51 | 59 | {:else} 60 | 61 | LOGIN 62 | 63 | {/if} 64 |
65 |
66 | -------------------------------------------------------------------------------- /src/libs/components/navbar/dropdown/index.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 52 | -------------------------------------------------------------------------------- /src/libs/components/notification/index.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
15 | {#if $notification.type === 'ERROR'} 16 |
17 | ! 18 |
19 | {:else if $notification.type === 'SUCCESS'} 20 |
21 | 22 |
23 | {:else if $notification.type === 'WARNING'} 24 |
25 | ! 26 |
27 | {/if} 28 |
{$notification.message}
29 |
30 | 31 | -------------------------------------------------------------------------------- /src/libs/components/notification/mouse-popup/index.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 |
13 | {$mousePopup.message} 14 |
15 |
16 | 17 | -------------------------------------------------------------------------------- /src/libs/components/notification/request-access/index.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 41 | -------------------------------------------------------------------------------- /src/libs/components/notification/share/index.svelte: -------------------------------------------------------------------------------- 1 | 22 | 23 |