avallef commited on
Commit
cfd4c95
·
1 Parent(s): 533a9d3

Created initial express/ws server

Browse files
.gitignore CHANGED
@@ -1 +1,2 @@
1
- .env
 
 
1
+ .env
2
+ build
server/README.md ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # HapticTouch Server
2
+
3
+ ## Instructions
4
+ ```
5
+ git clone https://github.com/AnujPanthri/HapticLink
6
+ cd HapticLink/server
7
+ npm install
8
+ npm run dev
9
+
10
+ ```
11
+
12
+ To build use:
13
+ `npm run build`
14
+
15
+ To run use:
16
+ `npm start`
17
+
18
+ ## Documentation
19
+
20
+ Both HTTP and WebSocket server are running on the same port
21
+
22
+ **GET** `/`
23
+ Responds with homepage.
server/package-lock.json ADDED
@@ -0,0 +1,1388 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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/ws": "^8.5.9",
13
+ "express": "^4.18.2",
14
+ "ws": "^8.14.2"
15
+ },
16
+ "devDependencies": {
17
+ "@types/express": "^4.17.21",
18
+ "@types/node": "^20.9.1",
19
+ "nodemon": "^3.0.1",
20
+ "ts-node": "^10.9.1",
21
+ "typescript": "^5.2.2"
22
+ }
23
+ },
24
+ "node_modules/@cspotcode/source-map-support": {
25
+ "version": "0.8.1",
26
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
27
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
28
+ "dev": true,
29
+ "dependencies": {
30
+ "@jridgewell/trace-mapping": "0.3.9"
31
+ },
32
+ "engines": {
33
+ "node": ">=12"
34
+ }
35
+ },
36
+ "node_modules/@jridgewell/resolve-uri": {
37
+ "version": "3.1.1",
38
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
39
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
40
+ "dev": true,
41
+ "engines": {
42
+ "node": ">=6.0.0"
43
+ }
44
+ },
45
+ "node_modules/@jridgewell/sourcemap-codec": {
46
+ "version": "1.4.15",
47
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
48
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
49
+ "dev": true
50
+ },
51
+ "node_modules/@jridgewell/trace-mapping": {
52
+ "version": "0.3.9",
53
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
54
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
55
+ "dev": true,
56
+ "dependencies": {
57
+ "@jridgewell/resolve-uri": "^3.0.3",
58
+ "@jridgewell/sourcemap-codec": "^1.4.10"
59
+ }
60
+ },
61
+ "node_modules/@tsconfig/node10": {
62
+ "version": "1.0.9",
63
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
64
+ "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
65
+ "dev": true
66
+ },
67
+ "node_modules/@tsconfig/node12": {
68
+ "version": "1.0.11",
69
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
70
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
71
+ "dev": true
72
+ },
73
+ "node_modules/@tsconfig/node14": {
74
+ "version": "1.0.3",
75
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
76
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
77
+ "dev": true
78
+ },
79
+ "node_modules/@tsconfig/node16": {
80
+ "version": "1.0.4",
81
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
82
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
83
+ "dev": true
84
+ },
85
+ "node_modules/@types/body-parser": {
86
+ "version": "1.19.5",
87
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
88
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
89
+ "dev": true,
90
+ "dependencies": {
91
+ "@types/connect": "*",
92
+ "@types/node": "*"
93
+ }
94
+ },
95
+ "node_modules/@types/connect": {
96
+ "version": "3.4.38",
97
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
98
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
99
+ "dev": true,
100
+ "dependencies": {
101
+ "@types/node": "*"
102
+ }
103
+ },
104
+ "node_modules/@types/express": {
105
+ "version": "4.17.21",
106
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
107
+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
108
+ "dev": true,
109
+ "dependencies": {
110
+ "@types/body-parser": "*",
111
+ "@types/express-serve-static-core": "^4.17.33",
112
+ "@types/qs": "*",
113
+ "@types/serve-static": "*"
114
+ }
115
+ },
116
+ "node_modules/@types/express-serve-static-core": {
117
+ "version": "4.17.41",
118
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz",
119
+ "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==",
120
+ "dev": true,
121
+ "dependencies": {
122
+ "@types/node": "*",
123
+ "@types/qs": "*",
124
+ "@types/range-parser": "*",
125
+ "@types/send": "*"
126
+ }
127
+ },
128
+ "node_modules/@types/http-errors": {
129
+ "version": "2.0.4",
130
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
131
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
132
+ "dev": true
133
+ },
134
+ "node_modules/@types/mime": {
135
+ "version": "1.3.5",
136
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
137
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
138
+ "dev": true
139
+ },
140
+ "node_modules/@types/node": {
141
+ "version": "20.9.1",
142
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.1.tgz",
143
+ "integrity": "sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==",
144
+ "dependencies": {
145
+ "undici-types": "~5.26.4"
146
+ }
147
+ },
148
+ "node_modules/@types/qs": {
149
+ "version": "6.9.10",
150
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz",
151
+ "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==",
152
+ "dev": true
153
+ },
154
+ "node_modules/@types/range-parser": {
155
+ "version": "1.2.7",
156
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
157
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
158
+ "dev": true
159
+ },
160
+ "node_modules/@types/send": {
161
+ "version": "0.17.4",
162
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
163
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
164
+ "dev": true,
165
+ "dependencies": {
166
+ "@types/mime": "^1",
167
+ "@types/node": "*"
168
+ }
169
+ },
170
+ "node_modules/@types/serve-static": {
171
+ "version": "1.15.5",
172
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz",
173
+ "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==",
174
+ "dev": true,
175
+ "dependencies": {
176
+ "@types/http-errors": "*",
177
+ "@types/mime": "*",
178
+ "@types/node": "*"
179
+ }
180
+ },
181
+ "node_modules/@types/ws": {
182
+ "version": "8.5.9",
183
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.9.tgz",
184
+ "integrity": "sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==",
185
+ "dependencies": {
186
+ "@types/node": "*"
187
+ }
188
+ },
189
+ "node_modules/abbrev": {
190
+ "version": "1.1.1",
191
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
192
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
193
+ "dev": true
194
+ },
195
+ "node_modules/accepts": {
196
+ "version": "1.3.8",
197
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
198
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
199
+ "dependencies": {
200
+ "mime-types": "~2.1.34",
201
+ "negotiator": "0.6.3"
202
+ },
203
+ "engines": {
204
+ "node": ">= 0.6"
205
+ }
206
+ },
207
+ "node_modules/acorn": {
208
+ "version": "8.11.2",
209
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
210
+ "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
211
+ "dev": true,
212
+ "bin": {
213
+ "acorn": "bin/acorn"
214
+ },
215
+ "engines": {
216
+ "node": ">=0.4.0"
217
+ }
218
+ },
219
+ "node_modules/acorn-walk": {
220
+ "version": "8.3.0",
221
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz",
222
+ "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==",
223
+ "dev": true,
224
+ "engines": {
225
+ "node": ">=0.4.0"
226
+ }
227
+ },
228
+ "node_modules/anymatch": {
229
+ "version": "3.1.3",
230
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
231
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
232
+ "dev": true,
233
+ "dependencies": {
234
+ "normalize-path": "^3.0.0",
235
+ "picomatch": "^2.0.4"
236
+ },
237
+ "engines": {
238
+ "node": ">= 8"
239
+ }
240
+ },
241
+ "node_modules/arg": {
242
+ "version": "4.1.3",
243
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
244
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
245
+ "dev": true
246
+ },
247
+ "node_modules/array-flatten": {
248
+ "version": "1.1.1",
249
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
250
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
251
+ },
252
+ "node_modules/balanced-match": {
253
+ "version": "1.0.2",
254
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
255
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
256
+ "dev": true
257
+ },
258
+ "node_modules/binary-extensions": {
259
+ "version": "2.2.0",
260
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
261
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
262
+ "dev": true,
263
+ "engines": {
264
+ "node": ">=8"
265
+ }
266
+ },
267
+ "node_modules/body-parser": {
268
+ "version": "1.20.1",
269
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
270
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
271
+ "dependencies": {
272
+ "bytes": "3.1.2",
273
+ "content-type": "~1.0.4",
274
+ "debug": "2.6.9",
275
+ "depd": "2.0.0",
276
+ "destroy": "1.2.0",
277
+ "http-errors": "2.0.0",
278
+ "iconv-lite": "0.4.24",
279
+ "on-finished": "2.4.1",
280
+ "qs": "6.11.0",
281
+ "raw-body": "2.5.1",
282
+ "type-is": "~1.6.18",
283
+ "unpipe": "1.0.0"
284
+ },
285
+ "engines": {
286
+ "node": ">= 0.8",
287
+ "npm": "1.2.8000 || >= 1.4.16"
288
+ }
289
+ },
290
+ "node_modules/body-parser/node_modules/debug": {
291
+ "version": "2.6.9",
292
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
293
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
294
+ "dependencies": {
295
+ "ms": "2.0.0"
296
+ }
297
+ },
298
+ "node_modules/body-parser/node_modules/ms": {
299
+ "version": "2.0.0",
300
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
301
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
302
+ },
303
+ "node_modules/brace-expansion": {
304
+ "version": "1.1.11",
305
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
306
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
307
+ "dev": true,
308
+ "dependencies": {
309
+ "balanced-match": "^1.0.0",
310
+ "concat-map": "0.0.1"
311
+ }
312
+ },
313
+ "node_modules/braces": {
314
+ "version": "3.0.2",
315
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
316
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
317
+ "dev": true,
318
+ "dependencies": {
319
+ "fill-range": "^7.0.1"
320
+ },
321
+ "engines": {
322
+ "node": ">=8"
323
+ }
324
+ },
325
+ "node_modules/bytes": {
326
+ "version": "3.1.2",
327
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
328
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
329
+ "engines": {
330
+ "node": ">= 0.8"
331
+ }
332
+ },
333
+ "node_modules/call-bind": {
334
+ "version": "1.0.5",
335
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
336
+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
337
+ "dependencies": {
338
+ "function-bind": "^1.1.2",
339
+ "get-intrinsic": "^1.2.1",
340
+ "set-function-length": "^1.1.1"
341
+ },
342
+ "funding": {
343
+ "url": "https://github.com/sponsors/ljharb"
344
+ }
345
+ },
346
+ "node_modules/chokidar": {
347
+ "version": "3.5.3",
348
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
349
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
350
+ "dev": true,
351
+ "funding": [
352
+ {
353
+ "type": "individual",
354
+ "url": "https://paulmillr.com/funding/"
355
+ }
356
+ ],
357
+ "dependencies": {
358
+ "anymatch": "~3.1.2",
359
+ "braces": "~3.0.2",
360
+ "glob-parent": "~5.1.2",
361
+ "is-binary-path": "~2.1.0",
362
+ "is-glob": "~4.0.1",
363
+ "normalize-path": "~3.0.0",
364
+ "readdirp": "~3.6.0"
365
+ },
366
+ "engines": {
367
+ "node": ">= 8.10.0"
368
+ },
369
+ "optionalDependencies": {
370
+ "fsevents": "~2.3.2"
371
+ }
372
+ },
373
+ "node_modules/concat-map": {
374
+ "version": "0.0.1",
375
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
376
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
377
+ "dev": true
378
+ },
379
+ "node_modules/content-disposition": {
380
+ "version": "0.5.4",
381
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
382
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
383
+ "dependencies": {
384
+ "safe-buffer": "5.2.1"
385
+ },
386
+ "engines": {
387
+ "node": ">= 0.6"
388
+ }
389
+ },
390
+ "node_modules/content-type": {
391
+ "version": "1.0.5",
392
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
393
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
394
+ "engines": {
395
+ "node": ">= 0.6"
396
+ }
397
+ },
398
+ "node_modules/cookie": {
399
+ "version": "0.5.0",
400
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
401
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
402
+ "engines": {
403
+ "node": ">= 0.6"
404
+ }
405
+ },
406
+ "node_modules/cookie-signature": {
407
+ "version": "1.0.6",
408
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
409
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
410
+ },
411
+ "node_modules/create-require": {
412
+ "version": "1.1.1",
413
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
414
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
415
+ "dev": true
416
+ },
417
+ "node_modules/debug": {
418
+ "version": "3.2.7",
419
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
420
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
421
+ "dev": true,
422
+ "dependencies": {
423
+ "ms": "^2.1.1"
424
+ }
425
+ },
426
+ "node_modules/define-data-property": {
427
+ "version": "1.1.1",
428
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
429
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
430
+ "dependencies": {
431
+ "get-intrinsic": "^1.2.1",
432
+ "gopd": "^1.0.1",
433
+ "has-property-descriptors": "^1.0.0"
434
+ },
435
+ "engines": {
436
+ "node": ">= 0.4"
437
+ }
438
+ },
439
+ "node_modules/depd": {
440
+ "version": "2.0.0",
441
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
442
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
443
+ "engines": {
444
+ "node": ">= 0.8"
445
+ }
446
+ },
447
+ "node_modules/destroy": {
448
+ "version": "1.2.0",
449
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
450
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
451
+ "engines": {
452
+ "node": ">= 0.8",
453
+ "npm": "1.2.8000 || >= 1.4.16"
454
+ }
455
+ },
456
+ "node_modules/diff": {
457
+ "version": "4.0.2",
458
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
459
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
460
+ "dev": true,
461
+ "engines": {
462
+ "node": ">=0.3.1"
463
+ }
464
+ },
465
+ "node_modules/ee-first": {
466
+ "version": "1.1.1",
467
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
468
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
469
+ },
470
+ "node_modules/encodeurl": {
471
+ "version": "1.0.2",
472
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
473
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
474
+ "engines": {
475
+ "node": ">= 0.8"
476
+ }
477
+ },
478
+ "node_modules/escape-html": {
479
+ "version": "1.0.3",
480
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
481
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
482
+ },
483
+ "node_modules/etag": {
484
+ "version": "1.8.1",
485
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
486
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
487
+ "engines": {
488
+ "node": ">= 0.6"
489
+ }
490
+ },
491
+ "node_modules/express": {
492
+ "version": "4.18.2",
493
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
494
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
495
+ "dependencies": {
496
+ "accepts": "~1.3.8",
497
+ "array-flatten": "1.1.1",
498
+ "body-parser": "1.20.1",
499
+ "content-disposition": "0.5.4",
500
+ "content-type": "~1.0.4",
501
+ "cookie": "0.5.0",
502
+ "cookie-signature": "1.0.6",
503
+ "debug": "2.6.9",
504
+ "depd": "2.0.0",
505
+ "encodeurl": "~1.0.2",
506
+ "escape-html": "~1.0.3",
507
+ "etag": "~1.8.1",
508
+ "finalhandler": "1.2.0",
509
+ "fresh": "0.5.2",
510
+ "http-errors": "2.0.0",
511
+ "merge-descriptors": "1.0.1",
512
+ "methods": "~1.1.2",
513
+ "on-finished": "2.4.1",
514
+ "parseurl": "~1.3.3",
515
+ "path-to-regexp": "0.1.7",
516
+ "proxy-addr": "~2.0.7",
517
+ "qs": "6.11.0",
518
+ "range-parser": "~1.2.1",
519
+ "safe-buffer": "5.2.1",
520
+ "send": "0.18.0",
521
+ "serve-static": "1.15.0",
522
+ "setprototypeof": "1.2.0",
523
+ "statuses": "2.0.1",
524
+ "type-is": "~1.6.18",
525
+ "utils-merge": "1.0.1",
526
+ "vary": "~1.1.2"
527
+ },
528
+ "engines": {
529
+ "node": ">= 0.10.0"
530
+ }
531
+ },
532
+ "node_modules/express/node_modules/debug": {
533
+ "version": "2.6.9",
534
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
535
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
536
+ "dependencies": {
537
+ "ms": "2.0.0"
538
+ }
539
+ },
540
+ "node_modules/express/node_modules/ms": {
541
+ "version": "2.0.0",
542
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
543
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
544
+ },
545
+ "node_modules/fill-range": {
546
+ "version": "7.0.1",
547
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
548
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
549
+ "dev": true,
550
+ "dependencies": {
551
+ "to-regex-range": "^5.0.1"
552
+ },
553
+ "engines": {
554
+ "node": ">=8"
555
+ }
556
+ },
557
+ "node_modules/finalhandler": {
558
+ "version": "1.2.0",
559
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
560
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
561
+ "dependencies": {
562
+ "debug": "2.6.9",
563
+ "encodeurl": "~1.0.2",
564
+ "escape-html": "~1.0.3",
565
+ "on-finished": "2.4.1",
566
+ "parseurl": "~1.3.3",
567
+ "statuses": "2.0.1",
568
+ "unpipe": "~1.0.0"
569
+ },
570
+ "engines": {
571
+ "node": ">= 0.8"
572
+ }
573
+ },
574
+ "node_modules/finalhandler/node_modules/debug": {
575
+ "version": "2.6.9",
576
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
577
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
578
+ "dependencies": {
579
+ "ms": "2.0.0"
580
+ }
581
+ },
582
+ "node_modules/finalhandler/node_modules/ms": {
583
+ "version": "2.0.0",
584
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
585
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
586
+ },
587
+ "node_modules/forwarded": {
588
+ "version": "0.2.0",
589
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
590
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
591
+ "engines": {
592
+ "node": ">= 0.6"
593
+ }
594
+ },
595
+ "node_modules/fresh": {
596
+ "version": "0.5.2",
597
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
598
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
599
+ "engines": {
600
+ "node": ">= 0.6"
601
+ }
602
+ },
603
+ "node_modules/fsevents": {
604
+ "version": "2.3.3",
605
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
606
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
607
+ "dev": true,
608
+ "hasInstallScript": true,
609
+ "optional": true,
610
+ "os": [
611
+ "darwin"
612
+ ],
613
+ "engines": {
614
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
615
+ }
616
+ },
617
+ "node_modules/function-bind": {
618
+ "version": "1.1.2",
619
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
620
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
621
+ "funding": {
622
+ "url": "https://github.com/sponsors/ljharb"
623
+ }
624
+ },
625
+ "node_modules/get-intrinsic": {
626
+ "version": "1.2.2",
627
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
628
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
629
+ "dependencies": {
630
+ "function-bind": "^1.1.2",
631
+ "has-proto": "^1.0.1",
632
+ "has-symbols": "^1.0.3",
633
+ "hasown": "^2.0.0"
634
+ },
635
+ "funding": {
636
+ "url": "https://github.com/sponsors/ljharb"
637
+ }
638
+ },
639
+ "node_modules/glob-parent": {
640
+ "version": "5.1.2",
641
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
642
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
643
+ "dev": true,
644
+ "dependencies": {
645
+ "is-glob": "^4.0.1"
646
+ },
647
+ "engines": {
648
+ "node": ">= 6"
649
+ }
650
+ },
651
+ "node_modules/gopd": {
652
+ "version": "1.0.1",
653
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
654
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
655
+ "dependencies": {
656
+ "get-intrinsic": "^1.1.3"
657
+ },
658
+ "funding": {
659
+ "url": "https://github.com/sponsors/ljharb"
660
+ }
661
+ },
662
+ "node_modules/has-flag": {
663
+ "version": "3.0.0",
664
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
665
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
666
+ "dev": true,
667
+ "engines": {
668
+ "node": ">=4"
669
+ }
670
+ },
671
+ "node_modules/has-property-descriptors": {
672
+ "version": "1.0.1",
673
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
674
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
675
+ "dependencies": {
676
+ "get-intrinsic": "^1.2.2"
677
+ },
678
+ "funding": {
679
+ "url": "https://github.com/sponsors/ljharb"
680
+ }
681
+ },
682
+ "node_modules/has-proto": {
683
+ "version": "1.0.1",
684
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
685
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
686
+ "engines": {
687
+ "node": ">= 0.4"
688
+ },
689
+ "funding": {
690
+ "url": "https://github.com/sponsors/ljharb"
691
+ }
692
+ },
693
+ "node_modules/has-symbols": {
694
+ "version": "1.0.3",
695
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
696
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
697
+ "engines": {
698
+ "node": ">= 0.4"
699
+ },
700
+ "funding": {
701
+ "url": "https://github.com/sponsors/ljharb"
702
+ }
703
+ },
704
+ "node_modules/hasown": {
705
+ "version": "2.0.0",
706
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
707
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
708
+ "dependencies": {
709
+ "function-bind": "^1.1.2"
710
+ },
711
+ "engines": {
712
+ "node": ">= 0.4"
713
+ }
714
+ },
715
+ "node_modules/http-errors": {
716
+ "version": "2.0.0",
717
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
718
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
719
+ "dependencies": {
720
+ "depd": "2.0.0",
721
+ "inherits": "2.0.4",
722
+ "setprototypeof": "1.2.0",
723
+ "statuses": "2.0.1",
724
+ "toidentifier": "1.0.1"
725
+ },
726
+ "engines": {
727
+ "node": ">= 0.8"
728
+ }
729
+ },
730
+ "node_modules/iconv-lite": {
731
+ "version": "0.4.24",
732
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
733
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
734
+ "dependencies": {
735
+ "safer-buffer": ">= 2.1.2 < 3"
736
+ },
737
+ "engines": {
738
+ "node": ">=0.10.0"
739
+ }
740
+ },
741
+ "node_modules/ignore-by-default": {
742
+ "version": "1.0.1",
743
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
744
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
745
+ "dev": true
746
+ },
747
+ "node_modules/inherits": {
748
+ "version": "2.0.4",
749
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
750
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
751
+ },
752
+ "node_modules/ipaddr.js": {
753
+ "version": "1.9.1",
754
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
755
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
756
+ "engines": {
757
+ "node": ">= 0.10"
758
+ }
759
+ },
760
+ "node_modules/is-binary-path": {
761
+ "version": "2.1.0",
762
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
763
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
764
+ "dev": true,
765
+ "dependencies": {
766
+ "binary-extensions": "^2.0.0"
767
+ },
768
+ "engines": {
769
+ "node": ">=8"
770
+ }
771
+ },
772
+ "node_modules/is-extglob": {
773
+ "version": "2.1.1",
774
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
775
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
776
+ "dev": true,
777
+ "engines": {
778
+ "node": ">=0.10.0"
779
+ }
780
+ },
781
+ "node_modules/is-glob": {
782
+ "version": "4.0.3",
783
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
784
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
785
+ "dev": true,
786
+ "dependencies": {
787
+ "is-extglob": "^2.1.1"
788
+ },
789
+ "engines": {
790
+ "node": ">=0.10.0"
791
+ }
792
+ },
793
+ "node_modules/is-number": {
794
+ "version": "7.0.0",
795
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
796
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
797
+ "dev": true,
798
+ "engines": {
799
+ "node": ">=0.12.0"
800
+ }
801
+ },
802
+ "node_modules/lru-cache": {
803
+ "version": "6.0.0",
804
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
805
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
806
+ "dev": true,
807
+ "dependencies": {
808
+ "yallist": "^4.0.0"
809
+ },
810
+ "engines": {
811
+ "node": ">=10"
812
+ }
813
+ },
814
+ "node_modules/make-error": {
815
+ "version": "1.3.6",
816
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
817
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
818
+ "dev": true
819
+ },
820
+ "node_modules/media-typer": {
821
+ "version": "0.3.0",
822
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
823
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
824
+ "engines": {
825
+ "node": ">= 0.6"
826
+ }
827
+ },
828
+ "node_modules/merge-descriptors": {
829
+ "version": "1.0.1",
830
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
831
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
832
+ },
833
+ "node_modules/methods": {
834
+ "version": "1.1.2",
835
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
836
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
837
+ "engines": {
838
+ "node": ">= 0.6"
839
+ }
840
+ },
841
+ "node_modules/mime": {
842
+ "version": "1.6.0",
843
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
844
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
845
+ "bin": {
846
+ "mime": "cli.js"
847
+ },
848
+ "engines": {
849
+ "node": ">=4"
850
+ }
851
+ },
852
+ "node_modules/mime-db": {
853
+ "version": "1.52.0",
854
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
855
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
856
+ "engines": {
857
+ "node": ">= 0.6"
858
+ }
859
+ },
860
+ "node_modules/mime-types": {
861
+ "version": "2.1.35",
862
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
863
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
864
+ "dependencies": {
865
+ "mime-db": "1.52.0"
866
+ },
867
+ "engines": {
868
+ "node": ">= 0.6"
869
+ }
870
+ },
871
+ "node_modules/minimatch": {
872
+ "version": "3.1.2",
873
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
874
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
875
+ "dev": true,
876
+ "dependencies": {
877
+ "brace-expansion": "^1.1.7"
878
+ },
879
+ "engines": {
880
+ "node": "*"
881
+ }
882
+ },
883
+ "node_modules/ms": {
884
+ "version": "2.1.3",
885
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
886
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
887
+ },
888
+ "node_modules/negotiator": {
889
+ "version": "0.6.3",
890
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
891
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
892
+ "engines": {
893
+ "node": ">= 0.6"
894
+ }
895
+ },
896
+ "node_modules/nodemon": {
897
+ "version": "3.0.1",
898
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz",
899
+ "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==",
900
+ "dev": true,
901
+ "dependencies": {
902
+ "chokidar": "^3.5.2",
903
+ "debug": "^3.2.7",
904
+ "ignore-by-default": "^1.0.1",
905
+ "minimatch": "^3.1.2",
906
+ "pstree.remy": "^1.1.8",
907
+ "semver": "^7.5.3",
908
+ "simple-update-notifier": "^2.0.0",
909
+ "supports-color": "^5.5.0",
910
+ "touch": "^3.1.0",
911
+ "undefsafe": "^2.0.5"
912
+ },
913
+ "bin": {
914
+ "nodemon": "bin/nodemon.js"
915
+ },
916
+ "engines": {
917
+ "node": ">=10"
918
+ },
919
+ "funding": {
920
+ "type": "opencollective",
921
+ "url": "https://opencollective.com/nodemon"
922
+ }
923
+ },
924
+ "node_modules/nopt": {
925
+ "version": "1.0.10",
926
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
927
+ "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
928
+ "dev": true,
929
+ "dependencies": {
930
+ "abbrev": "1"
931
+ },
932
+ "bin": {
933
+ "nopt": "bin/nopt.js"
934
+ },
935
+ "engines": {
936
+ "node": "*"
937
+ }
938
+ },
939
+ "node_modules/normalize-path": {
940
+ "version": "3.0.0",
941
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
942
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
943
+ "dev": true,
944
+ "engines": {
945
+ "node": ">=0.10.0"
946
+ }
947
+ },
948
+ "node_modules/object-inspect": {
949
+ "version": "1.13.1",
950
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
951
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
952
+ "funding": {
953
+ "url": "https://github.com/sponsors/ljharb"
954
+ }
955
+ },
956
+ "node_modules/on-finished": {
957
+ "version": "2.4.1",
958
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
959
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
960
+ "dependencies": {
961
+ "ee-first": "1.1.1"
962
+ },
963
+ "engines": {
964
+ "node": ">= 0.8"
965
+ }
966
+ },
967
+ "node_modules/parseurl": {
968
+ "version": "1.3.3",
969
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
970
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
971
+ "engines": {
972
+ "node": ">= 0.8"
973
+ }
974
+ },
975
+ "node_modules/path-to-regexp": {
976
+ "version": "0.1.7",
977
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
978
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
979
+ },
980
+ "node_modules/picomatch": {
981
+ "version": "2.3.1",
982
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
983
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
984
+ "dev": true,
985
+ "engines": {
986
+ "node": ">=8.6"
987
+ },
988
+ "funding": {
989
+ "url": "https://github.com/sponsors/jonschlinkert"
990
+ }
991
+ },
992
+ "node_modules/proxy-addr": {
993
+ "version": "2.0.7",
994
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
995
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
996
+ "dependencies": {
997
+ "forwarded": "0.2.0",
998
+ "ipaddr.js": "1.9.1"
999
+ },
1000
+ "engines": {
1001
+ "node": ">= 0.10"
1002
+ }
1003
+ },
1004
+ "node_modules/pstree.remy": {
1005
+ "version": "1.1.8",
1006
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
1007
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
1008
+ "dev": true
1009
+ },
1010
+ "node_modules/qs": {
1011
+ "version": "6.11.0",
1012
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
1013
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
1014
+ "dependencies": {
1015
+ "side-channel": "^1.0.4"
1016
+ },
1017
+ "engines": {
1018
+ "node": ">=0.6"
1019
+ },
1020
+ "funding": {
1021
+ "url": "https://github.com/sponsors/ljharb"
1022
+ }
1023
+ },
1024
+ "node_modules/range-parser": {
1025
+ "version": "1.2.1",
1026
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1027
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1028
+ "engines": {
1029
+ "node": ">= 0.6"
1030
+ }
1031
+ },
1032
+ "node_modules/raw-body": {
1033
+ "version": "2.5.1",
1034
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
1035
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
1036
+ "dependencies": {
1037
+ "bytes": "3.1.2",
1038
+ "http-errors": "2.0.0",
1039
+ "iconv-lite": "0.4.24",
1040
+ "unpipe": "1.0.0"
1041
+ },
1042
+ "engines": {
1043
+ "node": ">= 0.8"
1044
+ }
1045
+ },
1046
+ "node_modules/readdirp": {
1047
+ "version": "3.6.0",
1048
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1049
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1050
+ "dev": true,
1051
+ "dependencies": {
1052
+ "picomatch": "^2.2.1"
1053
+ },
1054
+ "engines": {
1055
+ "node": ">=8.10.0"
1056
+ }
1057
+ },
1058
+ "node_modules/safe-buffer": {
1059
+ "version": "5.2.1",
1060
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1061
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1062
+ "funding": [
1063
+ {
1064
+ "type": "github",
1065
+ "url": "https://github.com/sponsors/feross"
1066
+ },
1067
+ {
1068
+ "type": "patreon",
1069
+ "url": "https://www.patreon.com/feross"
1070
+ },
1071
+ {
1072
+ "type": "consulting",
1073
+ "url": "https://feross.org/support"
1074
+ }
1075
+ ]
1076
+ },
1077
+ "node_modules/safer-buffer": {
1078
+ "version": "2.1.2",
1079
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1080
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1081
+ },
1082
+ "node_modules/semver": {
1083
+ "version": "7.5.4",
1084
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
1085
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
1086
+ "dev": true,
1087
+ "dependencies": {
1088
+ "lru-cache": "^6.0.0"
1089
+ },
1090
+ "bin": {
1091
+ "semver": "bin/semver.js"
1092
+ },
1093
+ "engines": {
1094
+ "node": ">=10"
1095
+ }
1096
+ },
1097
+ "node_modules/send": {
1098
+ "version": "0.18.0",
1099
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1100
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1101
+ "dependencies": {
1102
+ "debug": "2.6.9",
1103
+ "depd": "2.0.0",
1104
+ "destroy": "1.2.0",
1105
+ "encodeurl": "~1.0.2",
1106
+ "escape-html": "~1.0.3",
1107
+ "etag": "~1.8.1",
1108
+ "fresh": "0.5.2",
1109
+ "http-errors": "2.0.0",
1110
+ "mime": "1.6.0",
1111
+ "ms": "2.1.3",
1112
+ "on-finished": "2.4.1",
1113
+ "range-parser": "~1.2.1",
1114
+ "statuses": "2.0.1"
1115
+ },
1116
+ "engines": {
1117
+ "node": ">= 0.8.0"
1118
+ }
1119
+ },
1120
+ "node_modules/send/node_modules/debug": {
1121
+ "version": "2.6.9",
1122
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1123
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1124
+ "dependencies": {
1125
+ "ms": "2.0.0"
1126
+ }
1127
+ },
1128
+ "node_modules/send/node_modules/debug/node_modules/ms": {
1129
+ "version": "2.0.0",
1130
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1131
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1132
+ },
1133
+ "node_modules/serve-static": {
1134
+ "version": "1.15.0",
1135
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1136
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1137
+ "dependencies": {
1138
+ "encodeurl": "~1.0.2",
1139
+ "escape-html": "~1.0.3",
1140
+ "parseurl": "~1.3.3",
1141
+ "send": "0.18.0"
1142
+ },
1143
+ "engines": {
1144
+ "node": ">= 0.8.0"
1145
+ }
1146
+ },
1147
+ "node_modules/set-function-length": {
1148
+ "version": "1.1.1",
1149
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
1150
+ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
1151
+ "dependencies": {
1152
+ "define-data-property": "^1.1.1",
1153
+ "get-intrinsic": "^1.2.1",
1154
+ "gopd": "^1.0.1",
1155
+ "has-property-descriptors": "^1.0.0"
1156
+ },
1157
+ "engines": {
1158
+ "node": ">= 0.4"
1159
+ }
1160
+ },
1161
+ "node_modules/setprototypeof": {
1162
+ "version": "1.2.0",
1163
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1164
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1165
+ },
1166
+ "node_modules/side-channel": {
1167
+ "version": "1.0.4",
1168
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1169
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1170
+ "dependencies": {
1171
+ "call-bind": "^1.0.0",
1172
+ "get-intrinsic": "^1.0.2",
1173
+ "object-inspect": "^1.9.0"
1174
+ },
1175
+ "funding": {
1176
+ "url": "https://github.com/sponsors/ljharb"
1177
+ }
1178
+ },
1179
+ "node_modules/simple-update-notifier": {
1180
+ "version": "2.0.0",
1181
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
1182
+ "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
1183
+ "dev": true,
1184
+ "dependencies": {
1185
+ "semver": "^7.5.3"
1186
+ },
1187
+ "engines": {
1188
+ "node": ">=10"
1189
+ }
1190
+ },
1191
+ "node_modules/statuses": {
1192
+ "version": "2.0.1",
1193
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1194
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
1195
+ "engines": {
1196
+ "node": ">= 0.8"
1197
+ }
1198
+ },
1199
+ "node_modules/supports-color": {
1200
+ "version": "5.5.0",
1201
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1202
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1203
+ "dev": true,
1204
+ "dependencies": {
1205
+ "has-flag": "^3.0.0"
1206
+ },
1207
+ "engines": {
1208
+ "node": ">=4"
1209
+ }
1210
+ },
1211
+ "node_modules/to-regex-range": {
1212
+ "version": "5.0.1",
1213
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1214
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1215
+ "dev": true,
1216
+ "dependencies": {
1217
+ "is-number": "^7.0.0"
1218
+ },
1219
+ "engines": {
1220
+ "node": ">=8.0"
1221
+ }
1222
+ },
1223
+ "node_modules/toidentifier": {
1224
+ "version": "1.0.1",
1225
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1226
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1227
+ "engines": {
1228
+ "node": ">=0.6"
1229
+ }
1230
+ },
1231
+ "node_modules/touch": {
1232
+ "version": "3.1.0",
1233
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
1234
+ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
1235
+ "dev": true,
1236
+ "dependencies": {
1237
+ "nopt": "~1.0.10"
1238
+ },
1239
+ "bin": {
1240
+ "nodetouch": "bin/nodetouch.js"
1241
+ }
1242
+ },
1243
+ "node_modules/ts-node": {
1244
+ "version": "10.9.1",
1245
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
1246
+ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
1247
+ "dev": true,
1248
+ "dependencies": {
1249
+ "@cspotcode/source-map-support": "^0.8.0",
1250
+ "@tsconfig/node10": "^1.0.7",
1251
+ "@tsconfig/node12": "^1.0.7",
1252
+ "@tsconfig/node14": "^1.0.0",
1253
+ "@tsconfig/node16": "^1.0.2",
1254
+ "acorn": "^8.4.1",
1255
+ "acorn-walk": "^8.1.1",
1256
+ "arg": "^4.1.0",
1257
+ "create-require": "^1.1.0",
1258
+ "diff": "^4.0.1",
1259
+ "make-error": "^1.1.1",
1260
+ "v8-compile-cache-lib": "^3.0.1",
1261
+ "yn": "3.1.1"
1262
+ },
1263
+ "bin": {
1264
+ "ts-node": "dist/bin.js",
1265
+ "ts-node-cwd": "dist/bin-cwd.js",
1266
+ "ts-node-esm": "dist/bin-esm.js",
1267
+ "ts-node-script": "dist/bin-script.js",
1268
+ "ts-node-transpile-only": "dist/bin-transpile.js",
1269
+ "ts-script": "dist/bin-script-deprecated.js"
1270
+ },
1271
+ "peerDependencies": {
1272
+ "@swc/core": ">=1.2.50",
1273
+ "@swc/wasm": ">=1.2.50",
1274
+ "@types/node": "*",
1275
+ "typescript": ">=2.7"
1276
+ },
1277
+ "peerDependenciesMeta": {
1278
+ "@swc/core": {
1279
+ "optional": true
1280
+ },
1281
+ "@swc/wasm": {
1282
+ "optional": true
1283
+ }
1284
+ }
1285
+ },
1286
+ "node_modules/type-is": {
1287
+ "version": "1.6.18",
1288
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1289
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1290
+ "dependencies": {
1291
+ "media-typer": "0.3.0",
1292
+ "mime-types": "~2.1.24"
1293
+ },
1294
+ "engines": {
1295
+ "node": ">= 0.6"
1296
+ }
1297
+ },
1298
+ "node_modules/typescript": {
1299
+ "version": "5.2.2",
1300
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
1301
+ "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
1302
+ "dev": true,
1303
+ "bin": {
1304
+ "tsc": "bin/tsc",
1305
+ "tsserver": "bin/tsserver"
1306
+ },
1307
+ "engines": {
1308
+ "node": ">=14.17"
1309
+ }
1310
+ },
1311
+ "node_modules/undefsafe": {
1312
+ "version": "2.0.5",
1313
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
1314
+ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
1315
+ "dev": true
1316
+ },
1317
+ "node_modules/undici-types": {
1318
+ "version": "5.26.5",
1319
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
1320
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
1321
+ },
1322
+ "node_modules/unpipe": {
1323
+ "version": "1.0.0",
1324
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1325
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1326
+ "engines": {
1327
+ "node": ">= 0.8"
1328
+ }
1329
+ },
1330
+ "node_modules/utils-merge": {
1331
+ "version": "1.0.1",
1332
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1333
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
1334
+ "engines": {
1335
+ "node": ">= 0.4.0"
1336
+ }
1337
+ },
1338
+ "node_modules/v8-compile-cache-lib": {
1339
+ "version": "3.0.1",
1340
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
1341
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
1342
+ "dev": true
1343
+ },
1344
+ "node_modules/vary": {
1345
+ "version": "1.1.2",
1346
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1347
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1348
+ "engines": {
1349
+ "node": ">= 0.8"
1350
+ }
1351
+ },
1352
+ "node_modules/ws": {
1353
+ "version": "8.14.2",
1354
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
1355
+ "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==",
1356
+ "engines": {
1357
+ "node": ">=10.0.0"
1358
+ },
1359
+ "peerDependencies": {
1360
+ "bufferutil": "^4.0.1",
1361
+ "utf-8-validate": ">=5.0.2"
1362
+ },
1363
+ "peerDependenciesMeta": {
1364
+ "bufferutil": {
1365
+ "optional": true
1366
+ },
1367
+ "utf-8-validate": {
1368
+ "optional": true
1369
+ }
1370
+ }
1371
+ },
1372
+ "node_modules/yallist": {
1373
+ "version": "4.0.0",
1374
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1375
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
1376
+ "dev": true
1377
+ },
1378
+ "node_modules/yn": {
1379
+ "version": "3.1.1",
1380
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
1381
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
1382
+ "dev": true,
1383
+ "engines": {
1384
+ "node": ">=6"
1385
+ }
1386
+ }
1387
+ }
1388
+ }
server/package.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "server",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "build/index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1",
8
+ "build": "tsc",
9
+ "start": "node .",
10
+ "dev": "nodemon src/index.ts"
11
+ },
12
+ "keywords": [],
13
+ "author": "",
14
+ "license": "ISC",
15
+ "devDependencies": {
16
+ "@types/express": "^4.17.21",
17
+ "@types/node": "^20.9.1",
18
+ "nodemon": "^3.0.1",
19
+ "ts-node": "^10.9.1",
20
+ "typescript": "^5.2.2"
21
+ },
22
+ "dependencies": {
23
+ "@types/ws": "^8.5.9",
24
+ "express": "^4.18.2",
25
+ "ws": "^8.14.2"
26
+ }
27
+ }
server/src/index.ts ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import express, { Application, Request, Response } from 'express';
2
+ import * as http from "http";
3
+ import * as WebSocket from "ws";
4
+
5
+ const port: number = parseInt(process.env.PORT as string, 10) || 3000;
6
+
7
+ const app: Application = express();
8
+ const server = http.createServer(app);
9
+ const wss = new WebSocket.Server({server});
10
+
11
+
12
+ app.get("/", (_req: Request, res: Response) => {
13
+ res.send("Bonjour");
14
+ });
15
+
16
+
17
+ wss.on("connection", (ws: WebSocket) => {
18
+ console.log("Client Connected");
19
+
20
+ ws.on("message", (message: string) => {
21
+ console.log(`Received Message: ${message}`);
22
+ })
23
+
24
+ ws.send("Welcome");
25
+ })
26
+
27
+ server.listen(port, () => {
28
+ console.log(`Server is running on port ${port}`);
29
+ });
server/tsconfig.json ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ /* Visit https://aka.ms/tsconfig to read more about this file */
4
+ /* Projects */
5
+ // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
6
+ // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
7
+ // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
8
+ // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
9
+ // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
10
+ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
11
+ /* Language and Environment */
12
+ "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
13
+ // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
14
+ // "jsx": "preserve", /* Specify what JSX code is generated. */
15
+ // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
16
+ // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
17
+ // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
18
+ // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
19
+ // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
20
+ // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
21
+ // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
22
+ // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
23
+ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
24
+ /* Modules */
25
+ "module": "commonjs", /* Specify what module code is generated. */
26
+ "rootDir": "./src", /* Specify the root folder within your source files. */
27
+ // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
28
+ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
29
+ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
30
+ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
31
+ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
32
+ // "types": [], /* Specify type package names to be included without being referenced in a source file. */
33
+ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
34
+ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
35
+ // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
36
+ // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
37
+ // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
38
+ // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
39
+ // "resolveJsonModule": true, /* Enable importing .json files. */
40
+ // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
41
+ // "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
42
+ /* JavaScript Support */
43
+ // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
44
+ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
45
+ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
46
+ /* Emit */
47
+ // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
48
+ // "declarationMap": true, /* Create sourcemaps for d.ts files. */
49
+ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
50
+ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
51
+ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
52
+ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
53
+ "outDir": "./build", /* Specify an output folder for all emitted files. */
54
+ // "removeComments": true, /* Disable emitting comments. */
55
+ // "noEmit": true, /* Disable emitting files from a compilation. */
56
+ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
57
+ // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
58
+ // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
59
+ // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
60
+ // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
61
+ // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
62
+ // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
63
+ // "newLine": "crlf", /* Set the newline character for emitting files. */
64
+ // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
65
+ // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
66
+ // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
67
+ // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
68
+ // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
69
+ // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
70
+ /* Interop Constraints */
71
+ // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
72
+ // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
73
+ // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
74
+ "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
75
+ // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
76
+ "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
77
+ /* Type Checking */
78
+ "strict": true, /* Enable all strict type-checking options. */
79
+ // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
80
+ // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
81
+ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
82
+ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
83
+ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
84
+ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
85
+ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
86
+ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
87
+ // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
88
+ // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
89
+ // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
90
+ // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
91
+ // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
92
+ // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
93
+ // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
94
+ // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
95
+ // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
96
+ // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
97
+ /* Completeness */
98
+ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
99
+ "skipLibCheck": true /* Skip type checking all .d.ts files. */
100
+ }
101
+ }