├── .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 |

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 |
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 | dropdown.set(false)} class="absolute z-[1000] mt-[115px] mr-[20px] flex flex-row items-start justify-end w-full h-full">
16 |
17 | {#if $page.route.id === "/concept/[id]"}
18 |
22 | {#if !$user.concept.find((i) => i.conceptId === $page.params.id).isOwner && !$user.concept.find((i) => i.conceptId === $page.params.id).isEdit}
23 |
29 | {/if}
30 |
31 | {/if}
32 |
33 |
38 |
50 |
51 |
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 | requestAccess.set({requestId: "", message: "", show: false}) }
12 | class="absolute w-screen h-screen flex flex-col items-center justify-center">
13 |
14 |
{$requestAccess.message}
16 |
17 |
33 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/src/libs/components/notification/share/index.svelte:
--------------------------------------------------------------------------------
1 |
22 |
23 | share.set(i => !i)} class="absolute w-screen h-screen flex flex-col items-center justify-center">
24 |
25 |
SHARE CODE
26 |
27 |
28 |
{CODE.slice(0, 27)}{CODE.length > 27 ? "..." : ""}
29 |
{
30 | navigator.clipboard.writeText(`${CLIENT_URL}/concept/${CODE}`);
31 | mousePopup.set({show: true, message: "COPIED TO CLIPBOARD!"})
32 | }} class="far fa-copy cursor-pointer">
33 |
34 |
35 |
36 | {#if $concept?.user.find(i => i.userId === $user?.id).isOwner}
37 |
38 |
48 |
49 | {/if}
50 |
51 |
--------------------------------------------------------------------------------
/src/libs/components/sidebar/right/index.svelte:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
21 |
51 |
52 |
--------------------------------------------------------------------------------
/src/libs/stores/colors.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const colors = writable>(['#9CEAAE', '#C8A8FF', '#FFA8A8', '#A8D8FF', '#FFDB83', '#FF7979'])
4 |
5 |
--------------------------------------------------------------------------------
/src/libs/stores/concepts.ts:
--------------------------------------------------------------------------------
1 | import { writable } from 'svelte/store';
2 | import type { Concept } from '@prisma/client';
3 |
4 | export const concept = writable(null);
5 |
--------------------------------------------------------------------------------
/src/libs/stores/darkmode.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const darkMode = writable(false);
4 |
--------------------------------------------------------------------------------
/src/libs/stores/mouse-coords.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const mouseCoords = writable<{x: number, y: number}>({x: 100, y: 100});
4 |
--------------------------------------------------------------------------------
/src/libs/stores/mouse-popup.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const mousePopup = writable<{message: string,show: boolean}>({message: "", show: false});
4 |
--------------------------------------------------------------------------------
/src/libs/stores/nav-dropdown.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const dropdown = writable(false);
4 |
--------------------------------------------------------------------------------
/src/libs/stores/notification.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const notification = writable<{message: string, type: ("SUCCESS" | "ERROR" | "WARNING"), show: boolean}>({message: "", type: "SUCCESS", show: false});
4 | export const requestIsLoading = writable(false);
5 |
--------------------------------------------------------------------------------
/src/libs/stores/request-access.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const requestAccess = writable<{message: string, requestId: string, show: boolean}>({message: "", requestId: "" , show: false});
4 |
--------------------------------------------------------------------------------
/src/libs/stores/share.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const share = writable<{show: boolean}>({show: false});
4 |
--------------------------------------------------------------------------------
/src/libs/stores/user.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 | import type { User, UserConcept, Concept } from "@prisma/client";
3 |
4 | export const user = writable<(User & {concept : UserConcept & {concept: Concept}}) | null>(null)
5 |
--------------------------------------------------------------------------------
/src/libs/stores/users.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const users = writable({})
4 |
--------------------------------------------------------------------------------
/src/libs/stores/ws.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const ws = writable();
4 |
--------------------------------------------------------------------------------
/src/libs/utils/constants.ts:
--------------------------------------------------------------------------------
1 | const IS_PRODUCTION: boolean = false;
2 |
3 | export const SERVER_URL = !IS_PRODUCTION ? 'http://localhost:5174' : "";
4 | export const CLIENT_URL = !IS_PRODUCTION ? 'http://localhost:5173' : "";
5 |
--------------------------------------------------------------------------------
/src/libs/utils/socket.ts:
--------------------------------------------------------------------------------
1 | import { ws } from "../stores/ws";
2 | import { io } from "socket.io-client";
3 | import {SERVER_URL} from "./constants";
4 |
5 | export const getSocket = async () => {
6 | const client = io(SERVER_URL)
7 | ws.set(client)
8 | }
9 |
--------------------------------------------------------------------------------
/src/routes/+layout.server.ts:
--------------------------------------------------------------------------------
1 | import {redirect} from "@sveltejs/kit"
2 | import {get} from "svelte/store"
3 | import {notification} from "../libs/stores/notification"
4 | import type { LayoutServerLoad } from "./$types"
5 |
6 | export const load: LayoutServerLoad = ({cookies, route}) => {
7 | if(cookies.get("surface_token") === undefined && !["/auth/login", "/auth/signup"].includes(route.id || "")) {
8 | notification.set({message: "YOU NEED TO LOGIN TO ACCESS THIS PAGE", type: "ERROR", show: true})
9 | throw redirect(301, "/auth/login")
10 | }
11 | }
12 |
13 |
--------------------------------------------------------------------------------
/src/routes/+layout.svelte:
--------------------------------------------------------------------------------
1 |
40 |
41 | mouseCoords.set({x: e.clientX, y: e.clientY})} class="{$darkMode ? "dark" : ""} font-primary w-screen h-screen flex flex-col items-center justify-start">
42 | {#if $user === null && !['/auth/login', '/auth/signup'].includes($page?.route?.id || "")}
43 |
44 | {:else}
45 |
46 | {#if $notification.show}
47 |
48 | {/if}
49 | {#if $share.show}
50 |
51 | {/if}
52 | {#if $mousePopup.show}
53 |
54 | {/if}
55 | {#if $requestAccess.show}
56 |
57 | {/if}
58 | {#if $dropdown}
59 |
60 | {/if}
61 | {#if !['/auth/login', '/auth/signup'].includes($page?.route?.id || "")}
62 |
63 | {/if}
64 |
65 |
66 |
67 |
68 | {/if}
69 |
70 |
--------------------------------------------------------------------------------
/src/routes/+page.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
28 |
33 |
34 |
35 |
48 |
--------------------------------------------------------------------------------
/src/routes/auth/login/+page.server.ts:
--------------------------------------------------------------------------------
1 | import {redirect} from "@sveltejs/kit"
2 | import type { PageServerLoad } from "./$types"
3 |
4 | export const load: PageServerLoad = ({cookies}) => {
5 | if(cookies.get("surface_token")) {
6 | throw redirect(301, "/")
7 | }
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/src/routes/auth/login/+page.svelte:
--------------------------------------------------------------------------------
1 |
43 |
44 |
75 |
76 |
90 |
--------------------------------------------------------------------------------
/src/routes/auth/logout/+page.server.ts:
--------------------------------------------------------------------------------
1 | import { redirect } from '@sveltejs/kit'
2 | import {user} from '../../../libs/stores/user';
3 | import type { PageServerLoad } from './$types'
4 |
5 | export const load: PageServerLoad = async ({cookies}) => {
6 | cookies.set('surface_token', '', {
7 | path: '/',
8 | expires: new Date(0),
9 | })
10 | user.set(null)
11 | throw redirect(307, '/auth/login')
12 | }
13 |
--------------------------------------------------------------------------------
/src/routes/auth/signup/+page.server.ts:
--------------------------------------------------------------------------------
1 | import {redirect} from "@sveltejs/kit"
2 | import type { PageServerLoad } from "./$types"
3 |
4 | export const load: PageServerLoad = ({cookies}) => {
5 | if(cookies.get("surface_token")) {
6 | throw redirect(301, "/")
7 | }
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/src/routes/auth/signup/+page.svelte:
--------------------------------------------------------------------------------
1 |
47 |
48 |
91 |
92 |
106 |
--------------------------------------------------------------------------------
/src/routes/concept/+page.server.ts:
--------------------------------------------------------------------------------
1 | import {redirect} from '@sveltejs/kit';
2 |
3 | export const load = (() => {
4 | let ID: Array = [];
5 |
6 | [...Array(3)].map(() => {
7 | ID = [...ID, (Math.random() + 1).toString(36).substring(4)];
8 | })
9 | throw redirect( 302, `concept/${ID.join('-')}`);
10 | })
11 |
--------------------------------------------------------------------------------
/src/routes/concept/[id]/+page.svelte:
--------------------------------------------------------------------------------
1 |
102 |
103 |
104 | Concept - {$concept?.name || "( UNTITLED )"}
105 |
106 |
107 | {#if !$concept}
108 |
109 | LOADING CANVAS {loadingDots}
110 |
111 | {:else}
112 |
113 |
114 | {#each $concept.user as value, idx}
115 | {#if value.userId !== $user.id && value.isEdit}
116 |
117 |
{value.user.username.toUpperCase()}
118 |
119 |
120 | {/if}
121 | {/each}
122 |
123 |
124 |
125 |
126 | {/if}
127 |
--------------------------------------------------------------------------------
/src/routes/profile/+page.svelte:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |

8 |
{
9 | localStorage.getItem("dark") === "true" ? localStorage.setItem("dark", "false") : localStorage.setItem("dark", "true");
10 | darkMode.set(localStorage.getItem("dark") === "true");
11 | }} type="checkbox">
12 |
13 |
--------------------------------------------------------------------------------
/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bitspaceorg/surface/e182c22d9f403ac22d5d5b12e234ff5c47e67e7d/static/favicon.png
--------------------------------------------------------------------------------
/svelte.config.js:
--------------------------------------------------------------------------------
1 | import adapter from '@sveltejs/adapter-auto';
2 | import { vitePreprocess } from '@sveltejs/kit/vite';
3 |
4 | /** @type {import('@sveltejs/kit').Config} */
5 | const config = {
6 | kit: {
7 | adapter: adapter(),
8 | },
9 | preprocess: vitePreprocess()
10 | };
11 |
12 | export default config;
13 |
--------------------------------------------------------------------------------
/tailwind.config.cjs:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: ['./src/**/*.{html,js,svelte,ts}'],
4 | darkMode: 'class',
5 | theme: {
6 | colors: {
7 | black: '#111317',
8 | darkblack: '#0b0c0e',
9 | white: '#FFFFFF',
10 | },
11 | extend: {
12 | fontFamily : {
13 | primary : ["'VT323'", "monospace"]
14 | }
15 | }
16 | },
17 | plugins: []
18 | };
19 |
--------------------------------------------------------------------------------
/tests/test.ts:
--------------------------------------------------------------------------------
1 | import { expect, test } from '@playwright/test';
2 |
3 | test('index page has expected h1', async ({ page }) => {
4 | await page.goto('/');
5 | await expect(page.getByRole('heading', { name: 'Welcome to SvelteKit' })).toBeVisible();
6 | });
7 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "allowJs": true,
5 | "checkJs": true,
6 | "esModuleInterop": true,
7 | "forceConsistentCasingInFileNames": true,
8 | "resolveJsonModule": true,
9 | "skipLibCheck": true,
10 | "sourceMap": true,
11 | "strict": true
12 | }
13 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
14 | //
15 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
16 | // from the referenced tsconfig.json - TypeScript does not merge them in
17 | }
18 |
--------------------------------------------------------------------------------
/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "rewrites": [{ "source": "/server/(.*)", "destination": "/server" }]
3 | }
4 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { sveltekit } from '@sveltejs/kit/vite';
2 | import { defineConfig } from 'vitest/config';
3 |
4 | export default defineConfig({
5 | plugins: [sveltekit()],
6 | test: {
7 | include: ['src/**/*.{test,spec}.{js,ts}']
8 | }
9 | });
10 |
--------------------------------------------------------------------------------