@galeh/chuka 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/.github/workflows/webpack.yml +34 -0
  2. package/config/api-extractor.decorators.json +427 -0
  3. package/config/api-extractor.index.json +427 -0
  4. package/config/api-extractor.middlewares.json +427 -0
  5. package/config/api-extractor.validators.json +427 -0
  6. package/package.json +49 -40
  7. package/sample/01-cats-app/package-lock.json +283 -0
  8. package/sample/01-cats-app/package.json +19 -0
  9. package/sample/01-cats-app/src/cats/cat-model.ts +9 -0
  10. package/sample/01-cats-app/src/cats/cats-controller.ts +44 -0
  11. package/sample/01-cats-app/src/cats/cats-service-interface.ts +7 -0
  12. package/sample/01-cats-app/src/cats/cats-service.ts +27 -0
  13. package/sample/01-cats-app/src/cats/create-logger.ts +8 -0
  14. package/sample/01-cats-app/src/main.ts +30 -0
  15. package/sample/01-cats-app/tsconfig.json +112 -0
  16. package/sample/02-socket/package-lock.json +442 -0
  17. package/sample/02-socket/package.json +20 -0
  18. package/sample/02-socket/src/controllers/http-controller.ts +14 -0
  19. package/sample/02-socket/src/controllers/socket-controller.ts +18 -0
  20. package/sample/02-socket/src/main.ts +46 -0
  21. package/sample/02-socket/src/middleware/create-session.ts +9 -0
  22. package/sample/02-socket/tsconfig.json +112 -0
  23. package/sample/03-authentication/db/create.sql +6 -0
  24. package/sample/03-authentication/package-lock.json +1832 -0
  25. package/sample/03-authentication/package.json +23 -0
  26. package/sample/03-authentication/src/config.ts +21 -0
  27. package/sample/03-authentication/src/controllers/auth-controller.ts +54 -0
  28. package/sample/03-authentication/src/enums/injection-tokens.ts +5 -0
  29. package/sample/03-authentication/src/enums/result-codes.ts +4 -0
  30. package/sample/03-authentication/src/exceptions/error.ts +7 -0
  31. package/sample/03-authentication/src/exceptions/password-not-found-exception.ts +9 -0
  32. package/sample/03-authentication/src/exceptions/unauthorized-exception.ts +9 -0
  33. package/sample/03-authentication/src/exceptions/user-already-exist.ts +9 -0
  34. package/sample/03-authentication/src/exceptions/user-not-found.ts +9 -0
  35. package/sample/03-authentication/src/exceptions/wrong-login-info-exception.ts +8 -0
  36. package/sample/03-authentication/src/main.ts +42 -0
  37. package/sample/03-authentication/src/middlewares/auth-handler.ts +17 -0
  38. package/sample/03-authentication/src/middlewares/global-error-handler.ts +21 -0
  39. package/sample/03-authentication/src/models/user-model.ts +6 -0
  40. package/sample/03-authentication/src/services/auth-service.ts +50 -0
  41. package/sample/03-authentication/src/services/interfaces/auth-service-interface.ts +7 -0
  42. package/sample/03-authentication/src/services/interfaces/user-service-interface.ts +7 -0
  43. package/sample/03-authentication/src/services/user-service.ts +75 -0
  44. package/sample/03-authentication/src/types/connection.ts +3 -0
  45. package/sample/03-authentication/src/types/token.ts +3 -0
  46. package/sample/03-authentication/src/utils/crypto.ts +26 -0
  47. package/sample/03-authentication/tsconfig.json +112 -0
  48. package/scripts/build.bash +17 -0
  49. package/scripts/create-package-json.js +15 -0
  50. package/src/app.ts +197 -0
  51. package/src/controller.ts +204 -0
  52. package/src/decorators/index.ts +1 -0
  53. package/src/index.ts +3 -0
  54. package/src/middlewares/index.ts +1 -0
  55. package/src/validators/body-validator.ts +9 -0
  56. package/src/validators/index.ts +2 -0
  57. package/src/validators/query-validator.ts +9 -0
  58. package/src/validators/validators.ts +216 -0
  59. package/tsconfig.json +112 -0
  60. package/webpack.config.js +46 -0
  61. package/decorators.d.ts +0 -8
  62. package/decorators.js +0 -107
  63. package/index.d.ts +0 -202
  64. package/index.js +0 -167
  65. package/middlewares.d.ts +0 -20
  66. package/middlewares.js +0 -107
  67. package/validators.d.ts +0 -60
  68. package/validators.js +0 -105
@@ -0,0 +1,442 @@
1
+ {
2
+ "name": "02-socket",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "02-socket",
9
+ "version": "1.0.0",
10
+ "license": "ISC",
11
+ "dependencies": {
12
+ "@galeh/chuka": "../../dist/chuka",
13
+ "@types/express-session": "^1.17.10",
14
+ "express-session": "^1.17.3"
15
+ },
16
+ "devDependencies": {
17
+ "ts-node": "^10.9.2"
18
+ }
19
+ },
20
+ "../../dist": {
21
+ "version": "1.0.0",
22
+ "license": "MIT",
23
+ "dependencies": {
24
+ "express": "^4.18.2",
25
+ "express-ws": "^5.0.2",
26
+ "i": "^0.3.7",
27
+ "inversify": "^6.0.2",
28
+ "npm": "^10.2.5",
29
+ "reflect-metadata": "^0.2.1",
30
+ "tslib": "^2.6.2"
31
+ }
32
+ },
33
+ "../../dist/chuka": {
34
+ "name": "@galeh/chuka",
35
+ "version": "1.0.12",
36
+ "license": "MIT",
37
+ "dependencies": {
38
+ "@types/express": "^4.17.21",
39
+ "@types/express-ws": "^3.0.4",
40
+ "@types/ws": "^8.5.10",
41
+ "express": "^4.18.2",
42
+ "express-ws": "^5.0.2",
43
+ "inversify": "^6.0.2",
44
+ "reflect-metadata": "^0.2.1",
45
+ "tslib": "^2.6.2"
46
+ },
47
+ "engines": {
48
+ "node": ">= 12.7"
49
+ }
50
+ },
51
+ "node_modules/@cspotcode/source-map-support": {
52
+ "version": "0.8.1",
53
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
54
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
55
+ "dev": true,
56
+ "dependencies": {
57
+ "@jridgewell/trace-mapping": "0.3.9"
58
+ },
59
+ "engines": {
60
+ "node": ">=12"
61
+ }
62
+ },
63
+ "node_modules/@galeh/chuka": {
64
+ "resolved": "../../dist/chuka",
65
+ "link": true
66
+ },
67
+ "node_modules/@jridgewell/resolve-uri": {
68
+ "version": "3.1.1",
69
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
70
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
71
+ "dev": true,
72
+ "engines": {
73
+ "node": ">=6.0.0"
74
+ }
75
+ },
76
+ "node_modules/@jridgewell/sourcemap-codec": {
77
+ "version": "1.4.15",
78
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
79
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
80
+ "dev": true
81
+ },
82
+ "node_modules/@jridgewell/trace-mapping": {
83
+ "version": "0.3.9",
84
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
85
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
86
+ "dev": true,
87
+ "dependencies": {
88
+ "@jridgewell/resolve-uri": "^3.0.3",
89
+ "@jridgewell/sourcemap-codec": "^1.4.10"
90
+ }
91
+ },
92
+ "node_modules/@tsconfig/node10": {
93
+ "version": "1.0.9",
94
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
95
+ "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
96
+ "dev": true
97
+ },
98
+ "node_modules/@tsconfig/node12": {
99
+ "version": "1.0.11",
100
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
101
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
102
+ "dev": true
103
+ },
104
+ "node_modules/@tsconfig/node14": {
105
+ "version": "1.0.3",
106
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
107
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
108
+ "dev": true
109
+ },
110
+ "node_modules/@tsconfig/node16": {
111
+ "version": "1.0.4",
112
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
113
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
114
+ "dev": true
115
+ },
116
+ "node_modules/@types/body-parser": {
117
+ "version": "1.19.5",
118
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
119
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
120
+ "dependencies": {
121
+ "@types/connect": "*",
122
+ "@types/node": "*"
123
+ }
124
+ },
125
+ "node_modules/@types/connect": {
126
+ "version": "3.4.38",
127
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
128
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
129
+ "dependencies": {
130
+ "@types/node": "*"
131
+ }
132
+ },
133
+ "node_modules/@types/express": {
134
+ "version": "4.17.21",
135
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
136
+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
137
+ "dependencies": {
138
+ "@types/body-parser": "*",
139
+ "@types/express-serve-static-core": "^4.17.33",
140
+ "@types/qs": "*",
141
+ "@types/serve-static": "*"
142
+ }
143
+ },
144
+ "node_modules/@types/express-serve-static-core": {
145
+ "version": "4.17.41",
146
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz",
147
+ "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==",
148
+ "dependencies": {
149
+ "@types/node": "*",
150
+ "@types/qs": "*",
151
+ "@types/range-parser": "*",
152
+ "@types/send": "*"
153
+ }
154
+ },
155
+ "node_modules/@types/express-session": {
156
+ "version": "1.17.10",
157
+ "resolved": "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.10.tgz",
158
+ "integrity": "sha512-U32bC/s0ejXijw5MAzyaV4tuZopCh/K7fPoUDyNbsRXHvPSeymygYD1RFL99YOLhF5PNOkzswvOTRaVHdL1zMw==",
159
+ "dependencies": {
160
+ "@types/express": "*"
161
+ }
162
+ },
163
+ "node_modules/@types/http-errors": {
164
+ "version": "2.0.4",
165
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
166
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA=="
167
+ },
168
+ "node_modules/@types/mime": {
169
+ "version": "1.3.5",
170
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
171
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="
172
+ },
173
+ "node_modules/@types/node": {
174
+ "version": "20.10.6",
175
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz",
176
+ "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==",
177
+ "dependencies": {
178
+ "undici-types": "~5.26.4"
179
+ }
180
+ },
181
+ "node_modules/@types/qs": {
182
+ "version": "6.9.11",
183
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz",
184
+ "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ=="
185
+ },
186
+ "node_modules/@types/range-parser": {
187
+ "version": "1.2.7",
188
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
189
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="
190
+ },
191
+ "node_modules/@types/send": {
192
+ "version": "0.17.4",
193
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
194
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
195
+ "dependencies": {
196
+ "@types/mime": "^1",
197
+ "@types/node": "*"
198
+ }
199
+ },
200
+ "node_modules/@types/serve-static": {
201
+ "version": "1.15.5",
202
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz",
203
+ "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==",
204
+ "dependencies": {
205
+ "@types/http-errors": "*",
206
+ "@types/mime": "*",
207
+ "@types/node": "*"
208
+ }
209
+ },
210
+ "node_modules/acorn": {
211
+ "version": "8.11.3",
212
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
213
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
214
+ "dev": true,
215
+ "bin": {
216
+ "acorn": "bin/acorn"
217
+ },
218
+ "engines": {
219
+ "node": ">=0.4.0"
220
+ }
221
+ },
222
+ "node_modules/acorn-walk": {
223
+ "version": "8.3.1",
224
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz",
225
+ "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==",
226
+ "dev": true,
227
+ "engines": {
228
+ "node": ">=0.4.0"
229
+ }
230
+ },
231
+ "node_modules/arg": {
232
+ "version": "4.1.3",
233
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
234
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
235
+ "dev": true
236
+ },
237
+ "node_modules/cookie": {
238
+ "version": "0.4.2",
239
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
240
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
241
+ "engines": {
242
+ "node": ">= 0.6"
243
+ }
244
+ },
245
+ "node_modules/cookie-signature": {
246
+ "version": "1.0.6",
247
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
248
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
249
+ },
250
+ "node_modules/create-require": {
251
+ "version": "1.1.1",
252
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
253
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
254
+ "dev": true
255
+ },
256
+ "node_modules/debug": {
257
+ "version": "2.6.9",
258
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
259
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
260
+ "dependencies": {
261
+ "ms": "2.0.0"
262
+ }
263
+ },
264
+ "node_modules/depd": {
265
+ "version": "2.0.0",
266
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
267
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
268
+ "engines": {
269
+ "node": ">= 0.8"
270
+ }
271
+ },
272
+ "node_modules/diff": {
273
+ "version": "4.0.2",
274
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
275
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
276
+ "dev": true,
277
+ "engines": {
278
+ "node": ">=0.3.1"
279
+ }
280
+ },
281
+ "node_modules/express-session": {
282
+ "version": "1.17.3",
283
+ "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz",
284
+ "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==",
285
+ "dependencies": {
286
+ "cookie": "0.4.2",
287
+ "cookie-signature": "1.0.6",
288
+ "debug": "2.6.9",
289
+ "depd": "~2.0.0",
290
+ "on-headers": "~1.0.2",
291
+ "parseurl": "~1.3.3",
292
+ "safe-buffer": "5.2.1",
293
+ "uid-safe": "~2.1.5"
294
+ },
295
+ "engines": {
296
+ "node": ">= 0.8.0"
297
+ }
298
+ },
299
+ "node_modules/make-error": {
300
+ "version": "1.3.6",
301
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
302
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
303
+ "dev": true
304
+ },
305
+ "node_modules/ms": {
306
+ "version": "2.0.0",
307
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
308
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
309
+ },
310
+ "node_modules/on-headers": {
311
+ "version": "1.0.2",
312
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
313
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
314
+ "engines": {
315
+ "node": ">= 0.8"
316
+ }
317
+ },
318
+ "node_modules/parseurl": {
319
+ "version": "1.3.3",
320
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
321
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
322
+ "engines": {
323
+ "node": ">= 0.8"
324
+ }
325
+ },
326
+ "node_modules/random-bytes": {
327
+ "version": "1.0.0",
328
+ "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
329
+ "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==",
330
+ "engines": {
331
+ "node": ">= 0.8"
332
+ }
333
+ },
334
+ "node_modules/safe-buffer": {
335
+ "version": "5.2.1",
336
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
337
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
338
+ "funding": [
339
+ {
340
+ "type": "github",
341
+ "url": "https://github.com/sponsors/feross"
342
+ },
343
+ {
344
+ "type": "patreon",
345
+ "url": "https://www.patreon.com/feross"
346
+ },
347
+ {
348
+ "type": "consulting",
349
+ "url": "https://feross.org/support"
350
+ }
351
+ ]
352
+ },
353
+ "node_modules/ts-node": {
354
+ "version": "10.9.2",
355
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
356
+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
357
+ "dev": true,
358
+ "dependencies": {
359
+ "@cspotcode/source-map-support": "^0.8.0",
360
+ "@tsconfig/node10": "^1.0.7",
361
+ "@tsconfig/node12": "^1.0.7",
362
+ "@tsconfig/node14": "^1.0.0",
363
+ "@tsconfig/node16": "^1.0.2",
364
+ "acorn": "^8.4.1",
365
+ "acorn-walk": "^8.1.1",
366
+ "arg": "^4.1.0",
367
+ "create-require": "^1.1.0",
368
+ "diff": "^4.0.1",
369
+ "make-error": "^1.1.1",
370
+ "v8-compile-cache-lib": "^3.0.1",
371
+ "yn": "3.1.1"
372
+ },
373
+ "bin": {
374
+ "ts-node": "dist/bin.js",
375
+ "ts-node-cwd": "dist/bin-cwd.js",
376
+ "ts-node-esm": "dist/bin-esm.js",
377
+ "ts-node-script": "dist/bin-script.js",
378
+ "ts-node-transpile-only": "dist/bin-transpile.js",
379
+ "ts-script": "dist/bin-script-deprecated.js"
380
+ },
381
+ "peerDependencies": {
382
+ "@swc/core": ">=1.2.50",
383
+ "@swc/wasm": ">=1.2.50",
384
+ "@types/node": "*",
385
+ "typescript": ">=2.7"
386
+ },
387
+ "peerDependenciesMeta": {
388
+ "@swc/core": {
389
+ "optional": true
390
+ },
391
+ "@swc/wasm": {
392
+ "optional": true
393
+ }
394
+ }
395
+ },
396
+ "node_modules/typescript": {
397
+ "version": "5.3.3",
398
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
399
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
400
+ "dev": true,
401
+ "peer": true,
402
+ "bin": {
403
+ "tsc": "bin/tsc",
404
+ "tsserver": "bin/tsserver"
405
+ },
406
+ "engines": {
407
+ "node": ">=14.17"
408
+ }
409
+ },
410
+ "node_modules/uid-safe": {
411
+ "version": "2.1.5",
412
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
413
+ "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
414
+ "dependencies": {
415
+ "random-bytes": "~1.0.0"
416
+ },
417
+ "engines": {
418
+ "node": ">= 0.8"
419
+ }
420
+ },
421
+ "node_modules/undici-types": {
422
+ "version": "5.26.5",
423
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
424
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
425
+ },
426
+ "node_modules/v8-compile-cache-lib": {
427
+ "version": "3.0.1",
428
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
429
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
430
+ "dev": true
431
+ },
432
+ "node_modules/yn": {
433
+ "version": "3.1.1",
434
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
435
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
436
+ "dev": true,
437
+ "engines": {
438
+ "node": ">=6"
439
+ }
440
+ }
441
+ }
442
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "02-socket",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "start": "ts-node --project ./tsconfig.json ./src/main.ts"
8
+ },
9
+ "keywords": [],
10
+ "author": "",
11
+ "license": "ISC",
12
+ "dependencies": {
13
+ "@types/express-session": "^1.17.10",
14
+ "express-session": "^1.17.3",
15
+ "@galeh/chuka": "../../dist/chuka"
16
+ },
17
+ "devDependencies": {
18
+ "ts-node": "^10.9.2"
19
+ }
20
+ }
@@ -0,0 +1,14 @@
1
+ import { Controller } from '@galeh/chuka';
2
+
3
+ export class HttpController extends Controller {
4
+ intercepted = this.use();
5
+
6
+ getRefreshCount = this.intercepted.get('/', (req, res) => {
7
+ if (!req.session?.count) {
8
+ req.session.count = 1;
9
+ } else {
10
+ req.session.count++;
11
+ }
12
+ res.send(`session value is: ${req.session.count}. sessionId: ${req.session.id}`);
13
+ });
14
+ }
@@ -0,0 +1,18 @@
1
+ import { Controller } from '@galeh/chuka';
2
+
3
+ export class SocketController extends Controller {
4
+ wsHandler = this.useWS(
5
+ (ws, req, next) => {
6
+ console.log({middlewareSessionId: req.session.id});
7
+ console.log({count: req.session.count});
8
+ next();
9
+ }
10
+ )((ws, req) => {
11
+ ws.on('message', (m) => {
12
+ console.log(`message: ${m}`);
13
+ const session = req.session.reload(() => {
14
+ console.log(`session.count: ${session.count}`);
15
+ });
16
+ });
17
+ });
18
+ }
@@ -0,0 +1,46 @@
1
+ import { createApp } from '@galeh/chuka';
2
+ import { HttpController } from './controllers/http-controller';
3
+ import { SocketController } from './controllers/socket-controller';
4
+ import { createSession } from './middleware/create-session';
5
+ import { MemoryStore } from 'express-session';
6
+
7
+ declare global {
8
+ namespace Express {
9
+ interface Request {
10
+ }
11
+ }
12
+ }
13
+
14
+ declare module 'express-session' {
15
+ interface SessionData {
16
+ count: number;
17
+ }
18
+ }
19
+ const sessionStore = new MemoryStore();
20
+
21
+
22
+ const app = createApp({
23
+ routes: [
24
+ {
25
+ path: '/http',
26
+ controller: HttpController
27
+ },
28
+ {
29
+ path: '/socket',
30
+ controller: SocketController
31
+ }
32
+ ],
33
+ middlewares: [
34
+ createSession<{ count: number }>({
35
+ secret: 'keyboard cat',
36
+ resave: false,
37
+ saveUninitialized: true,
38
+ cookie: { secure: false },
39
+ store: sessionStore
40
+ })
41
+ ]
42
+ });
43
+
44
+ app.listen(8080, () => {
45
+ console.log('app is running!');
46
+ });
@@ -0,0 +1,9 @@
1
+ import session from 'express-session';
2
+ import { Middleware } from '@galeh/chuka';
3
+
4
+ export function createSession<T>(options?: session.SessionOptions): Middleware<{ session: T }> {
5
+ const sessiongenerator = session(options);
6
+ return (req, res, next) => {
7
+ sessiongenerator(req as any, res, next);
8
+ }
9
+ }