api: pull in awk, multer, multer-s3

Pedro Lucas Porcellis porcellis@eletrotupi.com 1 month ago c74790e9b8565fd1c4db09f2743077a96c6abb36
Parents: bbb8003
2 file(s) changed
  • api/package-lock.json +937 -2
  • api/package.json +5 -0
api/package-lock.json
@@ -9,6 +9,7 @@ "name": "orbit-api",
9 9 "version": "0.0.0",
10 10 "license": "ISC",
11 11 "dependencies": {
12 + "@aws-sdk/client-s3": "^3.1048.0",
12 13 "@prisma/adapter-better-sqlite3": "^7.5.0",
13 14 "@prisma/adapter-pg": "^7.7.0",
14 15 "@prisma/client": "^7.5.0",
@@ -23,6 +24,8 @@ "date-fns": "^4.1.0",
23 24 "express": "^5.2.1",
24 25 "jsonwebtoken": "^9.0.3",
25 26 "morgan": "^1.10.1",
27 + "multer": "^2.1.1",
28 + "multer-s3": "^3.0.1",
26 29 "pg": "^8.20.0",
27 30 "resend": "^6.12.3",
28 31 "zod": "^4.4.3"
@@ -32,6 +35,8 @@ "@ava/typescript": "^6.0.0",
32 35 "@types/better-sqlite3": "^7.6.13",
33 36 "@types/express": "^5.0.6",
34 37 "@types/morgan": "^1.9.10",
38 + "@types/multer": "^2.1.0",
39 + "@types/multer-s3": "^3.0.3",
35 40 "@types/node": "^25.5.2",
36 41 "ava": "^6.4.1",
37 42 "cross-var": "^1.1.0",
@@ -60,6 +65,533 @@ "engines": {
60 65 "node": "^20.8 || ^22 || >=24"
61 66 }
62 67 },
68 + "node_modules/@aws-crypto/crc32": {
69 + "version": "5.2.0",
70 + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz",
71 + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==",
72 + "license": "Apache-2.0",
73 + "dependencies": {
74 + "@aws-crypto/util": "^5.2.0",
75 + "@aws-sdk/types": "^3.222.0",
76 + "tslib": "^2.6.2"
77 + },
78 + "engines": {
79 + "node": ">=16.0.0"
80 + }
81 + },
82 + "node_modules/@aws-crypto/crc32c": {
83 + "version": "5.2.0",
84 + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz",
85 + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==",
86 + "license": "Apache-2.0",
87 + "dependencies": {
88 + "@aws-crypto/util": "^5.2.0",
89 + "@aws-sdk/types": "^3.222.0",
90 + "tslib": "^2.6.2"
91 + }
92 + },
93 + "node_modules/@aws-crypto/sha1-browser": {
94 + "version": "5.2.0",
95 + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz",
96 + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==",
97 + "license": "Apache-2.0",
98 + "dependencies": {
99 + "@aws-crypto/supports-web-crypto": "^5.2.0",
100 + "@aws-crypto/util": "^5.2.0",
101 + "@aws-sdk/types": "^3.222.0",
102 + "@aws-sdk/util-locate-window": "^3.0.0",
103 + "@smithy/util-utf8": "^2.0.0",
104 + "tslib": "^2.6.2"
105 + }
106 + },
107 + "node_modules/@aws-crypto/sha256-browser": {
108 + "version": "5.2.0",
109 + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz",
110 + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==",
111 + "license": "Apache-2.0",
112 + "dependencies": {
113 + "@aws-crypto/sha256-js": "^5.2.0",
114 + "@aws-crypto/supports-web-crypto": "^5.2.0",
115 + "@aws-crypto/util": "^5.2.0",
116 + "@aws-sdk/types": "^3.222.0",
117 + "@aws-sdk/util-locate-window": "^3.0.0",
118 + "@smithy/util-utf8": "^2.0.0",
119 + "tslib": "^2.6.2"
120 + }
121 + },
122 + "node_modules/@aws-crypto/sha256-js": {
123 + "version": "5.2.0",
124 + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz",
125 + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==",
126 + "license": "Apache-2.0",
127 + "dependencies": {
128 + "@aws-crypto/util": "^5.2.0",
129 + "@aws-sdk/types": "^3.222.0",
130 + "tslib": "^2.6.2"
131 + },
132 + "engines": {
133 + "node": ">=16.0.0"
134 + }
135 + },
136 + "node_modules/@aws-crypto/supports-web-crypto": {
137 + "version": "5.2.0",
138 + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz",
139 + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==",
140 + "license": "Apache-2.0",
141 + "dependencies": {
142 + "tslib": "^2.6.2"
143 + }
144 + },
145 + "node_modules/@aws-crypto/util": {
146 + "version": "5.2.0",
147 + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
148 + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
149 + "license": "Apache-2.0",
150 + "dependencies": {
151 + "@aws-sdk/types": "^3.222.0",
152 + "@smithy/util-utf8": "^2.0.0",
153 + "tslib": "^2.6.2"
154 + }
155 + },
156 + "node_modules/@aws-sdk/client-s3": {
157 + "version": "3.1048.0",
158 + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1048.0.tgz",
159 + "integrity": "sha512-SrJn5FteqqtcDBgQIvqLKk3Qn/2vSsi5XR03I53EDDR4CbCdLysVSNgUnjVncEECMua9Pz+nxO0/lEx3TP+6mA==",
160 + "license": "Apache-2.0",
161 + "dependencies": {
162 + "@aws-crypto/sha1-browser": "5.2.0",
163 + "@aws-crypto/sha256-browser": "5.2.0",
164 + "@aws-crypto/sha256-js": "5.2.0",
165 + "@aws-sdk/core": "^3.974.11",
166 + "@aws-sdk/credential-provider-node": "^3.972.42",
167 + "@aws-sdk/middleware-bucket-endpoint": "^3.972.13",
168 + "@aws-sdk/middleware-expect-continue": "^3.972.12",
169 + "@aws-sdk/middleware-flexible-checksums": "^3.974.19",
170 + "@aws-sdk/middleware-location-constraint": "^3.972.10",
171 + "@aws-sdk/middleware-sdk-s3": "^3.972.40",
172 + "@aws-sdk/middleware-ssec": "^3.972.10",
173 + "@aws-sdk/signature-v4-multi-region": "^3.996.27",
174 + "@aws-sdk/types": "^3.973.8",
175 + "@smithy/core": "^3.24.2",
176 + "@smithy/fetch-http-handler": "^5.4.2",
177 + "@smithy/node-http-handler": "^4.7.2",
178 + "@smithy/types": "^4.14.1",
179 + "tslib": "^2.6.2"
180 + },
181 + "engines": {
182 + "node": ">=20.0.0"
183 + }
184 + },
185 + "node_modules/@aws-sdk/core": {
186 + "version": "3.974.11",
187 + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.11.tgz",
188 + "integrity": "sha512-QpnINq5FZH6EOaDEkmHdT7eUunbvD27pDNQypaWjFyYz7Zl1q3UCMQErBZxpmfGfI7MvI2TlK8KTkgNpv8b1ug==",
189 + "license": "Apache-2.0",
190 + "dependencies": {
191 + "@aws-sdk/types": "^3.973.8",
192 + "@aws-sdk/xml-builder": "^3.972.24",
193 + "@aws/lambda-invoke-store": "^0.2.2",
194 + "@smithy/core": "^3.24.2",
195 + "@smithy/signature-v4": "^5.4.2",
196 + "@smithy/types": "^4.14.1",
197 + "bowser": "^2.11.0",
198 + "tslib": "^2.6.2"
199 + },
200 + "engines": {
201 + "node": ">=20.0.0"
202 + }
203 + },
204 + "node_modules/@aws-sdk/crc64-nvme": {
205 + "version": "3.972.8",
206 + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.8.tgz",
207 + "integrity": "sha512-fVfUCL/Xh2zINYMPZvj+iBn6XWouQf0DAnjaWCI9MkmqXzL2Iy5FoQB8O7syFe6gN6AH1ecDDU58T51Ou0kFkA==",
208 + "license": "Apache-2.0",
209 + "dependencies": {
210 + "@smithy/types": "^4.14.1",
211 + "tslib": "^2.6.2"
212 + },
213 + "engines": {
214 + "node": ">=20.0.0"
215 + }
216 + },
217 + "node_modules/@aws-sdk/credential-provider-env": {
218 + "version": "3.972.37",
219 + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.37.tgz",
220 + "integrity": "sha512-/jpPvEh6f7ntmIzf7dNxoNX6Q8vt8UpesCjbW6mFfk4V1NW6bIy9qxcQ6WbA8As5yQhsZOe+xeNd4xHX8kdY2Q==",
221 + "license": "Apache-2.0",
222 + "dependencies": {
223 + "@aws-sdk/core": "^3.974.11",
224 + "@aws-sdk/types": "^3.973.8",
225 + "@smithy/core": "^3.24.2",
226 + "@smithy/types": "^4.14.1",
227 + "tslib": "^2.6.2"
228 + },
229 + "engines": {
230 + "node": ">=20.0.0"
231 + }
232 + },
233 + "node_modules/@aws-sdk/credential-provider-http": {
234 + "version": "3.972.39",
235 + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.39.tgz",
236 + "integrity": "sha512-pIgTpisWyWg7X1bUbzSjuUYosYTD0Ghz2M0hkSTmb3a6i3qV3uU+NYJPI/E2XSC0HcsZh5rsLPzeXrkb2DS0Cg==",
237 + "license": "Apache-2.0",
238 + "dependencies": {
239 + "@aws-sdk/core": "^3.974.11",
240 + "@aws-sdk/types": "^3.973.8",
241 + "@smithy/core": "^3.24.2",
242 + "@smithy/fetch-http-handler": "^5.4.2",
243 + "@smithy/node-http-handler": "^4.7.2",
244 + "@smithy/types": "^4.14.1",
245 + "tslib": "^2.6.2"
246 + },
247 + "engines": {
248 + "node": ">=20.0.0"
249 + }
250 + },
251 + "node_modules/@aws-sdk/credential-provider-ini": {
252 + "version": "3.972.41",
253 + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.41.tgz",
254 + "integrity": "sha512-u2tyjaxJJzW8UtW4SM1ZcPMDwO6y+kV+llvou+Adts0FAKyzes5jG4izQN+KX3yE8ZROpS5y1LJ//xL2iSf76w==",
255 + "license": "Apache-2.0",
256 + "dependencies": {
257 + "@aws-sdk/core": "^3.974.11",
258 + "@aws-sdk/credential-provider-env": "^3.972.37",
259 + "@aws-sdk/credential-provider-http": "^3.972.39",
260 + "@aws-sdk/credential-provider-login": "^3.972.41",
261 + "@aws-sdk/credential-provider-process": "^3.972.37",
262 + "@aws-sdk/credential-provider-sso": "^3.972.41",
263 + "@aws-sdk/credential-provider-web-identity": "^3.972.41",
264 + "@aws-sdk/nested-clients": "^3.997.9",
265 + "@aws-sdk/types": "^3.973.8",
266 + "@smithy/core": "^3.24.2",
267 + "@smithy/credential-provider-imds": "^4.3.2",
268 + "@smithy/types": "^4.14.1",
269 + "tslib": "^2.6.2"
270 + },
271 + "engines": {
272 + "node": ">=20.0.0"
273 + }
274 + },
275 + "node_modules/@aws-sdk/credential-provider-login": {
276 + "version": "3.972.41",
277 + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.41.tgz",
278 + "integrity": "sha512-0LBitxXiAiaE5nlFPfpNIww/8FRY/I7WIndWsc9GmNFOM7cE1wNpVNQEGEk9Outg5l8xl+3vybxFyUy4l9q/LQ==",
279 + "license": "Apache-2.0",
280 + "dependencies": {
281 + "@aws-sdk/core": "^3.974.11",
282 + "@aws-sdk/nested-clients": "^3.997.9",
283 + "@aws-sdk/types": "^3.973.8",
284 + "@smithy/core": "^3.24.2",
285 + "@smithy/types": "^4.14.1",
286 + "tslib": "^2.6.2"
287 + },
288 + "engines": {
289 + "node": ">=20.0.0"
290 + }
291 + },
292 + "node_modules/@aws-sdk/credential-provider-node": {
293 + "version": "3.972.42",
294 + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.42.tgz",
295 + "integrity": "sha512-D4oon2zbqqsWOJUM99Gm3/ZyJ0IJvTXVN3PyloGb3kQEyI36fjCZheZj422lAgTWWd6TSHgiImLt3RIaLdv3dQ==",
296 + "license": "Apache-2.0",
297 + "dependencies": {
298 + "@aws-sdk/credential-provider-env": "^3.972.37",
299 + "@aws-sdk/credential-provider-http": "^3.972.39",
300 + "@aws-sdk/credential-provider-ini": "^3.972.41",
301 + "@aws-sdk/credential-provider-process": "^3.972.37",
302 + "@aws-sdk/credential-provider-sso": "^3.972.41",
303 + "@aws-sdk/credential-provider-web-identity": "^3.972.41",
304 + "@aws-sdk/types": "^3.973.8",
305 + "@smithy/core": "^3.24.2",
306 + "@smithy/credential-provider-imds": "^4.3.2",
307 + "@smithy/types": "^4.14.1",
308 + "tslib": "^2.6.2"
309 + },
310 + "engines": {
311 + "node": ">=20.0.0"
312 + }
313 + },
314 + "node_modules/@aws-sdk/credential-provider-process": {
315 + "version": "3.972.37",
316 + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.37.tgz",
317 + "integrity": "sha512-7nVaHBUaWIddASYfVaA9O4D5ZVjewU3sCol9WqZPGfW0nR+0WqE0xHZnD/U2L33PlOB8KNXGKZ6wOES/QijKzg==",
318 + "license": "Apache-2.0",
319 + "dependencies": {
320 + "@aws-sdk/core": "^3.974.11",
321 + "@aws-sdk/types": "^3.973.8",
322 + "@smithy/core": "^3.24.2",
323 + "@smithy/types": "^4.14.1",
324 + "tslib": "^2.6.2"
325 + },
326 + "engines": {
327 + "node": ">=20.0.0"
328 + }
329 + },
330 + "node_modules/@aws-sdk/credential-provider-sso": {
331 + "version": "3.972.41",
332 + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.41.tgz",
333 + "integrity": "sha512-IOWAWEHe5LkjSKkkUUX9ciV6Y1scHTsnfEkdt5yyC4Slrc7AGbkLPrpntjqh18ksJAMOaVhoBsO8p2WyTcY2wQ==",
334 + "license": "Apache-2.0",
335 + "dependencies": {
336 + "@aws-sdk/core": "^3.974.11",
337 + "@aws-sdk/nested-clients": "^3.997.9",
338 + "@aws-sdk/token-providers": "3.1048.0",
339 + "@aws-sdk/types": "^3.973.8",
340 + "@smithy/core": "^3.24.2",
341 + "@smithy/types": "^4.14.1",
342 + "tslib": "^2.6.2"
343 + },
344 + "engines": {
345 + "node": ">=20.0.0"
346 + }
347 + },
348 + "node_modules/@aws-sdk/credential-provider-web-identity": {
349 + "version": "3.972.41",
350 + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.41.tgz",
351 + "integrity": "sha512-mbACk9Yypa8nm4iGZLs0PofOXEcTDOUw6wDnsPXNDNSd2WNXs1tSo+6nc/fh0jLYdfVZThhBL98PHW4aXFsG5A==",
352 + "license": "Apache-2.0",
353 + "dependencies": {
354 + "@aws-sdk/core": "^3.974.11",
355 + "@aws-sdk/nested-clients": "^3.997.9",
356 + "@aws-sdk/types": "^3.973.8",
357 + "@smithy/core": "^3.24.2",
358 + "@smithy/types": "^4.14.1",
359 + "tslib": "^2.6.2"
360 + },
361 + "engines": {
362 + "node": ">=20.0.0"
363 + }
364 + },
365 + "node_modules/@aws-sdk/lib-storage": {
366 + "version": "3.1048.0",
367 + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.1048.0.tgz",
368 + "integrity": "sha512-3u+Ycwo84crWoyPU4DrZgv6GO92cUE4CX5/h32vmSMeG8e93XgB40Jz2PqPim/r73IYRuQUrZY8E1P1MHvXZqw==",
369 + "license": "Apache-2.0",
370 + "dependencies": {
371 + "@smithy/core": "^3.24.2",
372 + "@smithy/types": "^4.14.1",
373 + "buffer": "5.6.0",
374 + "events": "3.3.0",
375 + "stream-browserify": "3.0.0",
376 + "tslib": "^2.6.2"
377 + },
378 + "engines": {
379 + "node": ">=20.0.0"
380 + },
381 + "peerDependencies": {
382 + "@aws-sdk/client-s3": "^3.1048.0"
383 + }
384 + },
385 + "node_modules/@aws-sdk/lib-storage/node_modules/buffer": {
386 + "version": "5.6.0",
387 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
388 + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
389 + "license": "MIT",
390 + "dependencies": {
391 + "base64-js": "^1.0.2",
392 + "ieee754": "^1.1.4"
393 + }
394 + },
395 + "node_modules/@aws-sdk/middleware-bucket-endpoint": {
396 + "version": "3.972.13",
397 + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.13.tgz",
398 + "integrity": "sha512-JDaukix+kt5KwF7FzNSkfZHpqiPJajVkKJLJexF6z5B44+CN70BXGiQaCEAiCtKtRZNvC16eF3SY9L0bDJPlbA==",
399 + "license": "Apache-2.0",
400 + "dependencies": {
401 + "@aws-sdk/core": "^3.974.11",
402 + "@aws-sdk/types": "^3.973.8",
403 + "@smithy/core": "^3.24.2",
404 + "@smithy/types": "^4.14.1",
405 + "tslib": "^2.6.2"
406 + },
407 + "engines": {
408 + "node": ">=20.0.0"
409 + }
410 + },
411 + "node_modules/@aws-sdk/middleware-expect-continue": {
412 + "version": "3.972.12",
413 + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.12.tgz",
414 + "integrity": "sha512-dA5pKTom/Ls9mgeyeaRBNQrRIVOLVjv4AmKOB0/e4yaiXEUy0gSz2d3liP8JHtYoCAEWySU1jWnyzwLOREN+4g==",
415 + "license": "Apache-2.0",
416 + "dependencies": {
417 + "@aws-sdk/types": "^3.973.8",
418 + "@smithy/core": "^3.24.2",
419 + "@smithy/types": "^4.14.1",
420 + "tslib": "^2.6.2"
421 + },
422 + "engines": {
423 + "node": ">=20.0.0"
424 + }
425 + },
426 + "node_modules/@aws-sdk/middleware-flexible-checksums": {
427 + "version": "3.974.19",
428 + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.19.tgz",
429 + "integrity": "sha512-GLciZVIvWM3C+ffuqnUqlAZwRjQdLt+KXiqr9+aRwZyKVyF2J5lrJAzzSqwweNl9hUWBN00BhilWXdMI5DjNcw==",
430 + "license": "Apache-2.0",
431 + "dependencies": {
432 + "@aws-crypto/crc32": "5.2.0",
433 + "@aws-crypto/crc32c": "5.2.0",
434 + "@aws-crypto/util": "5.2.0",
435 + "@aws-sdk/core": "^3.974.11",
436 + "@aws-sdk/crc64-nvme": "^3.972.8",
437 + "@aws-sdk/types": "^3.973.8",
438 + "@smithy/core": "^3.24.2",
439 + "@smithy/types": "^4.14.1",
440 + "tslib": "^2.6.2"
441 + },
442 + "engines": {
443 + "node": ">=20.0.0"
444 + }
445 + },
446 + "node_modules/@aws-sdk/middleware-location-constraint": {
447 + "version": "3.972.10",
448 + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz",
449 + "integrity": "sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==",
450 + "license": "Apache-2.0",
451 + "dependencies": {
452 + "@aws-sdk/types": "^3.973.8",
453 + "@smithy/types": "^4.14.1",
454 + "tslib": "^2.6.2"
455 + },
456 + "engines": {
457 + "node": ">=20.0.0"
458 + }
459 + },
460 + "node_modules/@aws-sdk/middleware-sdk-s3": {
461 + "version": "3.972.40",
462 + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.40.tgz",
463 + "integrity": "sha512-vyFY4EsAGySqqd87Z7n4qcCYXJO3QArB8VIJzuupY5XuLHIp579HTZldIUGGABvAOzLptfPb9+lJBJcB+3/cvA==",
464 + "license": "Apache-2.0",
465 + "dependencies": {
466 + "@aws-sdk/core": "^3.974.11",
467 + "@aws-sdk/signature-v4-multi-region": "^3.996.27",
468 + "@aws-sdk/types": "^3.973.8",
469 + "@smithy/core": "^3.24.2",
470 + "@smithy/signature-v4": "^5.4.2",
471 + "@smithy/types": "^4.14.1",
472 + "tslib": "^2.6.2"
473 + },
474 + "engines": {
475 + "node": ">=20.0.0"
476 + }
477 + },
478 + "node_modules/@aws-sdk/middleware-ssec": {
479 + "version": "3.972.10",
480 + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz",
481 + "integrity": "sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==",
482 + "license": "Apache-2.0",
483 + "dependencies": {
484 + "@aws-sdk/types": "^3.973.8",
485 + "@smithy/types": "^4.14.1",
486 + "tslib": "^2.6.2"
487 + },
488 + "engines": {
489 + "node": ">=20.0.0"
490 + }
491 + },
492 + "node_modules/@aws-sdk/nested-clients": {
493 + "version": "3.997.9",
494 + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.9.tgz",
495 + "integrity": "sha512-jPR3rnmRI4hWYyzfmTGBr7NblMp8QYYeflHXba1H6+7CGrWVqWKQzaXFQ4qbExqPRsXN3T3L3JxFhr6aouXUGQ==",
496 + "license": "Apache-2.0",
497 + "dependencies": {
498 + "@aws-crypto/sha256-browser": "5.2.0",
499 + "@aws-crypto/sha256-js": "5.2.0",
500 + "@aws-sdk/core": "^3.974.11",
501 + "@aws-sdk/signature-v4-multi-region": "^3.996.27",
502 + "@aws-sdk/types": "^3.973.8",
503 + "@smithy/core": "^3.24.2",
504 + "@smithy/fetch-http-handler": "^5.4.2",
505 + "@smithy/node-http-handler": "^4.7.2",
506 + "@smithy/types": "^4.14.1",
507 + "tslib": "^2.6.2"
508 + },
509 + "engines": {
510 + "node": ">=20.0.0"
511 + }
512 + },
513 + "node_modules/@aws-sdk/signature-v4-multi-region": {
514 + "version": "3.996.27",
515 + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.27.tgz",
516 + "integrity": "sha512-0Phbz4t6HI3D3skxvG2uI+VWU034/nSIw1T8d+FPzzQG9EQTrw94o9mOKO2Gv3n3Oc8P7JD7RAUxkoneLWv5Eg==",
517 + "license": "Apache-2.0",
518 + "dependencies": {
519 + "@aws-sdk/types": "^3.973.8",
520 + "@smithy/core": "^3.24.2",
521 + "@smithy/signature-v4": "^5.4.2",
522 + "@smithy/types": "^4.14.1",
523 + "tslib": "^2.6.2"
524 + },
525 + "engines": {
526 + "node": ">=20.0.0"
527 + }
528 + },
529 + "node_modules/@aws-sdk/token-providers": {
530 + "version": "3.1048.0",
531 + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1048.0.tgz",
532 + "integrity": "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==",
533 + "license": "Apache-2.0",
534 + "dependencies": {
535 + "@aws-sdk/core": "^3.974.11",
536 + "@aws-sdk/nested-clients": "^3.997.9",
537 + "@aws-sdk/types": "^3.973.8",
538 + "@smithy/core": "^3.24.2",
539 + "@smithy/types": "^4.14.1",
540 + "tslib": "^2.6.2"
541 + },
542 + "engines": {
543 + "node": ">=20.0.0"
544 + }
545 + },
546 + "node_modules/@aws-sdk/types": {
547 + "version": "3.973.8",
548 + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz",
549 + "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==",
550 + "license": "Apache-2.0",
551 + "dependencies": {
552 + "@smithy/types": "^4.14.1",
553 + "tslib": "^2.6.2"
554 + },
555 + "engines": {
556 + "node": ">=20.0.0"
557 + }
558 + },
559 + "node_modules/@aws-sdk/util-locate-window": {
560 + "version": "3.965.5",
561 + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz",
562 + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==",
563 + "license": "Apache-2.0",
564 + "dependencies": {
565 + "tslib": "^2.6.2"
566 + },
567 + "engines": {
568 + "node": ">=20.0.0"
569 + }
570 + },
571 + "node_modules/@aws-sdk/xml-builder": {
572 + "version": "3.972.24",
573 + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz",
574 + "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==",
575 + "license": "Apache-2.0",
576 + "dependencies": {
577 + "@nodable/entities": "2.1.0",
578 + "@smithy/types": "^4.14.1",
579 + "fast-xml-parser": "5.7.3",
580 + "tslib": "^2.6.2"
581 + },
582 + "engines": {
583 + "node": ">=20.0.0"
584 + }
585 + },
586 + "node_modules/@aws/lambda-invoke-store": {
587 + "version": "0.2.4",
588 + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz",
589 + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==",
590 + "license": "Apache-2.0",
591 + "engines": {
592 + "node": ">=18.0.0"
593 + }
594 + },
63 595 "node_modules/@chevrotain/cst-dts-gen": {
64 596 "version": "10.5.0",
65 597 "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.5.0.tgz",
@@ -812,6 +1344,18 @@ "funding": {
812 1344 "url": "https://paulmillr.com/funding/"
813 1345 }
814 1346 },
1347 + "node_modules/@nodable/entities": {
1348 + "version": "2.1.0",
1349 + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz",
1350 + "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==",
1351 + "funding": [
1352 + {
1353 + "type": "github",
1354 + "url": "https://github.com/sponsors/nodable"
1355 + }
1356 + ],
1357 + "license": "MIT"
1358 + },
815 1359 "node_modules/@nodelib/fs.scandir": {
816 1360 "version": "2.1.5",
817 1361 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -1128,6 +1672,126 @@ "funding": {
1128 1672 "url": "https://github.com/sponsors/sindresorhus"
1129 1673 }
1130 1674 },
1675 + "node_modules/@smithy/core": {
1676 + "version": "3.24.3",
1677 + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz",
1678 + "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==",
1679 + "license": "Apache-2.0",
1680 + "dependencies": {
1681 + "@aws-crypto/crc32": "5.2.0",
1682 + "@smithy/types": "^4.14.2",
1683 + "tslib": "^2.6.2"
1684 + },
1685 + "engines": {
1686 + "node": ">=18.0.0"
1687 + }
1688 + },
1689 + "node_modules/@smithy/credential-provider-imds": {
1690 + "version": "4.3.3",
1691 + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.3.tgz",
1692 + "integrity": "sha512-I2Bti0DKFo2IJyN28ijCsx51BAumEYR4/1yZ1FXyBygy9MqbnMqCev4JPth/MbpRfBSRAX35hITSnAdJRo1u5w==",
1693 + "license": "Apache-2.0",
1694 + "dependencies": {
1695 + "@smithy/core": "^3.24.3",
1696 + "@smithy/types": "^4.14.2",
1697 + "tslib": "^2.6.2"
1698 + },
1699 + "engines": {
1700 + "node": ">=18.0.0"
1701 + }
1702 + },
1703 + "node_modules/@smithy/fetch-http-handler": {
1704 + "version": "5.4.3",
1705 + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.3.tgz",
1706 + "integrity": "sha512-F+DRf8IJazRJgYog2A/yJK7eYVc0rqTlRzO+5ZxjJd4WkZoKz0IJRncf7G6t1pdVT3kryJcwuTFhN1c5m6N47A==",
1707 + "license": "Apache-2.0",
1708 + "dependencies": {
1709 + "@smithy/core": "^3.24.3",
1710 + "@smithy/types": "^4.14.2",
1711 + "tslib": "^2.6.2"
1712 + },
1713 + "engines": {
1714 + "node": ">=18.0.0"
1715 + }
1716 + },
1717 + "node_modules/@smithy/is-array-buffer": {
1718 + "version": "2.2.0",
1719 + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
1720 + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
1721 + "license": "Apache-2.0",
1722 + "dependencies": {
1723 + "tslib": "^2.6.2"
1724 + },
1725 + "engines": {
1726 + "node": ">=14.0.0"
1727 + }
1728 + },
1729 + "node_modules/@smithy/node-http-handler": {
1730 + "version": "4.7.3",
1731 + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz",
1732 + "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==",
1733 + "license": "Apache-2.0",
1734 + "dependencies": {
1735 + "@smithy/core": "^3.24.3",
1736 + "@smithy/types": "^4.14.2",
1737 + "tslib": "^2.6.2"
1738 + },
1739 + "engines": {
1740 + "node": ">=18.0.0"
1741 + }
1742 + },
1743 + "node_modules/@smithy/signature-v4": {
1744 + "version": "5.4.3",
1745 + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz",
1746 + "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==",
1747 + "license": "Apache-2.0",
1748 + "dependencies": {
1749 + "@smithy/core": "^3.24.3",
1750 + "@smithy/types": "^4.14.2",
1751 + "tslib": "^2.6.2"
1752 + },
1753 + "engines": {
1754 + "node": ">=18.0.0"
1755 + }
1756 + },
1757 + "node_modules/@smithy/types": {
1758 + "version": "4.14.2",
1759 + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz",
1760 + "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==",
1761 + "license": "Apache-2.0",
1762 + "dependencies": {
1763 + "tslib": "^2.6.2"
1764 + },
1765 + "engines": {
1766 + "node": ">=18.0.0"
1767 + }
1768 + },
1769 + "node_modules/@smithy/util-buffer-from": {
1770 + "version": "2.2.0",
1771 + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
1772 + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
1773 + "license": "Apache-2.0",
1774 + "dependencies": {
1775 + "@smithy/is-array-buffer": "^2.2.0",
1776 + "tslib": "^2.6.2"
1777 + },
1778 + "engines": {
1779 + "node": ">=14.0.0"
1780 + }
1781 + },
1782 + "node_modules/@smithy/util-utf8": {
1783 + "version": "2.3.0",
1784 + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
1785 + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
1786 + "license": "Apache-2.0",
1787 + "dependencies": {
1788 + "@smithy/util-buffer-from": "^2.2.0",
1789 + "tslib": "^2.6.2"
1790 + },
1791 + "engines": {
1792 + "node": ">=14.0.0"
1793 + }
1794 + },
1131 1795 "node_modules/@stablelib/base64": {
1132 1796 "version": "1.0.1",
1133 1797 "resolved": "https://registry.npmjs.org/@stablelib/base64/-/base64-1.0.1.tgz",
@@ -1273,6 +1937,28 @@ "version": "2.1.0",
1273 1937 "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
1274 1938 "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
1275 1939 "license": "MIT"
1940 + },
1941 + "node_modules/@types/multer": {
1942 + "version": "2.1.0",
1943 + "resolved": "https://registry.npmjs.org/@types/multer/-/multer-2.1.0.tgz",
1944 + "integrity": "sha512-zYZb0+nJhOHtPpGDb3vqPjwpdeGlGC157VpkqNQL+UU2qwoacoQ7MpsAmUptI/0Oa127X32JzWDqQVEXp2RcIA==",
1945 + "dev": true,
1946 + "license": "MIT",
1947 + "dependencies": {
1948 + "@types/express": "*"
1949 + }
1950 + },
1951 + "node_modules/@types/multer-s3": {
1952 + "version": "3.0.3",
1953 + "resolved": "https://registry.npmjs.org/@types/multer-s3/-/multer-s3-3.0.3.tgz",
1954 + "integrity": "sha512-VgWygI9UwyS7loLithUUi0qAMIDWdNrERS2Sb06UuPYiLzKuIFn2NgL7satyl4v8sh/LLoU7DiPanvbQaRg9Yg==",
1955 + "dev": true,
1956 + "license": "MIT",
1957 + "dependencies": {
1958 + "@aws-sdk/client-s3": "^3.0.0",
1959 + "@types/multer": "*",
1960 + "@types/node": "*"
1961 + }
1276 1962 },
1277 1963 "node_modules/@types/node": {
1278 1964 "version": "25.5.2",
@@ -1488,6 +2174,12 @@ },
1488 2174 "funding": {
1489 2175 "url": "https://github.com/sponsors/jonschlinkert"
1490 2176 }
2177 + },
2178 + "node_modules/append-field": {
2179 + "version": "1.0.0",
2180 + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
2181 + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==",
2182 + "license": "MIT"
1491 2183 },
1492 2184 "node_modules/arg": {
1493 2185 "version": "4.1.3",
@@ -2811,6 +3503,12 @@ "type": "opencollective",
2811 3503 "url": "https://opencollective.com/express"
2812 3504 }
2813 3505 },
3506 + "node_modules/bowser": {
3507 + "version": "2.14.1",
3508 + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz",
3509 + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==",
3510 + "license": "MIT"
3511 + },
2814 3512 "node_modules/brace-expansion": {
2815 3513 "version": "2.0.2",
2816 3514 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
@@ -2864,6 +3562,12 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
2864 3562 "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
2865 3563 "license": "BSD-3-Clause"
2866 3564 },
3565 + "node_modules/buffer-from": {
3566 + "version": "1.1.2",
3567 + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
3568 + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
3569 + "license": "MIT"
3570 + },
2867 3571 "node_modules/bullmq": {
2868 3572 "version": "5.76.7",
2869 3573 "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.76.7.tgz",
@@ -2881,6 +3585,17 @@ "engines": {
2881 3585 "node": ">=12.22.0"
2882 3586 }
2883 3587 },
3588 + "node_modules/busboy": {
3589 + "version": "1.6.0",
3590 + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
3591 + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
3592 + "dependencies": {
3593 + "streamsearch": "^1.1.0"
3594 + },
3595 + "engines": {
3596 + "node": ">=10.16.0"
3597 + }
3598 + },
2884 3599 "node_modules/bytes": {
2885 3600 "version": "3.1.2",
2886 3601 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@@ -3273,6 +3988,21 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
3273 3988 "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
3274 3989 "dev": true,
3275 3990 "license": "MIT"
3991 + },
3992 + "node_modules/concat-stream": {
3993 + "version": "2.0.0",
3994 + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
3995 + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
3996 + "engines": [
3997 + "node >= 6.0"
3998 + ],
3999 + "license": "MIT",
4000 + "dependencies": {
4001 + "buffer-from": "^1.0.0",
4002 + "inherits": "^2.0.3",
4003 + "readable-stream": "^3.0.2",
4004 + "typedarray": "^0.0.6"
4005 + }
3276 4006 },
3277 4007 "node_modules/concordance": {
3278 4008 "version": "5.0.4",
@@ -4031,6 +4761,15 @@ "engines": {
4031 4761 "node": ">= 0.6"
4032 4762 }
4033 4763 },
4764 + "node_modules/events": {
4765 + "version": "3.3.0",
4766 + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
4767 + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
4768 + "license": "MIT",
4769 + "engines": {
4770 + "node": ">=0.8.x"
4771 + }
4772 + },
4034 4773 "node_modules/execa": {
4035 4774 "version": "9.6.1",
4036 4775 "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz",
@@ -4199,6 +4938,43 @@ "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz",
4199 4938 "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==",
4200 4939 "license": "Unlicense"
4201 4940 },
4941 + "node_modules/fast-xml-builder": {
4942 + "version": "1.2.0",
4943 + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz",
4944 + "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==",
4945 + "funding": [
4946 + {
4947 + "type": "github",
4948 + "url": "https://github.com/sponsors/NaturalIntelligence"
4949 + }
4950 + ],
4951 + "license": "MIT",
4952 + "dependencies": {
4953 + "path-expression-matcher": "^1.5.0",
4954 + "xml-naming": "^0.1.0"
4955 + }
4956 + },
4957 + "node_modules/fast-xml-parser": {
4958 + "version": "5.7.3",
4959 + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz",
4960 + "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==",
4961 + "funding": [
4962 + {
4963 + "type": "github",
4964 + "url": "https://github.com/sponsors/NaturalIntelligence"
4965 + }
4966 + ],
4967 + "license": "MIT",
4968 + "dependencies": {
4969 + "@nodable/entities": "^2.1.0",
4970 + "fast-xml-builder": "^1.1.7",
4971 + "path-expression-matcher": "^1.5.0",
4972 + "strnum": "^2.2.3"
4973 + },
4974 + "bin": {
4975 + "fxparser": "src/cli/cli.js"
4976 + }
4977 + },
4202 4978 "node_modules/fastq": {
4203 4979 "version": "1.19.1",
4204 4980 "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
@@ -4223,6 +4999,15 @@ "node": ">=18"
4223 4999 },
4224 5000 "funding": {
4225 5001 "url": "https://github.com/sponsors/sindresorhus"
5002 + }
5003 + },
5004 + "node_modules/file-type": {
5005 + "version": "3.9.0",
5006 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
5007 + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
5008 + "license": "MIT",
5009 + "engines": {
5010 + "node": ">=0.10.0"
4226 5011 }
4227 5012 },
4228 5013 "node_modules/file-uri-to-path": {
@@ -4726,6 +5511,12 @@ "license": "MIT",
4726 5511 "engines": {
4727 5512 "node": ">=16.9.0"
4728 5513 }
5514 + },
5515 + "node_modules/html-comment-regex": {
5516 + "version": "1.1.2",
5517 + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
5518 + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
5519 + "license": "MIT"
4729 5520 },
4730 5521 "node_modules/http-errors": {
4731 5522 "version": "2.0.1",
@@ -5661,6 +6452,86 @@ "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3",
5661 6452 "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3"
5662 6453 }
5663 6454 },
6455 + "node_modules/multer": {
6456 + "version": "2.1.1",
6457 + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz",
6458 + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==",
6459 + "license": "MIT",
6460 + "dependencies": {
6461 + "append-field": "^1.0.0",
6462 + "busboy": "^1.6.0",
6463 + "concat-stream": "^2.0.0",
6464 + "type-is": "^1.6.18"
6465 + },
6466 + "engines": {
6467 + "node": ">= 10.16.0"
6468 + },
6469 + "funding": {
6470 + "type": "opencollective",
6471 + "url": "https://opencollective.com/express"
6472 + }
6473 + },
6474 + "node_modules/multer-s3": {
6475 + "version": "3.0.1",
6476 + "resolved": "https://registry.npmjs.org/multer-s3/-/multer-s3-3.0.1.tgz",
6477 + "integrity": "sha512-BFwSO80a5EW4GJRBdUuSHblz2jhVSAze33ZbnGpcfEicoT0iRolx4kWR+AJV07THFRCQ78g+kelKFdjkCCaXeQ==",
6478 + "license": "MIT",
6479 + "dependencies": {
6480 + "@aws-sdk/lib-storage": "^3.46.0",
6481 + "file-type": "^3.3.0",
6482 + "html-comment-regex": "^1.1.2",
6483 + "run-parallel": "^1.1.6"
6484 + },
6485 + "engines": {
6486 + "node": ">= 12.0.0"
6487 + },
6488 + "peerDependencies": {
6489 + "@aws-sdk/client-s3": "^3.0.0"
6490 + }
6491 + },
6492 + "node_modules/multer/node_modules/media-typer": {
6493 + "version": "0.3.0",
6494 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
6495 + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
6496 + "license": "MIT",
6497 + "engines": {
6498 + "node": ">= 0.6"
6499 + }
6500 + },
6501 + "node_modules/multer/node_modules/mime-db": {
6502 + "version": "1.52.0",
6503 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
6504 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
6505 + "license": "MIT",
6506 + "engines": {
6507 + "node": ">= 0.6"
6508 + }
6509 + },
6510 + "node_modules/multer/node_modules/mime-types": {
6511 + "version": "2.1.35",
6512 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
6513 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
6514 + "license": "MIT",
6515 + "dependencies": {
6516 + "mime-db": "1.52.0"
6517 + },
6518 + "engines": {
6519 + "node": ">= 0.6"
6520 + }
6521 + },
6522 + "node_modules/multer/node_modules/type-is": {
6523 + "version": "1.6.18",
6524 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
6525 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
6526 + "license": "MIT",
6527 + "dependencies": {
6528 + "media-typer": "0.3.0",
6529 + "mime-types": "~2.1.24"
6530 + },
6531 + "engines": {
6532 + "node": ">= 0.6"
6533 + }
6534 + },
5664 6535 "node_modules/mylas": {
5665 6536 "version": "2.1.14",
5666 6537 "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.14.tgz",
@@ -6164,6 +7035,21 @@ "engines": {
6164 7035 "node": ">= 0.8"
6165 7036 }
6166 7037 },
7038 + "node_modules/path-expression-matcher": {
7039 + "version": "1.5.0",
7040 + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz",
7041 + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==",
7042 + "funding": [
7043 + {
7044 + "type": "github",
7045 + "url": "https://github.com/sponsors/NaturalIntelligence"
7046 + }
7047 + ],
7048 + "license": "MIT",
7049 + "engines": {
7050 + "node": ">=14.0.0"
7051 + }
7052 + },
6167 7053 "node_modules/path-is-absolute": {
6168 7054 "version": "1.0.1",
6169 7055 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -6637,7 +7523,6 @@ "node_modules/queue-microtask": {
6637 7523 "version": "1.2.3",
6638 7524 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
6639 7525 "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
6640 - "dev": true,
6641 7526 "funding": [
6642 7527 {
6643 7528 "type": "github",
@@ -6980,7 +7865,6 @@ "node_modules/run-parallel": {
6980 7865 "version": "1.2.0",
6981 7866 "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
6982 7867 "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
6983 - "dev": true,
6984 7868 "funding": [
6985 7869 {
6986 7870 "type": "github",
@@ -7408,6 +8292,24 @@ "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
7408 8292 "devOptional": true,
7409 8293 "license": "MIT"
7410 8294 },
8295 + "node_modules/stream-browserify": {
8296 + "version": "3.0.0",
8297 + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
8298 + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
8299 + "license": "MIT",
8300 + "dependencies": {
8301 + "inherits": "~2.0.4",
8302 + "readable-stream": "^3.5.0"
8303 + }
8304 + },
8305 + "node_modules/streamsearch": {
8306 + "version": "1.1.0",
8307 + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
8308 + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
8309 + "engines": {
8310 + "node": ">=10.0.0"
8311 + }
8312 + },
7411 8313 "node_modules/string_decoder": {
7412 8314 "version": "1.3.0",
7413 8315 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -7563,6 +8465,18 @@ "engines": {
7563 8465 "node": ">=0.10.0"
7564 8466 }
7565 8467 },
8468 + "node_modules/strnum": {
8469 + "version": "2.3.0",
8470 + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz",
8471 + "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==",
8472 + "funding": [
8473 + {
8474 + "type": "github",
8475 + "url": "https://github.com/sponsors/NaturalIntelligence"
8476 + }
8477 + ],
8478 + "license": "MIT"
8479 + },
7566 8480 "node_modules/superagent": {
7567 8481 "version": "10.2.3",
7568 8482 "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz",
@@ -8015,6 +8929,12 @@ "engines": {
8015 8929 "node": ">= 0.6"
8016 8930 }
8017 8931 },
8932 + "node_modules/typedarray": {
8933 + "version": "0.0.6",
8934 + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
8935 + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
8936 + "license": "MIT"
8937 + },
8018 8938 "node_modules/typescript": {
8019 8939 "version": "6.0.2",
8020 8940 "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz",
@@ -8296,6 +9216,21 @@ "signal-exit": "^4.0.1"
8296 9216 },
8297 9217 "engines": {
8298 9218 "node": "^18.17.0 || >=20.5.0"
9219 + }
9220 + },
9221 + "node_modules/xml-naming": {
9222 + "version": "0.1.0",
9223 + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz",
9224 + "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==",
9225 + "funding": [
9226 + {
9227 + "type": "github",
9228 + "url": "https://github.com/sponsors/NaturalIntelligence"
9229 + }
9230 + ],
9231 + "license": "MIT",
9232 + "engines": {
9233 + "node": ">=16.0.0"
8299 9234 }
8300 9235 },
8301 9236 "node_modules/xtend": {
api/package.json
@@ -19,6 +19,7 @@ "test:watch": "npm run test:setup && NODE_ENV=test npx ava --watch",
19 19 "dev": "prisma generate && prisma migrate deploy && npm run start"
20 20 },
21 21 "dependencies": {
22 + "@aws-sdk/client-s3": "^3.1048.0",
22 23 "@prisma/adapter-better-sqlite3": "^7.5.0",
23 24 "@prisma/adapter-pg": "^7.7.0",
24 25 "@prisma/client": "^7.5.0",
@@ -33,6 +34,8 @@ "date-fns": "^4.1.0",
33 34 "express": "^5.2.1",
34 35 "jsonwebtoken": "^9.0.3",
35 36 "morgan": "^1.10.1",
37 + "multer": "^2.1.1",
38 + "multer-s3": "^3.0.1",
36 39 "pg": "^8.20.0",
37 40 "resend": "^6.12.3",
38 41 "zod": "^4.4.3"
@@ -42,6 +45,8 @@ "@ava/typescript": "^6.0.0",
42 45 "@types/better-sqlite3": "^7.6.13",
43 46 "@types/express": "^5.0.6",
44 47 "@types/morgan": "^1.9.10",
48 + "@types/multer": "^2.1.0",
49 + "@types/multer-s3": "^3.0.3",
45 50 "@types/node": "^25.5.2",
46 51 "ava": "^6.4.1",
47 52 "cross-var": "^1.1.0",