@mashka818/exam-de-template 1.0.0

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 (131) hide show
  1. package/exam-guides/COMMENTS_GUIDE.md +53 -0
  2. package/exam-guides/EXAM_COMMANDS.txt +47 -0
  3. package/exam-guides/GUIDE_PAGES.md +529 -0
  4. package/exam-guides/NPM_PACKAGE.md +206 -0
  5. package/exam-guides/README.md +40 -0
  6. package/exam-guides/RESPONSIVE.md +224 -0
  7. package/exam-guides/TECH_STACK.txt +142 -0
  8. package/exam-guides/THEME_BANQUETAM_NET.md +106 -0
  9. package/exam-guides/commented-code/README.txt +5 -0
  10. package/exam-guides/commented-code/client/index.html +14 -0
  11. package/exam-guides/commented-code/client/package-lock.json +2298 -0
  12. package/exam-guides/commented-code/client/package.json +21 -0
  13. package/exam-guides/commented-code/client/public/images/README.txt +26 -0
  14. package/exam-guides/commented-code/client/public/images/about-cleaning.svg +4 -0
  15. package/exam-guides/commented-code/client/public/images/admin-banner.svg +1 -0
  16. package/exam-guides/commented-code/client/public/images/empty-requests.svg +1 -0
  17. package/exam-guides/commented-code/client/public/images/footer-photo-1.svg +4 -0
  18. package/exam-guides/commented-code/client/public/images/footer-photo-2.svg +4 -0
  19. package/exam-guides/commented-code/client/public/images/footer-photo-3.svg +4 -0
  20. package/exam-guides/commented-code/client/public/images/home-hero.svg +4 -0
  21. package/exam-guides/commented-code/client/public/images/login-banner.svg +1 -0
  22. package/exam-guides/commented-code/client/public/images/logo.svg +4 -0
  23. package/exam-guides/commented-code/client/public/images/new-request-banner.svg +1 -0
  24. package/exam-guides/commented-code/client/public/images/register-banner.svg +1 -0
  25. package/exam-guides/commented-code/client/public/images/requests-banner.svg +1 -0
  26. package/exam-guides/commented-code/client/public/images/slide-1.svg +6 -0
  27. package/exam-guides/commented-code/client/public/images/slide-2.svg +5 -0
  28. package/exam-guides/commented-code/client/public/images/slide-3.svg +5 -0
  29. package/exam-guides/commented-code/client/src/App.jsx +72 -0
  30. package/exam-guides/commented-code/client/src/api.js +71 -0
  31. package/exam-guides/commented-code/client/src/components/FormField.jsx +25 -0
  32. package/exam-guides/commented-code/client/src/components/Layout.jsx +83 -0
  33. package/exam-guides/commented-code/client/src/components/PageImage.jsx +38 -0
  34. package/exam-guides/commented-code/client/src/components/ProtectedRoute.jsx +35 -0
  35. package/exam-guides/commented-code/client/src/components/UserNav.jsx +33 -0
  36. package/exam-guides/commented-code/client/src/components/landing/HeroSlider.jsx +103 -0
  37. package/exam-guides/commented-code/client/src/components/landing/LandingLayout.jsx +76 -0
  38. package/exam-guides/commented-code/client/src/components/landing/SiteFooter.jsx +74 -0
  39. package/exam-guides/commented-code/client/src/config/images.js +104 -0
  40. package/exam-guides/commented-code/client/src/constants/services.js +19 -0
  41. package/exam-guides/commented-code/client/src/context/AuthContext.jsx +72 -0
  42. package/exam-guides/commented-code/client/src/index.css +73 -0
  43. package/exam-guides/commented-code/client/src/main.jsx +28 -0
  44. package/exam-guides/commented-code/client/src/pages/AdminPage.jsx +151 -0
  45. package/exam-guides/commented-code/client/src/pages/LandingPage.jsx +131 -0
  46. package/exam-guides/commented-code/client/src/pages/LoginPage.jsx +81 -0
  47. package/exam-guides/commented-code/client/src/pages/RegisterPage.jsx +117 -0
  48. package/exam-guides/commented-code/client/src/pages/RequestFormPage.jsx +196 -0
  49. package/exam-guides/commented-code/client/src/pages/RequestsPage.jsx +112 -0
  50. package/exam-guides/commented-code/client/src/utils/validation.js +71 -0
  51. package/exam-guides/commented-code/client/vite.config.js +31 -0
  52. package/exam-guides/commented-code/server/db/init.js +67 -0
  53. package/exam-guides/commented-code/server/db/pool.js +23 -0
  54. package/exam-guides/commented-code/server/db/schema.sql +53 -0
  55. package/exam-guides/commented-code/server/db/seed.sql +15 -0
  56. package/exam-guides/commented-code/server/index.js +45 -0
  57. package/exam-guides/commented-code/server/middleware/auth.js +38 -0
  58. package/exam-guides/commented-code/server/package-lock.json +1084 -0
  59. package/exam-guides/commented-code/server/package.json +17 -0
  60. package/exam-guides/commented-code/server/routes/admin.js +96 -0
  61. package/exam-guides/commented-code/server/routes/auth.js +128 -0
  62. package/exam-guides/commented-code/server/routes/requests.js +115 -0
  63. package/exam-guides/commented-code/server/routes/services.js +31 -0
  64. package/exam-guides/commented-code/server/utils/validation.js +81 -0
  65. package/exam-guides/exam-starter/README.txt +22 -0
  66. package/exam-guides/exam-starter/package.json +13 -0
  67. package/exam-guides//320/243/320/224/320/220/320/233/320/230/320/242/320/254-/320/237/320/225/320/240/320/225/320/224-/320/241/320/224/320/220/320/247/320/225/320/231.txt +9 -0
  68. package/exam-project/README.md +16 -0
  69. package/exam-project/client/index.html +14 -0
  70. package/exam-project/client/package-lock.json +2298 -0
  71. package/exam-project/client/package.json +21 -0
  72. package/exam-project/client/public/images/README.txt +26 -0
  73. package/exam-project/client/public/images/about-cleaning.svg +4 -0
  74. package/exam-project/client/public/images/admin-banner.svg +1 -0
  75. package/exam-project/client/public/images/empty-requests.svg +1 -0
  76. package/exam-project/client/public/images/footer-photo-1.svg +4 -0
  77. package/exam-project/client/public/images/footer-photo-2.svg +4 -0
  78. package/exam-project/client/public/images/footer-photo-3.svg +4 -0
  79. package/exam-project/client/public/images/home-hero.svg +4 -0
  80. package/exam-project/client/public/images/login-banner.svg +1 -0
  81. package/exam-project/client/public/images/logo.svg +4 -0
  82. package/exam-project/client/public/images/new-request-banner.svg +1 -0
  83. package/exam-project/client/public/images/register-banner.svg +1 -0
  84. package/exam-project/client/public/images/requests-banner.svg +1 -0
  85. package/exam-project/client/public/images/slide-1.svg +6 -0
  86. package/exam-project/client/public/images/slide-2.svg +5 -0
  87. package/exam-project/client/public/images/slide-3.svg +5 -0
  88. package/exam-project/client/src/App.jsx +52 -0
  89. package/exam-project/client/src/api.js +50 -0
  90. package/exam-project/client/src/components/FormField.jsx +11 -0
  91. package/exam-project/client/src/components/Layout.jsx +61 -0
  92. package/exam-project/client/src/components/PageImage.jsx +22 -0
  93. package/exam-project/client/src/components/ProtectedRoute.jsx +20 -0
  94. package/exam-project/client/src/components/UserNav.jsx +20 -0
  95. package/exam-project/client/src/components/landing/HeroSlider.jsx +89 -0
  96. package/exam-project/client/src/components/landing/LandingLayout.jsx +61 -0
  97. package/exam-project/client/src/components/landing/SiteFooter.jsx +61 -0
  98. package/exam-project/client/src/config/images.js +83 -0
  99. package/exam-project/client/src/constants/services.js +7 -0
  100. package/exam-project/client/src/context/AuthContext.jsx +55 -0
  101. package/exam-project/client/src/index.css +54 -0
  102. package/exam-project/client/src/main.jsx +17 -0
  103. package/exam-project/client/src/pages/AdminPage.jsx +128 -0
  104. package/exam-project/client/src/pages/LandingPage.jsx +115 -0
  105. package/exam-project/client/src/pages/LoginPage.jsx +63 -0
  106. package/exam-project/client/src/pages/RegisterPage.jsx +97 -0
  107. package/exam-project/client/src/pages/RequestFormPage.jsx +178 -0
  108. package/exam-project/client/src/pages/RequestsPage.jsx +94 -0
  109. package/exam-project/client/src/utils/validation.js +54 -0
  110. package/exam-project/client/vite.config.js +17 -0
  111. package/exam-project/package.json +18 -0
  112. package/exam-project/scripts/init-project.js +86 -0
  113. package/exam-project/scripts/prepack.js +27 -0
  114. package/exam-project/scripts/unpack-template.js +105 -0
  115. package/exam-project/server/db/init.js +50 -0
  116. package/exam-project/server/db/pool.js +11 -0
  117. package/exam-project/server/db/schema.sql +41 -0
  118. package/exam-project/server/db/seed.sql +12 -0
  119. package/exam-project/server/index.js +29 -0
  120. package/exam-project/server/middleware/auth.js +24 -0
  121. package/exam-project/server/package-lock.json +1084 -0
  122. package/exam-project/server/package.json +17 -0
  123. package/exam-project/server/routes/admin.js +76 -0
  124. package/exam-project/server/routes/auth.js +109 -0
  125. package/exam-project/server/routes/requests.js +99 -0
  126. package/exam-project/server/routes/services.js +18 -0
  127. package/exam-project/server/utils/validation.js +63 -0
  128. package/package.json +25 -0
  129. package/scripts/init-project.js +86 -0
  130. package/scripts/prepack.js +27 -0
  131. package/scripts/unpack-template.js +105 -0
@@ -0,0 +1,1084 @@
1
+ {
2
+ "name": "exam-template-server",
3
+ "lockfileVersion": 3,
4
+ "requires": true,
5
+ "packages": {
6
+ "": {
7
+ "name": "exam-template-server",
8
+ "dependencies": {
9
+ "bcryptjs": "^3.0.2",
10
+ "cors": "^2.8.5",
11
+ "dotenv": "^16.5.0",
12
+ "exam-template-moy-ne-sam": "file:..",
13
+ "express": "^5.1.0",
14
+ "jsonwebtoken": "^9.0.2",
15
+ "pg": "^8.16.0"
16
+ }
17
+ },
18
+ "..": {
19
+ "name": "exam-template-moy-ne-sam",
20
+ "devDependencies": {
21
+ "concurrently": "^9.1.2"
22
+ }
23
+ },
24
+ "node_modules/accepts": {
25
+ "version": "2.0.0",
26
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
27
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
28
+ "dependencies": {
29
+ "mime-types": "^3.0.0",
30
+ "negotiator": "^1.0.0"
31
+ },
32
+ "engines": {
33
+ "node": ">= 0.6"
34
+ }
35
+ },
36
+ "node_modules/bcryptjs": {
37
+ "version": "3.0.3",
38
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.3.tgz",
39
+ "integrity": "sha512-GlF5wPWnSa/X5LKM1o0wz0suXIINz1iHRLvTS+sLyi7XPbe5ycmYI3DlZqVGZZtDgl4DmasFg7gOB3JYbphV5g==",
40
+ "bin": {
41
+ "bcrypt": "bin/bcrypt"
42
+ }
43
+ },
44
+ "node_modules/body-parser": {
45
+ "version": "2.2.2",
46
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz",
47
+ "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==",
48
+ "dependencies": {
49
+ "bytes": "^3.1.2",
50
+ "content-type": "^1.0.5",
51
+ "debug": "^4.4.3",
52
+ "http-errors": "^2.0.0",
53
+ "iconv-lite": "^0.7.0",
54
+ "on-finished": "^2.4.1",
55
+ "qs": "^6.14.1",
56
+ "raw-body": "^3.0.1",
57
+ "type-is": "^2.0.1"
58
+ },
59
+ "engines": {
60
+ "node": ">=18"
61
+ },
62
+ "funding": {
63
+ "type": "opencollective",
64
+ "url": "https://opencollective.com/express"
65
+ }
66
+ },
67
+ "node_modules/buffer-equal-constant-time": {
68
+ "version": "1.0.1",
69
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
70
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
71
+ },
72
+ "node_modules/bytes": {
73
+ "version": "3.1.2",
74
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
75
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
76
+ "engines": {
77
+ "node": ">= 0.8"
78
+ }
79
+ },
80
+ "node_modules/call-bind-apply-helpers": {
81
+ "version": "1.0.2",
82
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
83
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
84
+ "dependencies": {
85
+ "es-errors": "^1.3.0",
86
+ "function-bind": "^1.1.2"
87
+ },
88
+ "engines": {
89
+ "node": ">= 0.4"
90
+ }
91
+ },
92
+ "node_modules/call-bound": {
93
+ "version": "1.0.4",
94
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
95
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
96
+ "dependencies": {
97
+ "call-bind-apply-helpers": "^1.0.2",
98
+ "get-intrinsic": "^1.3.0"
99
+ },
100
+ "engines": {
101
+ "node": ">= 0.4"
102
+ },
103
+ "funding": {
104
+ "url": "https://github.com/sponsors/ljharb"
105
+ }
106
+ },
107
+ "node_modules/content-disposition": {
108
+ "version": "1.1.0",
109
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz",
110
+ "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
111
+ "engines": {
112
+ "node": ">=18"
113
+ },
114
+ "funding": {
115
+ "type": "opencollective",
116
+ "url": "https://opencollective.com/express"
117
+ }
118
+ },
119
+ "node_modules/content-type": {
120
+ "version": "1.0.5",
121
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
122
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
123
+ "engines": {
124
+ "node": ">= 0.6"
125
+ }
126
+ },
127
+ "node_modules/cookie": {
128
+ "version": "0.7.2",
129
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
130
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
131
+ "engines": {
132
+ "node": ">= 0.6"
133
+ }
134
+ },
135
+ "node_modules/cookie-signature": {
136
+ "version": "1.2.2",
137
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
138
+ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
139
+ "engines": {
140
+ "node": ">=6.6.0"
141
+ }
142
+ },
143
+ "node_modules/cors": {
144
+ "version": "2.8.6",
145
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz",
146
+ "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
147
+ "dependencies": {
148
+ "object-assign": "^4",
149
+ "vary": "^1"
150
+ },
151
+ "engines": {
152
+ "node": ">= 0.10"
153
+ },
154
+ "funding": {
155
+ "type": "opencollective",
156
+ "url": "https://opencollective.com/express"
157
+ }
158
+ },
159
+ "node_modules/debug": {
160
+ "version": "4.4.3",
161
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
162
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
163
+ "dependencies": {
164
+ "ms": "^2.1.3"
165
+ },
166
+ "engines": {
167
+ "node": ">=6.0"
168
+ },
169
+ "peerDependenciesMeta": {
170
+ "supports-color": {
171
+ "optional": true
172
+ }
173
+ }
174
+ },
175
+ "node_modules/depd": {
176
+ "version": "2.0.0",
177
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
178
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
179
+ "engines": {
180
+ "node": ">= 0.8"
181
+ }
182
+ },
183
+ "node_modules/dotenv": {
184
+ "version": "16.6.1",
185
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
186
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
187
+ "engines": {
188
+ "node": ">=12"
189
+ },
190
+ "funding": {
191
+ "url": "https://dotenvx.com"
192
+ }
193
+ },
194
+ "node_modules/dunder-proto": {
195
+ "version": "1.0.1",
196
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
197
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
198
+ "dependencies": {
199
+ "call-bind-apply-helpers": "^1.0.1",
200
+ "es-errors": "^1.3.0",
201
+ "gopd": "^1.2.0"
202
+ },
203
+ "engines": {
204
+ "node": ">= 0.4"
205
+ }
206
+ },
207
+ "node_modules/ecdsa-sig-formatter": {
208
+ "version": "1.0.11",
209
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
210
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
211
+ "dependencies": {
212
+ "safe-buffer": "^5.0.1"
213
+ }
214
+ },
215
+ "node_modules/ee-first": {
216
+ "version": "1.1.1",
217
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
218
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
219
+ },
220
+ "node_modules/encodeurl": {
221
+ "version": "2.0.0",
222
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
223
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
224
+ "engines": {
225
+ "node": ">= 0.8"
226
+ }
227
+ },
228
+ "node_modules/es-define-property": {
229
+ "version": "1.0.1",
230
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
231
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
232
+ "engines": {
233
+ "node": ">= 0.4"
234
+ }
235
+ },
236
+ "node_modules/es-errors": {
237
+ "version": "1.3.0",
238
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
239
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
240
+ "engines": {
241
+ "node": ">= 0.4"
242
+ }
243
+ },
244
+ "node_modules/es-object-atoms": {
245
+ "version": "1.1.1",
246
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
247
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
248
+ "dependencies": {
249
+ "es-errors": "^1.3.0"
250
+ },
251
+ "engines": {
252
+ "node": ">= 0.4"
253
+ }
254
+ },
255
+ "node_modules/escape-html": {
256
+ "version": "1.0.3",
257
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
258
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
259
+ },
260
+ "node_modules/etag": {
261
+ "version": "1.8.1",
262
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
263
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
264
+ "engines": {
265
+ "node": ">= 0.6"
266
+ }
267
+ },
268
+ "node_modules/exam-template-moy-ne-sam": {
269
+ "resolved": "..",
270
+ "link": true
271
+ },
272
+ "node_modules/express": {
273
+ "version": "5.2.1",
274
+ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
275
+ "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
276
+ "dependencies": {
277
+ "accepts": "^2.0.0",
278
+ "body-parser": "^2.2.1",
279
+ "content-disposition": "^1.0.0",
280
+ "content-type": "^1.0.5",
281
+ "cookie": "^0.7.1",
282
+ "cookie-signature": "^1.2.1",
283
+ "debug": "^4.4.0",
284
+ "depd": "^2.0.0",
285
+ "encodeurl": "^2.0.0",
286
+ "escape-html": "^1.0.3",
287
+ "etag": "^1.8.1",
288
+ "finalhandler": "^2.1.0",
289
+ "fresh": "^2.0.0",
290
+ "http-errors": "^2.0.0",
291
+ "merge-descriptors": "^2.0.0",
292
+ "mime-types": "^3.0.0",
293
+ "on-finished": "^2.4.1",
294
+ "once": "^1.4.0",
295
+ "parseurl": "^1.3.3",
296
+ "proxy-addr": "^2.0.7",
297
+ "qs": "^6.14.0",
298
+ "range-parser": "^1.2.1",
299
+ "router": "^2.2.0",
300
+ "send": "^1.1.0",
301
+ "serve-static": "^2.2.0",
302
+ "statuses": "^2.0.1",
303
+ "type-is": "^2.0.1",
304
+ "vary": "^1.1.2"
305
+ },
306
+ "engines": {
307
+ "node": ">= 18"
308
+ },
309
+ "funding": {
310
+ "type": "opencollective",
311
+ "url": "https://opencollective.com/express"
312
+ }
313
+ },
314
+ "node_modules/finalhandler": {
315
+ "version": "2.1.1",
316
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
317
+ "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
318
+ "dependencies": {
319
+ "debug": "^4.4.0",
320
+ "encodeurl": "^2.0.0",
321
+ "escape-html": "^1.0.3",
322
+ "on-finished": "^2.4.1",
323
+ "parseurl": "^1.3.3",
324
+ "statuses": "^2.0.1"
325
+ },
326
+ "engines": {
327
+ "node": ">= 18.0.0"
328
+ },
329
+ "funding": {
330
+ "type": "opencollective",
331
+ "url": "https://opencollective.com/express"
332
+ }
333
+ },
334
+ "node_modules/forwarded": {
335
+ "version": "0.2.0",
336
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
337
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
338
+ "engines": {
339
+ "node": ">= 0.6"
340
+ }
341
+ },
342
+ "node_modules/fresh": {
343
+ "version": "2.0.0",
344
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
345
+ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
346
+ "engines": {
347
+ "node": ">= 0.8"
348
+ }
349
+ },
350
+ "node_modules/function-bind": {
351
+ "version": "1.1.2",
352
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
353
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
354
+ "funding": {
355
+ "url": "https://github.com/sponsors/ljharb"
356
+ }
357
+ },
358
+ "node_modules/get-intrinsic": {
359
+ "version": "1.3.0",
360
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
361
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
362
+ "dependencies": {
363
+ "call-bind-apply-helpers": "^1.0.2",
364
+ "es-define-property": "^1.0.1",
365
+ "es-errors": "^1.3.0",
366
+ "es-object-atoms": "^1.1.1",
367
+ "function-bind": "^1.1.2",
368
+ "get-proto": "^1.0.1",
369
+ "gopd": "^1.2.0",
370
+ "has-symbols": "^1.1.0",
371
+ "hasown": "^2.0.2",
372
+ "math-intrinsics": "^1.1.0"
373
+ },
374
+ "engines": {
375
+ "node": ">= 0.4"
376
+ },
377
+ "funding": {
378
+ "url": "https://github.com/sponsors/ljharb"
379
+ }
380
+ },
381
+ "node_modules/get-proto": {
382
+ "version": "1.0.1",
383
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
384
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
385
+ "dependencies": {
386
+ "dunder-proto": "^1.0.1",
387
+ "es-object-atoms": "^1.0.0"
388
+ },
389
+ "engines": {
390
+ "node": ">= 0.4"
391
+ }
392
+ },
393
+ "node_modules/gopd": {
394
+ "version": "1.2.0",
395
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
396
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
397
+ "engines": {
398
+ "node": ">= 0.4"
399
+ },
400
+ "funding": {
401
+ "url": "https://github.com/sponsors/ljharb"
402
+ }
403
+ },
404
+ "node_modules/has-symbols": {
405
+ "version": "1.1.0",
406
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
407
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
408
+ "engines": {
409
+ "node": ">= 0.4"
410
+ },
411
+ "funding": {
412
+ "url": "https://github.com/sponsors/ljharb"
413
+ }
414
+ },
415
+ "node_modules/hasown": {
416
+ "version": "2.0.3",
417
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
418
+ "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
419
+ "dependencies": {
420
+ "function-bind": "^1.1.2"
421
+ },
422
+ "engines": {
423
+ "node": ">= 0.4"
424
+ }
425
+ },
426
+ "node_modules/http-errors": {
427
+ "version": "2.0.1",
428
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
429
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
430
+ "dependencies": {
431
+ "depd": "~2.0.0",
432
+ "inherits": "~2.0.4",
433
+ "setprototypeof": "~1.2.0",
434
+ "statuses": "~2.0.2",
435
+ "toidentifier": "~1.0.1"
436
+ },
437
+ "engines": {
438
+ "node": ">= 0.8"
439
+ },
440
+ "funding": {
441
+ "type": "opencollective",
442
+ "url": "https://opencollective.com/express"
443
+ }
444
+ },
445
+ "node_modules/iconv-lite": {
446
+ "version": "0.7.2",
447
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
448
+ "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
449
+ "dependencies": {
450
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
451
+ },
452
+ "engines": {
453
+ "node": ">=0.10.0"
454
+ },
455
+ "funding": {
456
+ "type": "opencollective",
457
+ "url": "https://opencollective.com/express"
458
+ }
459
+ },
460
+ "node_modules/inherits": {
461
+ "version": "2.0.4",
462
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
463
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
464
+ },
465
+ "node_modules/ipaddr.js": {
466
+ "version": "1.9.1",
467
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
468
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
469
+ "engines": {
470
+ "node": ">= 0.10"
471
+ }
472
+ },
473
+ "node_modules/is-promise": {
474
+ "version": "4.0.0",
475
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
476
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
477
+ },
478
+ "node_modules/jsonwebtoken": {
479
+ "version": "9.0.3",
480
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz",
481
+ "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==",
482
+ "dependencies": {
483
+ "jws": "^4.0.1",
484
+ "lodash.includes": "^4.3.0",
485
+ "lodash.isboolean": "^3.0.3",
486
+ "lodash.isinteger": "^4.0.4",
487
+ "lodash.isnumber": "^3.0.3",
488
+ "lodash.isplainobject": "^4.0.6",
489
+ "lodash.isstring": "^4.0.1",
490
+ "lodash.once": "^4.0.0",
491
+ "ms": "^2.1.1",
492
+ "semver": "^7.5.4"
493
+ },
494
+ "engines": {
495
+ "node": ">=12",
496
+ "npm": ">=6"
497
+ }
498
+ },
499
+ "node_modules/jwa": {
500
+ "version": "2.0.1",
501
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
502
+ "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
503
+ "dependencies": {
504
+ "buffer-equal-constant-time": "^1.0.1",
505
+ "ecdsa-sig-formatter": "1.0.11",
506
+ "safe-buffer": "^5.0.1"
507
+ }
508
+ },
509
+ "node_modules/jws": {
510
+ "version": "4.0.1",
511
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
512
+ "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
513
+ "dependencies": {
514
+ "jwa": "^2.0.1",
515
+ "safe-buffer": "^5.0.1"
516
+ }
517
+ },
518
+ "node_modules/lodash.includes": {
519
+ "version": "4.3.0",
520
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
521
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
522
+ },
523
+ "node_modules/lodash.isboolean": {
524
+ "version": "3.0.3",
525
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
526
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
527
+ },
528
+ "node_modules/lodash.isinteger": {
529
+ "version": "4.0.4",
530
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
531
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
532
+ },
533
+ "node_modules/lodash.isnumber": {
534
+ "version": "3.0.3",
535
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
536
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
537
+ },
538
+ "node_modules/lodash.isplainobject": {
539
+ "version": "4.0.6",
540
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
541
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
542
+ },
543
+ "node_modules/lodash.isstring": {
544
+ "version": "4.0.1",
545
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
546
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
547
+ },
548
+ "node_modules/lodash.once": {
549
+ "version": "4.1.1",
550
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
551
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
552
+ },
553
+ "node_modules/math-intrinsics": {
554
+ "version": "1.1.0",
555
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
556
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
557
+ "engines": {
558
+ "node": ">= 0.4"
559
+ }
560
+ },
561
+ "node_modules/media-typer": {
562
+ "version": "1.1.0",
563
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
564
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
565
+ "engines": {
566
+ "node": ">= 0.8"
567
+ }
568
+ },
569
+ "node_modules/merge-descriptors": {
570
+ "version": "2.0.0",
571
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
572
+ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
573
+ "engines": {
574
+ "node": ">=18"
575
+ },
576
+ "funding": {
577
+ "url": "https://github.com/sponsors/sindresorhus"
578
+ }
579
+ },
580
+ "node_modules/mime-db": {
581
+ "version": "1.54.0",
582
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
583
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
584
+ "engines": {
585
+ "node": ">= 0.6"
586
+ }
587
+ },
588
+ "node_modules/mime-types": {
589
+ "version": "3.0.2",
590
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
591
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
592
+ "dependencies": {
593
+ "mime-db": "^1.54.0"
594
+ },
595
+ "engines": {
596
+ "node": ">=18"
597
+ },
598
+ "funding": {
599
+ "type": "opencollective",
600
+ "url": "https://opencollective.com/express"
601
+ }
602
+ },
603
+ "node_modules/ms": {
604
+ "version": "2.1.3",
605
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
606
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
607
+ },
608
+ "node_modules/negotiator": {
609
+ "version": "1.0.0",
610
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
611
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
612
+ "engines": {
613
+ "node": ">= 0.6"
614
+ }
615
+ },
616
+ "node_modules/object-assign": {
617
+ "version": "4.1.1",
618
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
619
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
620
+ "engines": {
621
+ "node": ">=0.10.0"
622
+ }
623
+ },
624
+ "node_modules/object-inspect": {
625
+ "version": "1.13.4",
626
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
627
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
628
+ "engines": {
629
+ "node": ">= 0.4"
630
+ },
631
+ "funding": {
632
+ "url": "https://github.com/sponsors/ljharb"
633
+ }
634
+ },
635
+ "node_modules/on-finished": {
636
+ "version": "2.4.1",
637
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
638
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
639
+ "dependencies": {
640
+ "ee-first": "1.1.1"
641
+ },
642
+ "engines": {
643
+ "node": ">= 0.8"
644
+ }
645
+ },
646
+ "node_modules/once": {
647
+ "version": "1.4.0",
648
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
649
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
650
+ "dependencies": {
651
+ "wrappy": "1"
652
+ }
653
+ },
654
+ "node_modules/parseurl": {
655
+ "version": "1.3.3",
656
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
657
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
658
+ "engines": {
659
+ "node": ">= 0.8"
660
+ }
661
+ },
662
+ "node_modules/path-to-regexp": {
663
+ "version": "8.4.2",
664
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
665
+ "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==",
666
+ "funding": {
667
+ "type": "opencollective",
668
+ "url": "https://opencollective.com/express"
669
+ }
670
+ },
671
+ "node_modules/pg": {
672
+ "version": "8.21.0",
673
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.21.0.tgz",
674
+ "integrity": "sha512-AUP1EYJuHraQGsVoCQVIcM7TEJVGtDzxWtGFZd8rds9d+CCXlU5Js1rYgfLNvxy9iJrpHjGrRjoi/3BT9fRyiA==",
675
+ "dependencies": {
676
+ "pg-connection-string": "^2.13.0",
677
+ "pg-pool": "^3.14.0",
678
+ "pg-protocol": "^1.14.0",
679
+ "pg-types": "2.2.0",
680
+ "pgpass": "1.0.5"
681
+ },
682
+ "engines": {
683
+ "node": ">= 16.0.0"
684
+ },
685
+ "optionalDependencies": {
686
+ "pg-cloudflare": "^1.4.0"
687
+ },
688
+ "peerDependencies": {
689
+ "pg-native": ">=3.0.1"
690
+ },
691
+ "peerDependenciesMeta": {
692
+ "pg-native": {
693
+ "optional": true
694
+ }
695
+ }
696
+ },
697
+ "node_modules/pg-cloudflare": {
698
+ "version": "1.4.0",
699
+ "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz",
700
+ "integrity": "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==",
701
+ "optional": true
702
+ },
703
+ "node_modules/pg-connection-string": {
704
+ "version": "2.13.0",
705
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.13.0.tgz",
706
+ "integrity": "sha512-EMnU9E2fSULdsbErBbMaXJvFeD9B4+nPcM3f+4lsiCR0BHLPrLVjv3DbyM2hgQQviKJaTWIRRTjKjWlHg3p2ig=="
707
+ },
708
+ "node_modules/pg-int8": {
709
+ "version": "1.0.1",
710
+ "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
711
+ "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
712
+ "engines": {
713
+ "node": ">=4.0.0"
714
+ }
715
+ },
716
+ "node_modules/pg-pool": {
717
+ "version": "3.14.0",
718
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz",
719
+ "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==",
720
+ "peerDependencies": {
721
+ "pg": ">=8.0"
722
+ }
723
+ },
724
+ "node_modules/pg-protocol": {
725
+ "version": "1.14.0",
726
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.14.0.tgz",
727
+ "integrity": "sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA=="
728
+ },
729
+ "node_modules/pg-types": {
730
+ "version": "2.2.0",
731
+ "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
732
+ "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
733
+ "dependencies": {
734
+ "pg-int8": "1.0.1",
735
+ "postgres-array": "~2.0.0",
736
+ "postgres-bytea": "~1.0.0",
737
+ "postgres-date": "~1.0.4",
738
+ "postgres-interval": "^1.1.0"
739
+ },
740
+ "engines": {
741
+ "node": ">=4"
742
+ }
743
+ },
744
+ "node_modules/pgpass": {
745
+ "version": "1.0.5",
746
+ "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
747
+ "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
748
+ "dependencies": {
749
+ "split2": "^4.1.0"
750
+ }
751
+ },
752
+ "node_modules/postgres-array": {
753
+ "version": "2.0.0",
754
+ "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
755
+ "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
756
+ "engines": {
757
+ "node": ">=4"
758
+ }
759
+ },
760
+ "node_modules/postgres-bytea": {
761
+ "version": "1.0.1",
762
+ "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz",
763
+ "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==",
764
+ "engines": {
765
+ "node": ">=0.10.0"
766
+ }
767
+ },
768
+ "node_modules/postgres-date": {
769
+ "version": "1.0.7",
770
+ "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
771
+ "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
772
+ "engines": {
773
+ "node": ">=0.10.0"
774
+ }
775
+ },
776
+ "node_modules/postgres-interval": {
777
+ "version": "1.2.0",
778
+ "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
779
+ "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
780
+ "dependencies": {
781
+ "xtend": "^4.0.0"
782
+ },
783
+ "engines": {
784
+ "node": ">=0.10.0"
785
+ }
786
+ },
787
+ "node_modules/proxy-addr": {
788
+ "version": "2.0.7",
789
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
790
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
791
+ "dependencies": {
792
+ "forwarded": "0.2.0",
793
+ "ipaddr.js": "1.9.1"
794
+ },
795
+ "engines": {
796
+ "node": ">= 0.10"
797
+ }
798
+ },
799
+ "node_modules/qs": {
800
+ "version": "6.15.2",
801
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz",
802
+ "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==",
803
+ "dependencies": {
804
+ "side-channel": "^1.1.0"
805
+ },
806
+ "engines": {
807
+ "node": ">=0.6"
808
+ },
809
+ "funding": {
810
+ "url": "https://github.com/sponsors/ljharb"
811
+ }
812
+ },
813
+ "node_modules/range-parser": {
814
+ "version": "1.2.1",
815
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
816
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
817
+ "engines": {
818
+ "node": ">= 0.6"
819
+ }
820
+ },
821
+ "node_modules/raw-body": {
822
+ "version": "3.0.2",
823
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
824
+ "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
825
+ "dependencies": {
826
+ "bytes": "~3.1.2",
827
+ "http-errors": "~2.0.1",
828
+ "iconv-lite": "~0.7.0",
829
+ "unpipe": "~1.0.0"
830
+ },
831
+ "engines": {
832
+ "node": ">= 0.10"
833
+ }
834
+ },
835
+ "node_modules/router": {
836
+ "version": "2.2.0",
837
+ "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
838
+ "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
839
+ "dependencies": {
840
+ "debug": "^4.4.0",
841
+ "depd": "^2.0.0",
842
+ "is-promise": "^4.0.0",
843
+ "parseurl": "^1.3.3",
844
+ "path-to-regexp": "^8.0.0"
845
+ },
846
+ "engines": {
847
+ "node": ">= 18"
848
+ }
849
+ },
850
+ "node_modules/safe-buffer": {
851
+ "version": "5.2.1",
852
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
853
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
854
+ "funding": [
855
+ {
856
+ "type": "github",
857
+ "url": "https://github.com/sponsors/feross"
858
+ },
859
+ {
860
+ "type": "patreon",
861
+ "url": "https://www.patreon.com/feross"
862
+ },
863
+ {
864
+ "type": "consulting",
865
+ "url": "https://feross.org/support"
866
+ }
867
+ ]
868
+ },
869
+ "node_modules/safer-buffer": {
870
+ "version": "2.1.2",
871
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
872
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
873
+ },
874
+ "node_modules/semver": {
875
+ "version": "7.8.0",
876
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz",
877
+ "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==",
878
+ "bin": {
879
+ "semver": "bin/semver.js"
880
+ },
881
+ "engines": {
882
+ "node": ">=10"
883
+ }
884
+ },
885
+ "node_modules/send": {
886
+ "version": "1.2.1",
887
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
888
+ "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
889
+ "dependencies": {
890
+ "debug": "^4.4.3",
891
+ "encodeurl": "^2.0.0",
892
+ "escape-html": "^1.0.3",
893
+ "etag": "^1.8.1",
894
+ "fresh": "^2.0.0",
895
+ "http-errors": "^2.0.1",
896
+ "mime-types": "^3.0.2",
897
+ "ms": "^2.1.3",
898
+ "on-finished": "^2.4.1",
899
+ "range-parser": "^1.2.1",
900
+ "statuses": "^2.0.2"
901
+ },
902
+ "engines": {
903
+ "node": ">= 18"
904
+ },
905
+ "funding": {
906
+ "type": "opencollective",
907
+ "url": "https://opencollective.com/express"
908
+ }
909
+ },
910
+ "node_modules/serve-static": {
911
+ "version": "2.2.1",
912
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz",
913
+ "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==",
914
+ "dependencies": {
915
+ "encodeurl": "^2.0.0",
916
+ "escape-html": "^1.0.3",
917
+ "parseurl": "^1.3.3",
918
+ "send": "^1.2.0"
919
+ },
920
+ "engines": {
921
+ "node": ">= 18"
922
+ },
923
+ "funding": {
924
+ "type": "opencollective",
925
+ "url": "https://opencollective.com/express"
926
+ }
927
+ },
928
+ "node_modules/setprototypeof": {
929
+ "version": "1.2.0",
930
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
931
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
932
+ },
933
+ "node_modules/side-channel": {
934
+ "version": "1.1.0",
935
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
936
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
937
+ "dependencies": {
938
+ "es-errors": "^1.3.0",
939
+ "object-inspect": "^1.13.3",
940
+ "side-channel-list": "^1.0.0",
941
+ "side-channel-map": "^1.0.1",
942
+ "side-channel-weakmap": "^1.0.2"
943
+ },
944
+ "engines": {
945
+ "node": ">= 0.4"
946
+ },
947
+ "funding": {
948
+ "url": "https://github.com/sponsors/ljharb"
949
+ }
950
+ },
951
+ "node_modules/side-channel-list": {
952
+ "version": "1.0.1",
953
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
954
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
955
+ "dependencies": {
956
+ "es-errors": "^1.3.0",
957
+ "object-inspect": "^1.13.4"
958
+ },
959
+ "engines": {
960
+ "node": ">= 0.4"
961
+ },
962
+ "funding": {
963
+ "url": "https://github.com/sponsors/ljharb"
964
+ }
965
+ },
966
+ "node_modules/side-channel-map": {
967
+ "version": "1.0.1",
968
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
969
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
970
+ "dependencies": {
971
+ "call-bound": "^1.0.2",
972
+ "es-errors": "^1.3.0",
973
+ "get-intrinsic": "^1.2.5",
974
+ "object-inspect": "^1.13.3"
975
+ },
976
+ "engines": {
977
+ "node": ">= 0.4"
978
+ },
979
+ "funding": {
980
+ "url": "https://github.com/sponsors/ljharb"
981
+ }
982
+ },
983
+ "node_modules/side-channel-weakmap": {
984
+ "version": "1.0.2",
985
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
986
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
987
+ "dependencies": {
988
+ "call-bound": "^1.0.2",
989
+ "es-errors": "^1.3.0",
990
+ "get-intrinsic": "^1.2.5",
991
+ "object-inspect": "^1.13.3",
992
+ "side-channel-map": "^1.0.1"
993
+ },
994
+ "engines": {
995
+ "node": ">= 0.4"
996
+ },
997
+ "funding": {
998
+ "url": "https://github.com/sponsors/ljharb"
999
+ }
1000
+ },
1001
+ "node_modules/split2": {
1002
+ "version": "4.2.0",
1003
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
1004
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
1005
+ "engines": {
1006
+ "node": ">= 10.x"
1007
+ }
1008
+ },
1009
+ "node_modules/statuses": {
1010
+ "version": "2.0.2",
1011
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
1012
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
1013
+ "engines": {
1014
+ "node": ">= 0.8"
1015
+ }
1016
+ },
1017
+ "node_modules/toidentifier": {
1018
+ "version": "1.0.1",
1019
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1020
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1021
+ "engines": {
1022
+ "node": ">=0.6"
1023
+ }
1024
+ },
1025
+ "node_modules/type-is": {
1026
+ "version": "2.1.0",
1027
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz",
1028
+ "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==",
1029
+ "dependencies": {
1030
+ "content-type": "^2.0.0",
1031
+ "media-typer": "^1.1.0",
1032
+ "mime-types": "^3.0.0"
1033
+ },
1034
+ "engines": {
1035
+ "node": ">= 18"
1036
+ },
1037
+ "funding": {
1038
+ "type": "opencollective",
1039
+ "url": "https://opencollective.com/express"
1040
+ }
1041
+ },
1042
+ "node_modules/type-is/node_modules/content-type": {
1043
+ "version": "2.0.0",
1044
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz",
1045
+ "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==",
1046
+ "engines": {
1047
+ "node": ">=18"
1048
+ },
1049
+ "funding": {
1050
+ "type": "opencollective",
1051
+ "url": "https://opencollective.com/express"
1052
+ }
1053
+ },
1054
+ "node_modules/unpipe": {
1055
+ "version": "1.0.0",
1056
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1057
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1058
+ "engines": {
1059
+ "node": ">= 0.8"
1060
+ }
1061
+ },
1062
+ "node_modules/vary": {
1063
+ "version": "1.1.2",
1064
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1065
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1066
+ "engines": {
1067
+ "node": ">= 0.8"
1068
+ }
1069
+ },
1070
+ "node_modules/wrappy": {
1071
+ "version": "1.0.2",
1072
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1073
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
1074
+ },
1075
+ "node_modules/xtend": {
1076
+ "version": "4.0.2",
1077
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1078
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
1079
+ "engines": {
1080
+ "node": ">=0.4"
1081
+ }
1082
+ }
1083
+ }
1084
+ }