diff --git a/package.json b/package.json index 768425a4c8..da03097383 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "bull@4.12.1": "patches/bull@4.12.1.patch", "pkce-challenge@3.0.0": "patches/pkce-challenge@3.0.0.patch", "pyodide@0.23.4": "patches/pyodide@0.23.4.patch", - "@types/express-serve-static-core@4.17.43": "patches/@types__express-serve-static-core@4.17.43.patch", + "@types/express-serve-static-core@5.0.6": "patches/@types__express-serve-static-core@5.0.6.patch", "@types/ws@8.5.4": "patches/@types__ws@8.5.4.patch", "@types/uuencode@0.0.3": "patches/@types__uuencode@0.0.3.patch", "vue-tsc@2.2.8": "patches/vue-tsc@2.2.8.patch", diff --git a/packages/cli/bin/n8n b/packages/cli/bin/n8n index c3355767af..7fd641b1bb 100755 --- a/packages/cli/bin/n8n +++ b/packages/cli/bin/n8n @@ -38,7 +38,6 @@ Please use a Node.js version that satisfies the following version range: ${suppo const { inspect } = require('util'); inspect.defaultOptions.customInspect = false; -require('express-async-errors'); require('source-map-support').install(); require('reflect-metadata'); diff --git a/packages/cli/package.json b/packages/cli/package.json index 3914afa3b5..f7e309bdad 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -57,9 +57,9 @@ "@redocly/cli": "^1.28.5", "@types/aws4": "^1.5.1", "@types/bcryptjs": "^2.4.2", - "@types/compression": "1.0.1", + "@types/compression": "^1.7.5", "@types/convict": "^6.1.1", - "@types/cookie-parser": "^1.4.7", + "@types/cookie-parser": "^1.4.8", "@types/express": "catalog:", "@types/flat": "^5.0.5", "@types/formidable": "^3.4.5", @@ -111,23 +111,22 @@ "change-case": "4.1.2", "class-transformer": "0.5.1", "class-validator": "0.14.0", - "compression": "1.7.4", + "compression": "1.8.0", "convict": "6.2.4", "cookie-parser": "1.4.7", "csrf": "3.1.0", "dotenv": "8.6.0", - "express": "4.21.1", - "express-async-errors": "3.1.1", - "express-handlebars": "7.1.2", + "express": "5.1.0", + "express-handlebars": "8.0.1", "express-openapi-validator": "5.4.7", - "express-prom-bundle": "6.6.0", - "express-rate-limit": "7.2.0", + "express-prom-bundle": "8.0.0", + "express-rate-limit": "7.5.0", "fast-glob": "catalog:", "flat": "5.0.2", "flatted": "catalog:", "formidable": "3.5.1", "handlebars": "4.7.8", - "helmet": "7.1.0", + "helmet": "8.1.0", "infisical-node": "1.3.0", "ioredis": "5.3.2", "isbot": "3.6.13", @@ -153,9 +152,9 @@ "picocolors": "catalog:", "pkce-challenge": "3.0.0", "posthog-node": "3.2.1", - "prom-client": "13.2.0", + "prom-client": "15.1.3", "psl": "1.9.0", - "raw-body": "2.5.1", + "raw-body": "3.0.0", "reflect-metadata": "catalog:", "replacestream": "4.0.3", "samlify": "2.9.0", diff --git a/packages/cli/src/abstract-server.ts b/packages/cli/src/abstract-server.ts index a9340b0a87..82599ce151 100644 --- a/packages/cli/src/abstract-server.ts +++ b/packages/cli/src/abstract-server.ts @@ -114,14 +114,17 @@ export abstract class AbstractServer { private async setupHealthCheck() { // main health check should not care about DB connections - this.app.get('/healthz', async (_req, res) => { + this.app.get('/healthz', (_req, res) => { res.send({ status: 'ok' }); }); - this.app.get('/healthz/readiness', async (_req, res) => { - return Db.connectionState.connected && Db.connectionState.migrated - ? res.status(200).send({ status: 'ok' }) - : res.status(503).send({ status: 'error' }); + this.app.get('/healthz/readiness', (_req, res) => { + const { connected, migrated } = Db.connectionState; + if (connected && migrated) { + res.status(200).send({ status: 'ok' }); + } else { + res.status(503).send({ status: 'error' }); + } }); const { connectionState } = Db; @@ -183,20 +186,20 @@ export abstract class AbstractServer { if (this.webhooksEnabled) { const liveWebhooksRequestHandler = createWebhookHandlerFor(Container.get(LiveWebhooks)); // Register a handler for live forms - this.app.all(`/${this.endpointForm}/:path(*)`, liveWebhooksRequestHandler); + this.app.all(`/${this.endpointForm}/*path`, liveWebhooksRequestHandler); // Register a handler for live webhooks - this.app.all(`/${this.endpointWebhook}/:path(*)`, liveWebhooksRequestHandler); + this.app.all(`/${this.endpointWebhook}/*path`, liveWebhooksRequestHandler); // Register a handler for waiting forms this.app.all( - `/${this.endpointFormWaiting}/:path/:suffix?`, + `/${this.endpointFormWaiting}/:path/{:suffix}`, createWebhookHandlerFor(Container.get(WaitingForms)), ); // Register a handler for waiting webhooks this.app.all( - `/${this.endpointWebhookWaiting}/:path/:suffix?`, + `/${this.endpointWebhookWaiting}/:path/{:suffix}`, createWebhookHandlerFor(Container.get(WaitingWebhooks)), ); } @@ -205,8 +208,8 @@ export abstract class AbstractServer { const testWebhooksRequestHandler = createWebhookHandlerFor(Container.get(TestWebhooks)); // Register a handler - this.app.all(`/${this.endpointFormTest}/:path(*)`, testWebhooksRequestHandler); - this.app.all(`/${this.endpointWebhookTest}/:path(*)`, testWebhooksRequestHandler); + this.app.all(`/${this.endpointFormTest}/*path`, testWebhooksRequestHandler); + this.app.all(`/${this.endpointWebhookTest}/*path`, testWebhooksRequestHandler); } // Block bots from scanning the application diff --git a/packages/cli/src/controllers/annotation-tags.controller.ee.ts b/packages/cli/src/controllers/annotation-tags.controller.ee.ts index ed6ff8c52a..fb57ed6ff1 100644 --- a/packages/cli/src/controllers/annotation-tags.controller.ee.ts +++ b/packages/cli/src/controllers/annotation-tags.controller.ee.ts @@ -22,7 +22,7 @@ export class AnnotationTagsController { return await this.annotationTagService.save(tag); } - @Patch('/:id(\\w+)') + @Patch('/:id') @GlobalScope('annotationTag:update') async updateTag(req: AnnotationTagsRequest.Update) { const newTag = this.annotationTagService.toEntity({ @@ -33,7 +33,7 @@ export class AnnotationTagsController { return await this.annotationTagService.save(newTag); } - @Delete('/:id(\\w+)') + @Delete('/:id') @GlobalScope('annotationTag:delete') async deleteTag(req: AnnotationTagsRequest.Delete) { const { id } = req.params; diff --git a/packages/cli/src/controllers/tags.controller.ts b/packages/cli/src/controllers/tags.controller.ts index 52432d2d4b..5f0d87812a 100644 --- a/packages/cli/src/controllers/tags.controller.ts +++ b/packages/cli/src/controllers/tags.controller.ts @@ -38,7 +38,7 @@ export class TagsController { return await this.tagService.save(tag, 'create'); } - @Patch('/:id(\\w+)') + @Patch('/:id') @GlobalScope('tag:update') async updateTag( _req: AuthenticatedRequest, @@ -51,7 +51,7 @@ export class TagsController { return await this.tagService.save(newTag, 'update'); } - @Delete('/:id(\\w+)') + @Delete('/:id') @GlobalScope('tag:delete') async deleteTag(_req: AuthenticatedRequest, _res: Response, @Param('id') tagId: string) { await this.tagService.delete(tagId); diff --git a/packages/cli/src/decorators/controller.registry.ts b/packages/cli/src/decorators/controller.registry.ts index a1295cdc0d..a09b8de051 100644 --- a/packages/cli/src/decorators/controller.registry.ts +++ b/packages/cli/src/decorators/controller.registry.ts @@ -116,7 +116,13 @@ export class ControllerRegistry { ...(route.accessScope ? [this.createScopedMiddleware(route.accessScope)] : []), ...controllerMiddlewares, ...route.middlewares, - route.usesTemplates ? handler : send(handler), + route.usesTemplates + ? async (req, res) => { + // When using templates, intentionally drop the return value, + // since template rendering writes directly to the response. + await handler(req, res); + } + : send(handler), ); } } @@ -133,11 +139,10 @@ export class ControllerRegistry { private createLicenseMiddleware(feature: BooleanLicenseFeature): RequestHandler { return (_req, res, next) => { if (!this.license.isFeatureEnabled(feature)) { - return res - .status(403) - .json({ status: 'error', message: 'Plan lacks license for this feature' }); + res.status(403).json({ status: 'error', message: 'Plan lacks license for this feature' }); + return; } - return next(); + next(); }; } @@ -152,13 +157,14 @@ export class ControllerRegistry { const { scope, globalOnly } = accessScope; if (!(await userHasScopes(req.user, [scope], globalOnly, req.params))) { - return res.status(403).json({ + res.status(403).json({ status: 'error', message: RESPONSE_ERROR_MESSAGES.MISSING_SCOPE, }); + return; } - return next(); + next(); }; } } diff --git a/packages/cli/src/environments.ee/variables/variables.controller.ee.ts b/packages/cli/src/environments.ee/variables/variables.controller.ee.ts index 460d5fa009..0ae5940d72 100644 --- a/packages/cli/src/environments.ee/variables/variables.controller.ee.ts +++ b/packages/cli/src/environments.ee/variables/variables.controller.ee.ts @@ -76,7 +76,7 @@ export class VariablesController { } } - @Delete('/:id(\\w+)') + @Delete('/:id') @GlobalScope('variable:delete') async deleteVariable(req: VariablesRequest.Delete) { const id = req.params.id; diff --git a/packages/cli/src/metrics/__tests__/prometheus-metrics.service.test.ts b/packages/cli/src/metrics/__tests__/prometheus-metrics.service.test.ts index d47cdb2737..d6f3d22ac2 100644 --- a/packages/cli/src/metrics/__tests__/prometheus-metrics.service.test.ts +++ b/packages/cli/src/metrics/__tests__/prometheus-metrics.service.test.ts @@ -23,6 +23,8 @@ jest.mock('prom-client'); jest.mock('express-prom-bundle', () => jest.fn(() => mockMiddleware)); describe('PrometheusMetricsService', () => { + promClient.Counter.prototype.inc = jest.fn(); + const globalConfig = mockInstance(GlobalConfig, { endpoints: { metrics: { diff --git a/packages/cli/src/metrics/prometheus-metrics.service.ts b/packages/cli/src/metrics/prometheus-metrics.service.ts index a646c00efd..4c609bacc3 100644 --- a/packages/cli/src/metrics/prometheus-metrics.service.ts +++ b/packages/cli/src/metrics/prometheus-metrics.service.ts @@ -153,11 +153,11 @@ export class PrometheusMetricsService { `/${this.globalConfig.endpoints.formWaiting}/`, `/${this.globalConfig.endpoints.formTest}/`, ], - (req, res, next) => { + async (req, res, next) => { activityGauge.reset(); activityGauge.set({ timestamp: new Date().toISOString() }, 1); - metricsMiddleware(req, res, next); + await metricsMiddleware(req, res, next); }, ); } diff --git a/packages/cli/src/middlewares/list-query/__tests__/list-query.test.ts b/packages/cli/src/middlewares/list-query/__tests__/list-query.test.ts index 3ced89ed49..1e83827536 100644 --- a/packages/cli/src/middlewares/list-query/__tests__/list-query.test.ts +++ b/packages/cli/src/middlewares/list-query/__tests__/list-query.test.ts @@ -81,36 +81,36 @@ describe('List query middleware', () => { expect(nextFn).toBeCalledTimes(1); }); - test('should parse valid select', () => { + test('should parse valid select', async () => { mockReq.query = { select: '["name", "id"]' }; - selectListQueryMiddleware(...args); + await selectListQueryMiddleware(...args); expect(mockReq.listQueryOptions).toEqual({ select: { name: true, id: true } }); expect(nextFn).toBeCalledTimes(1); }); - test('ignore invalid select', () => { + test('ignore invalid select', async () => { mockReq.query = { select: '["name", "foo"]' }; - selectListQueryMiddleware(...args); + await selectListQueryMiddleware(...args); expect(mockReq.listQueryOptions).toEqual({ select: { name: true } }); expect(nextFn).toBeCalledTimes(1); }); - test('throw on invalid JSON', () => { + test('throw on invalid JSON', async () => { mockReq.query = { select: '["name"' }; - selectListQueryMiddleware(...args); + await selectListQueryMiddleware(...args); expect(sendErrorResponse).toHaveBeenCalledTimes(1); }); - test('throw on non-string-array JSON for select', () => { + test('throw on non-string-array JSON for select', async () => { mockReq.query = { select: '"name"' }; - selectListQueryMiddleware(...args); + await selectListQueryMiddleware(...args); expect(sendErrorResponse).toHaveBeenCalledTimes(1); }); @@ -126,51 +126,51 @@ describe('List query middleware', () => { expect(nextFn).toBeCalledTimes(1); }); - test('should parse valid pagination', () => { + test('should parse valid pagination', async () => { mockReq.query = { skip: '1', take: '2' }; - paginationListQueryMiddleware(...args); + await paginationListQueryMiddleware(...args); expect(mockReq.listQueryOptions).toEqual({ skip: 1, take: 2 }); expect(nextFn).toBeCalledTimes(1); }); - test('should throw on skip without take', () => { + test('should throw on skip without take', async () => { mockReq.query = { skip: '1' }; - paginationListQueryMiddleware(...args); + await paginationListQueryMiddleware(...args); expect(mockReq.listQueryOptions).toBeUndefined(); expect(sendErrorResponse).toHaveBeenCalledTimes(1); }); - test('should default skip to 0', () => { + test('should default skip to 0', async () => { mockReq.query = { take: '2' }; - paginationListQueryMiddleware(...args); + await paginationListQueryMiddleware(...args); expect(mockReq.listQueryOptions).toEqual({ skip: 0, take: 2 }); expect(nextFn).toBeCalledTimes(1); }); - test('should cap take at 50', () => { + test('should cap take at 50', async () => { mockReq.query = { take: '51' }; - paginationListQueryMiddleware(...args); + await paginationListQueryMiddleware(...args); expect(mockReq.listQueryOptions).toEqual({ skip: 0, take: 50 }); expect(nextFn).toBeCalledTimes(1); }); - test('should throw on non-numeric-integer take', () => { + test('should throw on non-numeric-integer take', async () => { mockReq.query = { take: '3.2' }; - paginationListQueryMiddleware(...args); + await paginationListQueryMiddleware(...args); expect(sendErrorResponse).toHaveBeenCalledTimes(1); }); - test('should throw on non-numeric-integer skip', () => { + test('should throw on non-numeric-integer skip', async () => { mockReq.query = { take: '3', skip: '3.2' }; - paginationListQueryMiddleware(...args); + await paginationListQueryMiddleware(...args); expect(sendErrorResponse).toHaveBeenCalledTimes(1); }); @@ -224,7 +224,7 @@ describe('List query middleware', () => { sortBy: value, }; - sortByQueryMiddleware(...args); + await sortByQueryMiddleware(...args); expect(mockReq.listQueryOptions).toMatchObject( expect.objectContaining({ @@ -239,7 +239,7 @@ describe('List query middleware', () => { sortBy: value as ListQuery.Workflow.SortOrder, }; - sortByQueryMiddleware(...args); + await sortByQueryMiddleware(...args); expect(sendErrorResponse).toHaveBeenCalledTimes(1); }); @@ -247,7 +247,7 @@ describe('List query middleware', () => { test('should not pass sortBy to listQueryOptions if not provided', async () => { mockReq.query = {}; - sortByQueryMiddleware(...args); + await sortByQueryMiddleware(...args); expect(mockReq.listQueryOptions).toBeUndefined(); expect(nextFn).toBeCalledTimes(1); @@ -259,7 +259,7 @@ describe('List query middleware', () => { mockReq.query = { filter: '{ "name": "My Workflow" }', select: '["name", "id"]' }; await filterListQueryMiddleware(...args); - selectListQueryMiddleware(...args); + await selectListQueryMiddleware(...args); expect(mockReq.listQueryOptions).toEqual({ select: { name: true, id: true }, @@ -273,7 +273,7 @@ describe('List query middleware', () => { mockReq.query = { filter: '{ "name": "My Workflow" }', skip: '1', take: '2' }; await filterListQueryMiddleware(...args); - paginationListQueryMiddleware(...args); + await paginationListQueryMiddleware(...args); expect(mockReq.listQueryOptions).toEqual({ filter: { name: 'My Workflow' }, @@ -287,8 +287,8 @@ describe('List query middleware', () => { test('should combine select with pagination options', async () => { mockReq.query = { select: '["name", "id"]', skip: '1', take: '2' }; - selectListQueryMiddleware(...args); - paginationListQueryMiddleware(...args); + await selectListQueryMiddleware(...args); + await paginationListQueryMiddleware(...args); expect(mockReq.listQueryOptions).toEqual({ select: { name: true, id: true }, diff --git a/packages/cli/src/public-api/index.ts b/packages/cli/src/public-api/index.ts index 1696135990..77885fa8c9 100644 --- a/packages/cli/src/public-api/index.ts +++ b/packages/cli/src/public-api/index.ts @@ -95,7 +95,7 @@ async function createApiRouter( res: express.Response, _next: express.NextFunction, ) => { - return res.status(error.status || 400).json({ + res.status(error.status || 400).json({ message: error.message, }); }, diff --git a/packages/cli/src/response-helper.ts b/packages/cli/src/response-helper.ts index 74f274560e..a0e2d6c847 100644 --- a/packages/cli/src/response-helper.ts +++ b/packages/cli/src/response-helper.ts @@ -153,7 +153,7 @@ export function send( processFunction: (req: R, res: S) => Promise, raw = false, ) { - return async (req: R, res: S) => { + return async (req: R, res: S): Promise => { try { const data = await processFunction(req, res); diff --git a/packages/cli/src/scaling/worker-server.ts b/packages/cli/src/scaling/worker-server.ts index 07b9533626..111bfe5371 100644 --- a/packages/cli/src/scaling/worker-server.ts +++ b/packages/cli/src/scaling/worker-server.ts @@ -100,8 +100,12 @@ export class WorkerServer { const { health, overwrites, metrics } = this.endpointsConfig; if (health) { - this.app.get('/healthz', async (_, res) => res.send({ status: 'ok' })); - this.app.get('/healthz/readiness', async (_, res) => await this.readiness(_, res)); + this.app.get('/healthz', async (_, res) => { + res.send({ status: 'ok' }); + }); + this.app.get('/healthz/readiness', async (_, res) => { + await this.readiness(_, res); + }); } if (overwrites) { diff --git a/packages/cli/src/server.ts b/packages/cli/src/server.ts index e2d05f2a66..719ae8da3a 100644 --- a/packages/cli/src/server.ts +++ b/packages/cli/src/server.ts @@ -311,19 +311,25 @@ export class Server extends AbstractServer { const cacheOptions = inE2ETests || inDevelopment ? {} : { maxAge }; const { staticCacheDir } = Container.get(InstanceSettings); if (frontendService) { - const serveIcons: express.RequestHandler = async (req, res) => { - // eslint-disable-next-line prefer-const - let { scope, packageName } = req.params; - if (scope) packageName = `@${scope}/${packageName}`; - const filePath = this.loadNodesAndCredentials.resolveIcon(packageName, req.originalUrl); - if (filePath) { - try { - await fsAccess(filePath); - return res.sendFile(filePath, cacheOptions); - } catch {} - } - res.sendStatus(404); - }; + this.app.use( + [ + '/icons/{@:scope/}:packageName/*path/*file.svg', + '/icons/{@:scope/}:packageName/*path/*file.png', + ], + async (req, res) => { + // eslint-disable-next-line prefer-const + let { scope, packageName } = req.params; + if (scope) packageName = `@${scope}/${packageName}`; + const filePath = this.loadNodesAndCredentials.resolveIcon(packageName, req.originalUrl); + if (filePath) { + try { + await fsAccess(filePath); + return res.sendFile(filePath, { maxAge, dotfiles: 'allow' }); + } catch {} + } + res.sendStatus(404); + }, + ); const serveSchemas: express.RequestHandler = async (req, res) => { const { node, version, resource, operation } = req.params; @@ -342,10 +348,7 @@ export class Server extends AbstractServer { } res.sendStatus(404); }; - - this.app.use('/icons/@:scope/:packageName/*/*.(svg|png)', serveIcons); - this.app.use('/icons/:packageName/*/*.(svg|png)', serveIcons); - this.app.use('/schemas/:node/:version/:resource?/:operation?.json', serveSchemas); + this.app.use('/schemas/:node/:version/:resource/:operation.json', serveSchemas); const isTLSEnabled = this.globalConfig.protocol === 'https' && !!(this.sslKey && this.sslCert); diff --git a/packages/cli/src/task-runners/task-broker/task-broker-server.ts b/packages/cli/src/task-runners/task-broker/task-broker-server.ts index ef2f0a5b28..802c9fa98e 100644 --- a/packages/cli/src/task-runners/task-broker/task-broker-server.ts +++ b/packages/cli/src/task-runners/task-broker/task-broker-server.ts @@ -171,7 +171,9 @@ export class TaskBrokerServer { send(async (req) => await this.authController.createGrantToken(req)), ); - this.app.get('/healthz', (_, res) => res.send({ status: 'ok' })); + this.app.get('/healthz', (_, res) => { + res.send({ status: 'ok' }); + }); } private handleUpgradeRequest = ( diff --git a/packages/cli/src/webhooks/webhook-request-handler.ts b/packages/cli/src/webhooks/webhook-request-handler.ts index 8eb62358b1..30e420e11f 100644 --- a/packages/cli/src/webhooks/webhook-request-handler.ts +++ b/packages/cli/src/webhooks/webhook-request-handler.ts @@ -123,6 +123,10 @@ export function createWebhookHandlerFor(webhookManager: IWebhookManager) { const handler = new WebhookRequestHandler(webhookManager); return async (req: WebhookRequest | WebhookOptionsRequest, res: express.Response) => { + const { params } = req; + if (Array.isArray(params.path)) { + params.path = params.path.join('/'); + } await handler.handleRequest(req, res); }; } diff --git a/packages/cli/test/integration/middlewares/body-parser.test.ts b/packages/cli/test/integration/middlewares/body-parser.test.ts index a3381fe9e8..f2da035941 100644 --- a/packages/cli/test/integration/middlewares/body-parser.test.ts +++ b/packages/cli/test/integration/middlewares/body-parser.test.ts @@ -7,8 +7,8 @@ import { rawBodyReader, bodyParser } from '@/middlewares/body-parser'; describe('bodyParser', () => { const server = createServer((req: Request, res: Response) => { - rawBodyReader(req, res, async () => { - bodyParser(req, res, () => res.end(JSON.stringify(req.body))); + void rawBodyReader(req, res, async () => { + void bodyParser(req, res, () => res.end(JSON.stringify(req.body))); }); }); diff --git a/packages/cli/test/integration/variables.test.ts b/packages/cli/test/integration/variables.test.ts index cb47fb8a61..19626f4f5d 100644 --- a/packages/cli/test/integration/variables.test.ts +++ b/packages/cli/test/integration/variables.test.ts @@ -177,7 +177,7 @@ describe('POST /variables', () => { expect(byKey).toBeNull(); }); - test("POST /variables should not create a new variable and return it if the instance doesn't have a license", async () => { + test("should not create a new variable and return it if the instance doesn't have a license", async () => { license.disable('feat:variables'); const response = await authOwnerAgent.post('/variables').send(toCreate); expect(response.statusCode).toBe(403); diff --git a/patches/@types__express-serve-static-core@4.17.43.patch b/patches/@types__express-serve-static-core@5.0.6.patch similarity index 56% rename from patches/@types__express-serve-static-core@4.17.43.patch rename to patches/@types__express-serve-static-core@5.0.6.patch index 05882f0b97..33fb68546f 100644 --- a/patches/@types__express-serve-static-core@4.17.43.patch +++ b/patches/@types__express-serve-static-core@5.0.6.patch @@ -1,8 +1,8 @@ diff --git a/index.d.ts b/index.d.ts -index 5cc36f5760c806a76ee839bfb67c419c9cb48901..8ef0bf74f0f31741b564fe37f040144526e98eb5 100644 +index fbad2c77669b1effe9d1ca30f518eb5e0058f2e0..6dc02519a6a8dfe1c7dc7d4d600478ba841b172a 100644 --- a/index.d.ts +++ b/index.d.ts -@@ -646,7 +646,7 @@ export interface Request< +@@ -641,7 +641,7 @@ export interface Request< query: ReqQuery; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33ee139637..47a2823692 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ catalogs: specifier: ^1.1.3 version: 1.1.3 '@types/express': - specifier: ^4.17.21 - version: 4.17.21 + specifier: ^5.0.1 + version: 5.0.1 '@types/lodash': specifier: ^4.14.195 version: 4.14.195 @@ -149,9 +149,9 @@ overrides: snowflake-sdk>axios: 1.8.2 patchedDependencies: - '@types/express-serve-static-core@4.17.43': - hash: 15f7699a9bdd76b6931949ecb3eaa8b658f5a9f4a5ffcc5db00e84d440f1ebea - path: patches/@types__express-serve-static-core@4.17.43.patch + '@types/express-serve-static-core@5.0.6': + hash: d602248fcd302cf5a794d1e85a411633ba9635ea5d566d6f2e0429c7ae0fa3eb + path: patches/@types__express-serve-static-core@5.0.6.patch '@types/uuencode@0.0.3': hash: 083a73709a54db57b092d986b43d27ddda3cb8008f9510e98bc9e6da0e1cbb62 path: patches/@types__uuencode@0.0.3.patch @@ -944,8 +944,8 @@ importers: specifier: 0.14.0 version: 0.14.0 compression: - specifier: 1.7.4 - version: 1.7.4 + specifier: 1.8.0 + version: 1.8.0 convict: specifier: 6.2.4 version: 6.2.4 @@ -959,23 +959,20 @@ importers: specifier: 8.6.0 version: 8.6.0 express: - specifier: 4.21.1 - version: 4.21.1 - express-async-errors: - specifier: 3.1.1 - version: 3.1.1(express@4.21.1) + specifier: 5.1.0 + version: 5.1.0 express-handlebars: - specifier: 7.1.2 - version: 7.1.2 + specifier: 8.0.1 + version: 8.0.1 express-openapi-validator: specifier: 5.4.7 - version: 5.4.7(express@4.21.1) + version: 5.4.7(express@5.1.0) express-prom-bundle: - specifier: 6.6.0 - version: 6.6.0(prom-client@13.2.0) + specifier: 8.0.0 + version: 8.0.0(prom-client@15.1.3) express-rate-limit: - specifier: 7.2.0 - version: 7.2.0(express@4.21.1) + specifier: 7.5.0 + version: 7.5.0(express@5.1.0) fast-glob: specifier: 'catalog:' version: 3.2.12 @@ -992,8 +989,8 @@ importers: specifier: 4.7.8 version: 4.7.8 helmet: - specifier: 7.1.0 - version: 7.1.0 + specifier: 8.1.0 + version: 8.1.0 infisical-node: specifier: 1.3.0 version: 1.3.0 @@ -1070,14 +1067,14 @@ importers: specifier: 3.2.1 version: 3.2.1 prom-client: - specifier: 13.2.0 - version: 13.2.0 + specifier: 15.1.3 + version: 15.1.3 psl: specifier: 1.9.0 version: 1.9.0 raw-body: - specifier: 2.5.1 - version: 2.5.1 + specifier: 3.0.0 + version: 3.0.0 reflect-metadata: specifier: 'catalog:' version: 0.2.2 @@ -1107,7 +1104,7 @@ importers: version: 1.17.0 swagger-ui-express: specifier: 5.0.1 - version: 5.0.1(express@4.21.1) + version: 5.0.1(express@5.1.0) syslog-client: specifier: 1.1.1 version: 1.1.1 @@ -1149,17 +1146,17 @@ importers: specifier: ^2.4.2 version: 2.4.2 '@types/compression': - specifier: 1.0.1 - version: 1.0.1 + specifier: ^1.7.5 + version: 1.7.5 '@types/convict': specifier: ^6.1.1 version: 6.1.1 '@types/cookie-parser': - specifier: ^1.4.7 - version: 1.4.7 + specifier: ^1.4.8 + version: 1.4.8(@types/express@5.0.1) '@types/express': specifier: 'catalog:' - version: 4.17.21 + version: 5.0.1 '@types/flat': specifier: ^5.0.5 version: 5.0.5 @@ -1334,7 +1331,7 @@ importers: version: 2.0.0 '@types/express': specifier: 'catalog:' - version: 4.17.21 + version: 5.0.1 '@types/lodash': specifier: 'catalog:' version: 4.14.195 @@ -2192,7 +2189,7 @@ importers: version: 1.1.9 '@types/express': specifier: 'catalog:' - version: 4.17.21 + version: 5.0.1 '@types/gm': specifier: ^1.25.0 version: 1.25.0 @@ -2328,7 +2325,7 @@ importers: version: 1.0.1 '@types/express': specifier: 'catalog:' - version: 4.17.21 + version: 5.0.1 '@types/jmespath': specifier: ^0.15.0 version: 0.15.0 @@ -5898,8 +5895,8 @@ packages: '@types/cheerio@0.22.31': resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==} - '@types/compression@1.0.1': - resolution: {integrity: sha512-GuoIYzD70h+4JUqUabsm31FGqvpCYHGKcLtor7nQ/YvUyNX0o9SJZ9boFI5HjFfbOda5Oe/XOvNK6FES8Y/79w==} + '@types/compression@1.7.5': + resolution: {integrity: sha512-AAQvK5pxMpaT+nDvhHrsBhLSYG5yQdtkaJE1WYieSNY2mVFKAgmU4ks65rkZD5oqnGCFLyQpUr1CqI4DmUMyDg==} '@types/concat-stream@2.0.0': resolution: {integrity: sha512-t3YCerNM7NTVjLuICZo5gYAXYoDvpuuTceCcFQWcDQz26kxUR5uIWolxbIR5jRNIXpMqhOpW/b8imCR1LEmuJw==} @@ -5910,8 +5907,10 @@ packages: '@types/convict@6.1.1': resolution: {integrity: sha512-R+JLaTvhsD06p4jyjUDtbd5xMtZTRE3c0iI+lrFWZogSVEjgTWPYwvJPVf+t92E+yrlbXa4X4Eg9ro6gPdUt4w==} - '@types/cookie-parser@1.4.7': - resolution: {integrity: sha512-Fvuyi354Z+uayxzIGCwYTayFKocfV7TuDYZClCdIP9ckhvAu/ixDtCB6qx2TT0FKjPLf1f3P/J1rgf6lPs64mw==} + '@types/cookie-parser@1.4.8': + resolution: {integrity: sha512-l37JqFrOJ9yQfRQkljb41l0xVphc7kg5JTjjr+pLRZ0IyZ49V4BQ8vbF4Ut2C2e+WH4al3xD3ZwYwIUfnbT4NQ==} + peerDependencies: + '@types/express': '*' '@types/cookiejar@2.1.5': resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} @@ -5937,11 +5936,11 @@ packages: '@types/eventsource@1.1.9': resolution: {integrity: sha512-F3K4oyM12o8W9jxuJmW+1sc8kdw0Hj0t+26urwkcolPJTgkfppEfIdftdcXmUU2QPBIwcrYO6diqgIqgCDf1FA==} - '@types/express-serve-static-core@4.17.43': - resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} + '@types/express-serve-static-core@5.0.6': + resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/express@5.0.1': + resolution: {integrity: sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==} '@types/file-saver@2.0.5': resolution: {integrity: sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==} @@ -6620,8 +6619,8 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} acorn-globals@7.0.1: @@ -6812,9 +6811,6 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-hyper-unique@2.1.4: resolution: {integrity: sha512-RVsGx2YpFGhGpgdkK7A0VjFQecVUCowpkQerGCsyXVRXHxccAlPPTDt9ueF/X7Zq/6z6duZ49i9WzTCzcnQygQ==} @@ -7068,9 +7064,9 @@ packages: bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -7163,10 +7159,6 @@ packages: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} - bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -7186,10 +7178,18 @@ packages: resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} engines: {node: '>=6'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + call-me-maybe@1.0.1: resolution: {integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==} @@ -7499,8 +7499,8 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} - compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + compression@1.8.0: + resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} engines: {node: '>= 0.8.0'} concat-map@0.0.1: @@ -7547,8 +7547,8 @@ packages: constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} engines: {node: '>= 0.6'} content-type@1.0.5: @@ -7572,9 +7572,9 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} @@ -7950,10 +7950,6 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-libc@2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} @@ -8071,6 +8067,10 @@ packages: duck@0.1.12: resolution: {integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -8127,10 +8127,6 @@ packages: enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} @@ -8200,6 +8196,10 @@ packages: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} @@ -8214,6 +8214,10 @@ packages: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} @@ -8519,35 +8523,30 @@ packages: expr-eval@2.0.2: resolution: {integrity: sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==} - express-async-errors@3.1.1: - resolution: {integrity: sha512-h6aK1da4tpqWSbyCa3FxB/V6Ehd4EEB15zyQq9qe75OZBp0krinNKuH4rAY+S/U/2I36vdLAUFSjQJ+TFmODng==} - peerDependencies: - express: ^4.16.2 - - express-handlebars@7.1.2: - resolution: {integrity: sha512-ss9d3mBChOLTEtyfzXCsxlItUxpgS3i4cb/F70G6Q5ohQzmD12XB4x/Y9U6YboeeYBJZt7WQ5yUNu7ZSQ/EGyQ==} - engines: {node: '>=v16'} + express-handlebars@8.0.1: + resolution: {integrity: sha512-mdas0PTbgQnwSyAjcYM7OMaftM8nJ3Kqz6yAyK4iCFvMOGGvh6pv42IHwcE5PBpS6ffYeZRSsgAdYUMG4CSjhQ==} + engines: {node: '>=20'} express-openapi-validator@5.4.7: resolution: {integrity: sha512-hg1o3+vtsRDLsdBlKBp1Zgyk4WxMtdVwGJGruEj53UIcOiMDgny/diHJmg/MLwPC2OpxLpOCTRFidlVSNAsLPg==} peerDependencies: express: '*' - express-prom-bundle@6.6.0: - resolution: {integrity: sha512-tZh2P2p5a8/yxQ5VbRav011Poa4R0mHqdFwn9Swe/obXDe5F0jY9wtRAfNYnqk4LXY7akyvR/nrvAHxQPWUjsQ==} - engines: {node: '>=10'} + express-prom-bundle@8.0.0: + resolution: {integrity: sha512-UHdpaMks6Z/tvxQsNzhsE7nkdXb4/zEh/jwN0tfZSZOEF+aD0dlfl085EU4jveOq09v01c5sIUfjV4kJODZ2eQ==} + engines: {node: '>=18'} peerDependencies: - prom-client: '>=12.0.0' + prom-client: '>=15.0.0' - express-rate-limit@7.2.0: - resolution: {integrity: sha512-T7nul1t4TNyfZMJ7pKRKkdeVJWa2CqB8NA1P8BwYaoDI5QSBZARv5oMS43J7b7I5P+4asjVXjb7ONuwDKucahg==} + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} engines: {node: '>= 16'} peerDependencies: - express: 4 || 5 || ^5.0.0-beta.1 + express: ^4.11 || 5 || ^5.0.0-beta.1 - express@4.21.1: - resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} - engines: {node: '>= 0.10.0'} + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} exsolve@1.0.4: resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} @@ -8673,8 +8672,8 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} engines: {node: '>= 0.8'} find-package-json@1.2.0: @@ -8775,9 +8774,9 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} @@ -8864,6 +8863,10 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -8875,6 +8878,10 @@ packages: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} engines: {node: '>=8'} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -8987,8 +8994,9 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -9034,6 +9042,10 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} @@ -9062,9 +9074,9 @@ packages: heap@0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} - helmet@7.1.0: - resolution: {integrity: sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg==} - engines: {node: '>=16.0.0'} + helmet@8.1.0: + resolution: {integrity: sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==} + engines: {node: '>=18.0.0'} help-me@5.0.0: resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} @@ -9414,6 +9426,9 @@ packages: is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-property@1.0.2: resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} @@ -10320,6 +10335,10 @@ packages: engines: {node: '>= 12'} hasBin: true + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} @@ -10360,8 +10379,9 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -10382,14 +10402,17 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} @@ -10763,6 +10786,14 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -10967,6 +10998,10 @@ packages: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} @@ -11207,9 +11242,6 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} - path-to-regexp@0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} - path-to-regexp@8.2.0: resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} engines: {node: '>=16'} @@ -11546,9 +11578,9 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - prom-client@13.2.0: - resolution: {integrity: sha512-wGr5mlNNdRNzEhRYXgboUU2LxHWIojxscJKmtG3R8f4/KiWqyYgXTLHs0+Ted7tG3zFT7pgHJbtomzZ1L0ARaQ==} - engines: {node: '>=10'} + prom-client@15.1.3: + resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} + engines: {node: ^16 || ^18 || >=20} promise-ftp-common@1.1.5: resolution: {integrity: sha512-a84F/zM2Z0Ry/ht3nXfV6Ze7BISOQlWrct/YObrluJn8qy2LVeeQ+IJ7jD4bkmM0N2xfXYy5nurz4L1KEj+rJg==} @@ -11696,8 +11728,8 @@ packages: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} quansync@0.2.8: @@ -11727,12 +11759,8 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} engines: {node: '>= 0.8'} rc@1.2.8: @@ -12025,6 +12053,10 @@ packages: route-recognizer@0.3.4: resolution: {integrity: sha512-2+MhsfPhvauN1O8KaXpXAOfR/fwe8dnUXVM+xw7yt40lJRfPVQxV6yryZm0cgRvAj5fMF/mdRZbL2ptwbs5i2g==} + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + rrule@2.8.1: resolution: {integrity: sha512-hM3dHSBMeaJ0Ktp7W38BJZ7O1zOgaFEsn41PDk+yHoEtfLV+PoJt9E9xAlZiWgf/iqEqionN0ebHFZIDAp+iGw==} @@ -12119,9 +12151,9 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} @@ -12132,9 +12164,9 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -12208,6 +12240,18 @@ packages: resolution: {integrity: sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==} hasBin: true + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -12215,6 +12259,10 @@ packages: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -13021,6 +13069,10 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + type-of-is@3.5.1: resolution: {integrity: sha512-SOnx8xygcAh8lvDU2exnK2bomASfNjzB3Qz71s2tw9QnX8fkAo7aC+D0H7FV0HjRKj94CKV2Hi71kVkkO6nOxg==} engines: {node: '>=0.10.5'} @@ -13223,10 +13275,6 @@ packages: util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - uuencode@0.0.4: resolution: {integrity: sha512-yEEhCuCi5wRV7Z5ZVf9iV2gWMvUZqKJhAs1ecFdKJ0qzbyaVelmsE3QjYAamehfp9FKLiZbKldd+jklG3O0LfA==} @@ -18644,9 +18692,9 @@ snapshots: dependencies: '@types/node': 18.16.16 - '@types/compression@1.0.1': + '@types/compression@1.7.5': dependencies: - '@types/express': 4.17.21 + '@types/express': 5.0.1 '@types/concat-stream@2.0.0': dependencies: @@ -18660,9 +18708,9 @@ snapshots: dependencies: '@types/node': 18.16.16 - '@types/cookie-parser@1.4.7': + '@types/cookie-parser@1.4.8(@types/express@5.0.1)': dependencies: - '@types/express': 4.17.21 + '@types/express': 5.0.1 '@types/cookiejar@2.1.5': {} @@ -18685,18 +18733,17 @@ snapshots: '@types/eventsource@1.1.9': {} - '@types/express-serve-static-core@4.17.43(patch_hash=15f7699a9bdd76b6931949ecb3eaa8b658f5a9f4a5ffcc5db00e84d440f1ebea)': + '@types/express-serve-static-core@5.0.6(patch_hash=d602248fcd302cf5a794d1e85a411633ba9635ea5d566d6f2e0429c7ae0fa3eb)': dependencies: '@types/node': 18.16.16 '@types/qs': 6.9.15 '@types/range-parser': 1.2.4 '@types/send': 0.17.4 - '@types/express@4.17.21': + '@types/express@5.0.1': dependencies: '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.43(patch_hash=15f7699a9bdd76b6931949ecb3eaa8b658f5a9f4a5ffcc5db00e84d440f1ebea) - '@types/qs': 6.9.15 + '@types/express-serve-static-core': 5.0.6(patch_hash=d602248fcd302cf5a794d1e85a411633ba9635ea5d566d6f2e0429c7ae0fa3eb) '@types/serve-static': 1.15.0 '@types/file-saver@2.0.5': {} @@ -18851,7 +18898,7 @@ snapshots: '@types/multer@1.4.12': dependencies: - '@types/express': 4.17.21 + '@types/express': 5.0.1 '@types/mysql@2.15.26': dependencies: @@ -18999,7 +19046,7 @@ snapshots: '@types/swagger-ui-express@4.1.8': dependencies: - '@types/express': 4.17.21 + '@types/express': 5.0.1 '@types/serve-static': 1.15.0 '@types/syslog-client@1.1.2': @@ -19558,10 +19605,10 @@ snapshots: dependencies: event-target-shim: 5.0.1 - accepts@1.3.8: + accepts@2.0.0: dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 + mime-types: 3.0.1 + negotiator: 1.0.0 acorn-globals@7.0.1: dependencies: @@ -19752,8 +19799,6 @@ snapshots: call-bind: 1.0.7 is-array-buffer: 3.0.4 - array-flatten@1.1.1: {} - array-hyper-unique@2.1.4: dependencies: deep-eql: 4.0.0 @@ -20072,20 +20117,17 @@ snapshots: bn.js@5.2.1: {} - body-parser@1.20.3: + body-parser@2.2.0: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 + debug: 4.4.0(supports-color@8.1.1) http-errors: 2.0.0 - iconv-lite: 0.4.24 + iconv-lite: 0.6.3 on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 transitivePeerDependencies: - supports-color @@ -20189,8 +20231,6 @@ snapshots: dependencies: streamsearch: 1.1.0 - bytes@3.0.0: {} - bytes@3.1.2: {} cac@6.7.14: {} @@ -20226,6 +20266,11 @@ snapshots: cachedir@2.3.0: {} + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -20234,6 +20279,11 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.2 + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + call-me-maybe@1.0.1: {} callsites@3.1.0: {} @@ -20568,14 +20618,14 @@ snapshots: dependencies: mime-db: 1.52.0 - compression@1.7.4: + compression@1.8.0: dependencies: - accepts: 1.3.8 - bytes: 3.0.0 + bytes: 3.1.2 compressible: 2.0.18 debug: 2.6.9 + negotiator: 0.6.4 on-headers: 1.0.2 - safe-buffer: 5.1.2 + safe-buffer: 5.2.1 vary: 1.1.2 transitivePeerDependencies: - supports-color @@ -20637,7 +20687,7 @@ snapshots: '@babel/parser': 7.26.10 '@babel/types': 7.26.10 - content-disposition@0.5.4: + content-disposition@1.0.0: dependencies: safe-buffer: 5.2.1 @@ -20659,7 +20709,7 @@ snapshots: cookie-signature@1.0.6: {} - cookie@0.7.1: {} + cookie-signature@1.2.2: {} cookie@0.7.2: {} @@ -21067,8 +21117,6 @@ snapshots: dequal@2.0.3: {} - destroy@1.2.0: {} - detect-libc@2.0.1: {} detect-libc@2.0.3: {} @@ -21176,6 +21224,12 @@ snapshots: dependencies: underscore: 1.13.6 + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + duplexer@0.1.2: {} duplexify@4.1.2: @@ -21249,8 +21303,6 @@ snapshots: enabled@2.0.0: {} - encodeurl@1.0.2: {} - encodeurl@2.0.0: {} encoding-japanese@2.0.0: {} @@ -21413,6 +21465,8 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} + es-errors@1.3.0: {} es-get-iterator@1.1.3: @@ -21433,6 +21487,10 @@ snapshots: dependencies: es-errors: 1.3.0 + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 @@ -21846,17 +21904,13 @@ snapshots: expr-eval@2.0.2: {} - express-async-errors@3.1.1(express@4.21.1): + express-handlebars@8.0.1: dependencies: - express: 4.21.1 - - express-handlebars@7.1.2: - dependencies: - glob: 10.4.5 + glob: 11.0.1 graceful-fs: 4.2.11 handlebars: 4.7.8 - express-openapi-validator@5.4.7(express@4.21.1): + express-openapi-validator@5.4.7(express@5.1.0): dependencies: '@apidevtools/json-schema-ref-parser': 11.9.3 '@types/multer': 1.4.12 @@ -21864,7 +21918,7 @@ snapshots: ajv-draft-04: 1.0.0(ajv@8.17.1) ajv-formats: 2.1.1(ajv@8.17.1) content-type: 1.0.5 - express: 4.21.1 + express: 5.1.0 json-schema-traverse: 1.0.0 lodash.clonedeep: 4.5.0 lodash.get: 4.4.2 @@ -21873,48 +21927,45 @@ snapshots: ono: 7.1.3 path-to-regexp: 8.2.0 - express-prom-bundle@6.6.0(prom-client@13.2.0): + express-prom-bundle@8.0.0(prom-client@15.1.3): dependencies: + '@types/express': 5.0.1 on-finished: 2.4.1 - prom-client: 13.2.0 + prom-client: 15.1.3 url-value-parser: 2.2.0 - express-rate-limit@7.2.0(express@4.21.1): + express-rate-limit@7.5.0(express@5.1.0): dependencies: - express: 4.21.1 + express: 5.1.0 - express@4.21.1: + express@5.1.0: dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.0(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 + finalhandler: 2.1.0 + fresh: 2.0.0 http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 on-finished: 2.4.1 + once: 1.4.0 parseurl: 1.3.3 - path-to-regexp: 0.1.10 proxy-addr: 2.0.7 - qs: 6.13.0 + qs: 6.14.0 range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 + type-is: 2.0.1 vary: 1.1.2 transitivePeerDependencies: - supports-color @@ -22042,15 +22093,14 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: + finalhandler@2.1.0: dependencies: - debug: 2.6.9 + debug: 4.4.0(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 statuses: 2.0.1 - unpipe: 1.0.0 transitivePeerDependencies: - supports-color @@ -22159,7 +22209,7 @@ snapshots: fraction.js@4.3.7: {} - fresh@0.5.2: {} + fresh@2.0.0: {} from@0.1.7: {} @@ -22273,12 +22323,30 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + get-package-type@0.1.0: {} get-port-please@3.1.2: {} get-port@5.1.1: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@5.2.0: dependencies: pump: 3.0.0 @@ -22448,8 +22516,7 @@ snapshots: dependencies: get-intrinsic: 1.2.4 - graceful-fs@4.2.10: - optional: true + gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -22509,6 +22576,8 @@ snapshots: has-symbols@1.0.3: {} + has-symbols@1.1.0: {} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 @@ -22535,7 +22604,7 @@ snapshots: heap@0.2.7: {} - helmet@7.1.0: {} + helmet@8.1.0: {} help-me@5.0.0: {} @@ -22940,6 +23009,8 @@ snapshots: is-promise@2.2.2: {} + is-promise@4.0.0: {} + is-property@1.0.2: {} is-regex@1.1.4: @@ -24095,6 +24166,8 @@ snapshots: marked@4.3.0: {} + math-intrinsics@1.1.0: {} + md5@2.3.0: dependencies: charenc: 0.0.2 @@ -24125,7 +24198,7 @@ snapshots: meow@13.2.0: {} - merge-descriptors@1.0.3: {} + merge-descriptors@2.0.0: {} merge-stream@2.0.0: {} @@ -24140,11 +24213,15 @@ snapshots: mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - mime@1.6.0: {} + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 mime@2.6.0: {} @@ -24724,7 +24801,12 @@ snapshots: natural-compare@1.4.0: {} - negotiator@0.6.3: {} + negotiator@0.6.3: + optional: true + + negotiator@0.6.4: {} + + negotiator@1.0.0: {} neo-async@2.6.2: {} @@ -24786,7 +24868,7 @@ snapshots: dependencies: env-paths: 2.2.1 glob: 7.2.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 make-fetch-happen: 9.1.0 nopt: 5.0.0 npmlog: 6.0.2 @@ -24953,6 +25035,8 @@ snapshots: object-inspect@1.13.2: {} + object-inspect@1.13.4: {} + object-is@1.1.5: dependencies: call-bind: 1.0.7 @@ -25222,8 +25306,6 @@ snapshots: lru-cache: 11.1.0 minipass: 7.1.2 - path-to-regexp@0.1.10: {} - path-to-regexp@8.2.0: {} path-type@4.0.0: {} @@ -25526,8 +25608,9 @@ snapshots: process@0.11.10: {} - prom-client@13.2.0: + prom-client@15.1.3: dependencies: + '@opentelemetry/api': 1.9.0 tdigest: 0.1.2 promise-ftp-common@1.1.5: {} @@ -25726,9 +25809,9 @@ snapshots: dependencies: side-channel: 1.0.4 - qs@6.13.0: + qs@6.14.0: dependencies: - side-channel: 1.0.6 + side-channel: 1.1.0 quansync@0.2.8: {} @@ -25750,18 +25833,11 @@ snapshots: range-parser@1.2.1: {} - raw-body@2.5.1: + raw-body@3.0.0: dependencies: bytes: 3.1.2 http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 + iconv-lite: 0.6.3 unpipe: 1.0.0 rc@1.2.8: @@ -26141,6 +26217,16 @@ snapshots: route-recognizer@0.3.4: {} + router@2.2.0: + dependencies: + debug: 4.4.0(supports-color@8.1.1) + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + rrule@2.8.1: dependencies: tslib: 2.6.2 @@ -26248,17 +26334,15 @@ snapshots: dependencies: lru-cache: 6.0.0 - send@0.19.0: + send@1.2.0: dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 + debug: 4.4.0(supports-color@8.1.1) + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - fresh: 0.5.2 + fresh: 2.0.0 http-errors: 2.0.0 - mime: 1.6.0 + mime-types: 3.0.1 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 @@ -26278,12 +26362,12 @@ snapshots: dependencies: randombytes: 2.1.0 - serve-static@1.16.2: + serve-static@2.2.0: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.0 + send: 1.2.0 transitivePeerDependencies: - supports-color @@ -26391,6 +26475,26 @@ snapshots: dependencies: commander: 9.4.1 + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + side-channel@1.0.4: dependencies: call-bind: 1.0.7 @@ -26404,6 +26508,14 @@ snapshots: get-intrinsic: 1.2.4 object-inspect: 1.13.1 + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} signal-exit@3.0.7: {} @@ -26876,9 +26988,9 @@ snapshots: swagger-ui-dist@5.11.0: {} - swagger-ui-express@5.0.1(express@4.21.1): + swagger-ui-express@5.0.1(express@5.1.0): dependencies: - express: 4.21.1 + express: 5.1.0 swagger-ui-dist: 5.11.0 swagger2openapi@7.0.8(encoding@0.1.13): @@ -27333,6 +27445,12 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + type-of-is@3.5.1: {} typed-array-buffer@1.0.2: @@ -27537,8 +27655,6 @@ snapshots: is-typed-array: 1.1.13 which-typed-array: 1.1.15 - utils-merge@1.0.1: {} - uuencode@0.0.4: {} uuid@10.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0fdd5b72e7..e415a13358 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -8,7 +8,7 @@ packages: catalog: '@sentry/node': 8.52.1 '@types/basic-auth': ^1.1.3 - '@types/express': ^4.17.21 + '@types/express': ^5.0.1 '@types/lodash': ^4.14.195 '@types/uuid': ^10.0.0 '@types/xml2js': ^0.4.14