avallef commited on
Commit
a74716b
·
1 Parent(s): 35fc662

Added logger

Browse files
server/package-lock.json CHANGED
@@ -11,6 +11,7 @@
11
  "dependencies": {
12
  "@types/ws": "^8.5.9",
13
  "express": "^4.18.2",
 
14
  "ws": "^8.14.2",
15
  "zod": "^3.22.4"
16
  },
@@ -194,6 +195,17 @@
194
  "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
195
  "dev": true
196
  },
 
 
 
 
 
 
 
 
 
 
 
197
  "node_modules/accepts": {
198
  "version": "1.3.8",
199
  "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -251,12 +263,39 @@
251
  "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
252
  "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
253
  },
 
 
 
 
 
 
 
 
254
  "node_modules/balanced-match": {
255
  "version": "1.0.2",
256
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
257
  "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
258
  "dev": true
259
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
260
  "node_modules/binary-extensions": {
261
  "version": "2.2.0",
262
  "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -324,6 +363,29 @@
324
  "node": ">=8"
325
  }
326
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  "node_modules/bytes": {
328
  "version": "3.1.2",
329
  "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@@ -490,6 +552,22 @@
490
  "node": ">= 0.6"
491
  }
492
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
493
  "node_modules/express": {
494
  "version": "4.18.2",
495
  "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
@@ -544,6 +622,14 @@
544
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
545
  "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
546
  },
 
 
 
 
 
 
 
 
547
  "node_modules/fill-range": {
548
  "version": "7.0.1",
549
  "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -740,6 +826,25 @@
740
  "node": ">=0.10.0"
741
  }
742
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
743
  "node_modules/ignore-by-default": {
744
  "version": "1.0.1",
745
  "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
@@ -955,6 +1060,14 @@
955
  "url": "https://github.com/sponsors/ljharb"
956
  }
957
  },
 
 
 
 
 
 
 
 
958
  "node_modules/on-finished": {
959
  "version": "2.4.1",
960
  "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -991,6 +1104,41 @@
991
  "url": "https://github.com/sponsors/jonschlinkert"
992
  }
993
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
994
  "node_modules/prettier": {
995
  "version": "3.1.0",
996
  "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz",
@@ -1006,6 +1154,19 @@
1006
  "url": "https://github.com/prettier/prettier?sponsor=1"
1007
  }
1008
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
1009
  "node_modules/proxy-addr": {
1010
  "version": "2.0.7",
1011
  "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -1038,6 +1199,11 @@
1038
  "url": "https://github.com/sponsors/ljharb"
1039
  }
1040
  },
 
 
 
 
 
1041
  "node_modules/range-parser": {
1042
  "version": "1.2.1",
1043
  "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -1060,6 +1226,21 @@
1060
  "node": ">= 0.8"
1061
  }
1062
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1063
  "node_modules/readdirp": {
1064
  "version": "3.6.0",
1065
  "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -1072,6 +1253,14 @@
1072
  "node": ">=8.10.0"
1073
  }
1074
  },
 
 
 
 
 
 
 
 
1075
  "node_modules/safe-buffer": {
1076
  "version": "5.2.1",
1077
  "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -1091,6 +1280,14 @@
1091
  }
1092
  ]
1093
  },
 
 
 
 
 
 
 
 
1094
  "node_modules/safer-buffer": {
1095
  "version": "2.1.2",
1096
  "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -1205,6 +1402,22 @@
1205
  "node": ">=10"
1206
  }
1207
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1208
  "node_modules/statuses": {
1209
  "version": "2.0.1",
1210
  "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
@@ -1213,6 +1426,14 @@
1213
  "node": ">= 0.8"
1214
  }
1215
  },
 
 
 
 
 
 
 
 
1216
  "node_modules/supports-color": {
1217
  "version": "5.5.0",
1218
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -1225,6 +1446,14 @@
1225
  "node": ">=4"
1226
  }
1227
  },
 
 
 
 
 
 
 
 
1228
  "node_modules/to-regex-range": {
1229
  "version": "5.0.1",
1230
  "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
 
11
  "dependencies": {
12
  "@types/ws": "^8.5.9",
13
  "express": "^4.18.2",
14
+ "pino": "^8.16.2",
15
  "ws": "^8.14.2",
16
  "zod": "^3.22.4"
17
  },
 
195
  "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
196
  "dev": true
197
  },
198
+ "node_modules/abort-controller": {
199
+ "version": "3.0.0",
200
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
201
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
202
+ "dependencies": {
203
+ "event-target-shim": "^5.0.0"
204
+ },
205
+ "engines": {
206
+ "node": ">=6.5"
207
+ }
208
+ },
209
  "node_modules/accepts": {
210
  "version": "1.3.8",
211
  "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
 
263
  "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
264
  "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
265
  },
266
+ "node_modules/atomic-sleep": {
267
+ "version": "1.0.0",
268
+ "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
269
+ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
270
+ "engines": {
271
+ "node": ">=8.0.0"
272
+ }
273
+ },
274
  "node_modules/balanced-match": {
275
  "version": "1.0.2",
276
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
277
  "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
278
  "dev": true
279
  },
280
+ "node_modules/base64-js": {
281
+ "version": "1.5.1",
282
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
283
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
284
+ "funding": [
285
+ {
286
+ "type": "github",
287
+ "url": "https://github.com/sponsors/feross"
288
+ },
289
+ {
290
+ "type": "patreon",
291
+ "url": "https://www.patreon.com/feross"
292
+ },
293
+ {
294
+ "type": "consulting",
295
+ "url": "https://feross.org/support"
296
+ }
297
+ ]
298
+ },
299
  "node_modules/binary-extensions": {
300
  "version": "2.2.0",
301
  "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
 
363
  "node": ">=8"
364
  }
365
  },
366
+ "node_modules/buffer": {
367
+ "version": "6.0.3",
368
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
369
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
370
+ "funding": [
371
+ {
372
+ "type": "github",
373
+ "url": "https://github.com/sponsors/feross"
374
+ },
375
+ {
376
+ "type": "patreon",
377
+ "url": "https://www.patreon.com/feross"
378
+ },
379
+ {
380
+ "type": "consulting",
381
+ "url": "https://feross.org/support"
382
+ }
383
+ ],
384
+ "dependencies": {
385
+ "base64-js": "^1.3.1",
386
+ "ieee754": "^1.2.1"
387
+ }
388
+ },
389
  "node_modules/bytes": {
390
  "version": "3.1.2",
391
  "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
 
552
  "node": ">= 0.6"
553
  }
554
  },
555
+ "node_modules/event-target-shim": {
556
+ "version": "5.0.1",
557
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
558
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
559
+ "engines": {
560
+ "node": ">=6"
561
+ }
562
+ },
563
+ "node_modules/events": {
564
+ "version": "3.3.0",
565
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
566
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
567
+ "engines": {
568
+ "node": ">=0.8.x"
569
+ }
570
+ },
571
  "node_modules/express": {
572
  "version": "4.18.2",
573
  "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
 
622
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
623
  "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
624
  },
625
+ "node_modules/fast-redact": {
626
+ "version": "3.3.0",
627
+ "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz",
628
+ "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==",
629
+ "engines": {
630
+ "node": ">=6"
631
+ }
632
+ },
633
  "node_modules/fill-range": {
634
  "version": "7.0.1",
635
  "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
 
826
  "node": ">=0.10.0"
827
  }
828
  },
829
+ "node_modules/ieee754": {
830
+ "version": "1.2.1",
831
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
832
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
833
+ "funding": [
834
+ {
835
+ "type": "github",
836
+ "url": "https://github.com/sponsors/feross"
837
+ },
838
+ {
839
+ "type": "patreon",
840
+ "url": "https://www.patreon.com/feross"
841
+ },
842
+ {
843
+ "type": "consulting",
844
+ "url": "https://feross.org/support"
845
+ }
846
+ ]
847
+ },
848
  "node_modules/ignore-by-default": {
849
  "version": "1.0.1",
850
  "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
 
1060
  "url": "https://github.com/sponsors/ljharb"
1061
  }
1062
  },
1063
+ "node_modules/on-exit-leak-free": {
1064
+ "version": "2.1.2",
1065
+ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
1066
+ "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
1067
+ "engines": {
1068
+ "node": ">=14.0.0"
1069
+ }
1070
+ },
1071
  "node_modules/on-finished": {
1072
  "version": "2.4.1",
1073
  "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
 
1104
  "url": "https://github.com/sponsors/jonschlinkert"
1105
  }
1106
  },
1107
+ "node_modules/pino": {
1108
+ "version": "8.16.2",
1109
+ "resolved": "https://registry.npmjs.org/pino/-/pino-8.16.2.tgz",
1110
+ "integrity": "sha512-2advCDGVEvkKu9TTVSa/kWW7Z3htI/sBKEZpqiHk6ive0i/7f5b1rsU8jn0aimxqfnSz5bj/nOYkwhBUn5xxvg==",
1111
+ "dependencies": {
1112
+ "atomic-sleep": "^1.0.0",
1113
+ "fast-redact": "^3.1.1",
1114
+ "on-exit-leak-free": "^2.1.0",
1115
+ "pino-abstract-transport": "v1.1.0",
1116
+ "pino-std-serializers": "^6.0.0",
1117
+ "process-warning": "^2.0.0",
1118
+ "quick-format-unescaped": "^4.0.3",
1119
+ "real-require": "^0.2.0",
1120
+ "safe-stable-stringify": "^2.3.1",
1121
+ "sonic-boom": "^3.7.0",
1122
+ "thread-stream": "^2.0.0"
1123
+ },
1124
+ "bin": {
1125
+ "pino": "bin.js"
1126
+ }
1127
+ },
1128
+ "node_modules/pino-abstract-transport": {
1129
+ "version": "1.1.0",
1130
+ "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz",
1131
+ "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==",
1132
+ "dependencies": {
1133
+ "readable-stream": "^4.0.0",
1134
+ "split2": "^4.0.0"
1135
+ }
1136
+ },
1137
+ "node_modules/pino-std-serializers": {
1138
+ "version": "6.2.2",
1139
+ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz",
1140
+ "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA=="
1141
+ },
1142
  "node_modules/prettier": {
1143
  "version": "3.1.0",
1144
  "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz",
 
1154
  "url": "https://github.com/prettier/prettier?sponsor=1"
1155
  }
1156
  },
1157
+ "node_modules/process": {
1158
+ "version": "0.11.10",
1159
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
1160
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
1161
+ "engines": {
1162
+ "node": ">= 0.6.0"
1163
+ }
1164
+ },
1165
+ "node_modules/process-warning": {
1166
+ "version": "2.3.1",
1167
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.1.tgz",
1168
+ "integrity": "sha512-JjBvFEn7MwFbzUDa2SRtKJSsyO0LlER4V/FmwLMhBlXNbGgGxdyFCxIdMDLerWUycsVUyaoM9QFLvppFy4IWaQ=="
1169
+ },
1170
  "node_modules/proxy-addr": {
1171
  "version": "2.0.7",
1172
  "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
 
1199
  "url": "https://github.com/sponsors/ljharb"
1200
  }
1201
  },
1202
+ "node_modules/quick-format-unescaped": {
1203
+ "version": "4.0.4",
1204
+ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
1205
+ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="
1206
+ },
1207
  "node_modules/range-parser": {
1208
  "version": "1.2.1",
1209
  "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
 
1226
  "node": ">= 0.8"
1227
  }
1228
  },
1229
+ "node_modules/readable-stream": {
1230
+ "version": "4.4.2",
1231
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz",
1232
+ "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==",
1233
+ "dependencies": {
1234
+ "abort-controller": "^3.0.0",
1235
+ "buffer": "^6.0.3",
1236
+ "events": "^3.3.0",
1237
+ "process": "^0.11.10",
1238
+ "string_decoder": "^1.3.0"
1239
+ },
1240
+ "engines": {
1241
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1242
+ }
1243
+ },
1244
  "node_modules/readdirp": {
1245
  "version": "3.6.0",
1246
  "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
 
1253
  "node": ">=8.10.0"
1254
  }
1255
  },
1256
+ "node_modules/real-require": {
1257
+ "version": "0.2.0",
1258
+ "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
1259
+ "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
1260
+ "engines": {
1261
+ "node": ">= 12.13.0"
1262
+ }
1263
+ },
1264
  "node_modules/safe-buffer": {
1265
  "version": "5.2.1",
1266
  "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
 
1280
  }
1281
  ]
1282
  },
1283
+ "node_modules/safe-stable-stringify": {
1284
+ "version": "2.4.3",
1285
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
1286
+ "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
1287
+ "engines": {
1288
+ "node": ">=10"
1289
+ }
1290
+ },
1291
  "node_modules/safer-buffer": {
1292
  "version": "2.1.2",
1293
  "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
 
1402
  "node": ">=10"
1403
  }
1404
  },
1405
+ "node_modules/sonic-boom": {
1406
+ "version": "3.7.0",
1407
+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.7.0.tgz",
1408
+ "integrity": "sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==",
1409
+ "dependencies": {
1410
+ "atomic-sleep": "^1.0.0"
1411
+ }
1412
+ },
1413
+ "node_modules/split2": {
1414
+ "version": "4.2.0",
1415
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
1416
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
1417
+ "engines": {
1418
+ "node": ">= 10.x"
1419
+ }
1420
+ },
1421
  "node_modules/statuses": {
1422
  "version": "2.0.1",
1423
  "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
 
1426
  "node": ">= 0.8"
1427
  }
1428
  },
1429
+ "node_modules/string_decoder": {
1430
+ "version": "1.3.0",
1431
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
1432
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
1433
+ "dependencies": {
1434
+ "safe-buffer": "~5.2.0"
1435
+ }
1436
+ },
1437
  "node_modules/supports-color": {
1438
  "version": "5.5.0",
1439
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
 
1446
  "node": ">=4"
1447
  }
1448
  },
1449
+ "node_modules/thread-stream": {
1450
+ "version": "2.4.1",
1451
+ "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz",
1452
+ "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==",
1453
+ "dependencies": {
1454
+ "real-require": "^0.2.0"
1455
+ }
1456
+ },
1457
  "node_modules/to-regex-range": {
1458
  "version": "5.0.1",
1459
  "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
server/package.json CHANGED
@@ -23,6 +23,7 @@
23
  "dependencies": {
24
  "@types/ws": "^8.5.9",
25
  "express": "^4.18.2",
 
26
  "ws": "^8.14.2",
27
  "zod": "^3.22.4"
28
  }
 
23
  "dependencies": {
24
  "@types/ws": "^8.5.9",
25
  "express": "^4.18.2",
26
+ "pino": "^8.16.2",
27
  "ws": "^8.14.2",
28
  "zod": "^3.22.4"
29
  }
server/src/index.ts CHANGED
@@ -4,45 +4,65 @@ import * as WebSocket from "ws";
4
  import { HapticLinkServer } from "./socket/hapticLinkServer";
5
  import { registerRoutes } from "./socket/routes";
6
  import WebSocketWrapper from "./socket/WebSocketAdapter";
 
7
 
8
- const port: number = parseInt(process.env.PORT as string, 10) || 3000;
 
 
 
 
9
 
10
- const app: Application = express();
11
- const server = http.createServer(app);
12
- const wss = new WebSocket.Server({ server });
13
 
14
- app.get("/", (_req: Request, res: Response) => {
15
- res.send("Bonjour");
16
- });
17
-
18
- // Routes are in socket/routes/*.ts
19
- // registerRoutes imports and adds them all to router
20
- const hapticLink = new HapticLinkServer();
21
- registerRoutes(hapticLink);
 
 
22
 
23
- // When a user sends a message, the router checks if that route is available
24
- // and then calls the handler. It also generates a User object for them to store
25
- // data for later requests such as an ID
26
- wss.on("connection", (ws: WebSocket) => {
27
- console.log("Client Connected");
28
- const wsw = new WebSocketWrapper(ws);
29
 
30
- ws.on("message", (message: string) => {
31
- console.log(`Received Message: ${message}`);
32
- hapticLink.handleRoute(wsw, message);
33
  });
34
 
35
- // When a user disconnects, their account is removed, and they are removed from all groups
36
- ws.on("close", () => {
37
- hapticLink.removeUser(wsw);
38
- })
39
- ws.on("error", () => {
40
- hapticLink.removeUser(wsw);
41
- })
 
 
 
 
 
 
 
 
 
42
 
43
- ws.send("Welcome");
44
- });
 
 
 
 
 
45
 
46
- server.listen(port, () => {
47
- console.log(`Server is running on port ${port}`);
48
- });
 
 
 
 
 
4
  import { HapticLinkServer } from "./socket/hapticLinkServer";
5
  import { registerRoutes } from "./socket/routes";
6
  import WebSocketWrapper from "./socket/WebSocketAdapter";
7
+ import pino from "pino";
8
 
9
+ (() => {
10
+ const args = process.argv;
11
+ if (args.includes("--silent")) {
12
+ return main(false);
13
+ }
14
 
15
+ return main(true);
16
+ })();
 
17
 
18
+ function main(logging: boolean = true) {
19
+ const port: number = parseInt(process.env.PORT as string, 10) || 3000;
20
+ const logger = pino({
21
+ level: logging ? "info" : "silent",
22
+ formatters: {
23
+ bindings(bindings) {
24
+ return { level: bindings.level, time: bindings.time, msg: bindings.msg }
25
+ }
26
+ }
27
+ });
28
 
29
+ const app: Application = express();
30
+ const server = http.createServer(app);
31
+ const wss = new WebSocket.Server({ server });
 
 
 
32
 
33
+ app.get("/", (_req: Request, res: Response) => {
34
+ res.send("Bonjour");
 
35
  });
36
 
37
+ // Routes are in socket/routes/*.ts
38
+ // registerRoutes imports and adds them all to router
39
+ const hapticLink = new HapticLinkServer();
40
+ registerRoutes(hapticLink);
41
+
42
+ // When a user sends a message, the router checks if that route is available
43
+ // and then calls the handler. It also generates a User object for them to store
44
+ // data for later requests such as an ID
45
+ wss.on("connection", (ws: WebSocket) => {
46
+ logger.info("Client Connected")
47
+ const wsw = new WebSocketWrapper(ws);
48
+
49
+ ws.on("message", (message: string) => {
50
+ logger.info(`Received Message: ${message}`);
51
+ hapticLink.handleRoute(wsw, message);
52
+ });
53
 
54
+ // When a user disconnects, their account is removed, and they are removed from all groups
55
+ ws.on("close", () => {
56
+ hapticLink.removeUser(wsw);
57
+ })
58
+ ws.on("error", () => {
59
+ hapticLink.removeUser(wsw);
60
+ })
61
 
62
+ ws.send("Welcome");
63
+ });
64
+
65
+ server.listen(port, () => {
66
+ logger.info(`Server is running on port ${port}`);
67
+ });
68
+ }